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"
>
<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"
:title="member.member.admitted ? 'Remove member' : 'Admit member'"
>
@ -105,6 +105,7 @@ import { logConsoleAndDb, retrieveSettingsForActiveAccount, db } from "@/db/inde
import {
errorStringForLog,
getHeaders,
register,
serverMessageForUser,
} from "@/libs/endorserServer";
import { decryptMessage } from "@/libs/crypto";
@ -114,6 +115,7 @@ interface Member {
admitted: boolean;
content: string;
memberId: number;
registered: boolean;
}
interface DecryptedMember {
@ -144,16 +146,51 @@ export default class MembersList extends Vue {
apiServer = "";
contacts: Array<Contact> = [];
async toggleAdmission(member: Member) {
async toggleAdmission(member: DecryptedMember) {
try {
const headers = await getHeaders(this.activeDid);
await this.axios.put(
`${this.apiServer}/api/partner/groupOnboardMember/${member.memberId}`,
{ admitted: !member.admitted },
`${this.apiServer}/api/partner/groupOnboardMember/${member.member.memberId}`,
{ admitted: !member.member.admitted },
{ headers }
);
// 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) {
logConsoleAndDb("Error toggling admission: " + errorStringForLog(error), true);
this.$emit("error", serverMessageForUser(error) || "Failed to update member admission status.");
@ -239,7 +276,7 @@ export default class MembersList extends Vue {
group: "alert",
type: "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,
);

Loading…
Cancel
Save