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"
|
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,
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user