forked from trent_larson/crowd-funder-for-time-pwa
now add registration when the organizer admits them
This commit is contained in:
@@ -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,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user