Browse Source

now add registration when the organizer admits them

master
Trent Larson 4 days ago
parent
commit
dffecae565
  1. 49
      src/components/MembersList.vue

49
src/components/MembersList.vue

@ -34,7 +34,7 @@
class="flex items-center" class="flex items-center"
> >
<button <button
@click="toggleAdmission(member.member)" @click="toggleAdmission(member)"
class="ml-2 w-6 h-6 flex items-center justify-center rounded-full bg-blue-100 text-blue-600 hover:bg-blue-200 hover:text-blue-800 transition-colors" class="ml-2 w-6 h-6 flex items-center justify-center rounded-full bg-blue-100 text-blue-600 hover:bg-blue-200 hover:text-blue-800 transition-colors"
:title="member.member.admitted ? 'Remove member' : 'Admit member'" :title="member.member.admitted ? 'Remove member' : 'Admit member'"
> >
@ -105,6 +105,7 @@ import { logConsoleAndDb, retrieveSettingsForActiveAccount, db } from "@/db/inde
import { import {
errorStringForLog, errorStringForLog,
getHeaders, getHeaders,
register,
serverMessageForUser, serverMessageForUser,
} from "@/libs/endorserServer"; } from "@/libs/endorserServer";
import { decryptMessage } from "@/libs/crypto"; import { decryptMessage } from "@/libs/crypto";
@ -114,6 +115,7 @@ interface Member {
admitted: boolean; admitted: boolean;
content: string; content: string;
memberId: number; memberId: number;
registered: boolean;
} }
interface DecryptedMember { interface DecryptedMember {
@ -144,16 +146,51 @@ export default class MembersList extends Vue {
apiServer = ""; apiServer = "";
contacts: Array<Contact> = []; contacts: Array<Contact> = [];
async toggleAdmission(member: Member) { async toggleAdmission(member: DecryptedMember) {
try { try {
const headers = await getHeaders(this.activeDid); const headers = await getHeaders(this.activeDid);
await this.axios.put( await this.axios.put(
`${this.apiServer}/api/partner/groupOnboardMember/${member.memberId}`, `${this.apiServer}/api/partner/groupOnboardMember/${member.member.memberId}`,
{ admitted: !member.admitted }, { admitted: !member.member.admitted },
{ headers } { headers }
); );
// Update local state // Update local state
member.admitted = !member.admitted; member.member.admitted = !member.member.admitted;
// if admitted, now register that user if they are not registered
if (member.member.admitted && !member.member.registered) {
const contact = {
did: member.did,
name: member.name,
};
const result = await register(this.activeDid, this.apiServer, this.axios, contact);
if (result.success) {
member.member.registered = true;
await db.contacts.update(member.did, { registered: true });
this.$notify(
{
group: "alert",
type: "success",
title: "Registered",
text: "Besides being admitted, they were also registered.",
},
3000,
);
} else {
const additionalInfo = result.error || "";
this.$notify(
{
group: "alert",
type: "danger",
title: "Registration failed",
text:
"They were admitted, but registration failed. You can try again, or register from your contacts screen. " +
additionalInfo,
},
10000,
);
}
}
} catch (error) { } catch (error) {
logConsoleAndDb("Error toggling admission: " + errorStringForLog(error), true); logConsoleAndDb("Error toggling admission: " + errorStringForLog(error), true);
this.$emit("error", serverMessageForUser(error) || "Failed to update member admission status."); this.$emit("error", serverMessageForUser(error) || "Failed to update member admission status.");
@ -239,7 +276,7 @@ export default class MembersList extends Vue {
group: "alert", group: "alert",
type: "info", type: "info",
title: "Admission info", title: "Admission info",
text: "This is to admit people to the meeting. A '+' symbol means they are not yet admitted and you can admit them. A '-' means you can remove them.", text: "This is to register people and admit them to the meeting. A '+' symbol means they are not yet admitted and you can register and admit them. A '-' means you can remove them, but they will stay registered.",
}, },
10000, 10000,
); );

Loading…
Cancel
Save