fix linting (and change a little wording in onboarding page)

This commit is contained in:
2025-02-03 16:36:13 -07:00
parent 5cb2ac339d
commit 6a070a1715
11 changed files with 442 additions and 290 deletions

View File

@@ -34,7 +34,9 @@
<!-- Meeting List -->
<div v-else class="space-y-4">
<div v-for="meeting in meetings" :key="meeting.groupId"
<div
v-for="meeting in meetings"
:key="meeting.groupId"
class="p-4 bg-white rounded-lg shadow hover:shadow-md transition-shadow cursor-pointer"
@click="promptPassword(meeting)"
>
@@ -47,7 +49,10 @@
</div>
<!-- Password Dialog -->
<div v-if="showPasswordDialog" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4">
<div
v-if="showPasswordDialog"
class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4"
>
<div class="bg-white rounded-lg p-6 max-w-sm w-full">
<h3 class="text-lg font-medium mb-4">Enter Meeting Password</h3>
<input
@@ -78,13 +83,19 @@
</template>
<script lang="ts">
import { Component, Vue } from 'vue-facing-decorator';
import QuickNav from '@/components/QuickNav.vue';
import TopMessage from '@/components/TopMessage.vue';
import { logConsoleAndDb, retrieveSettingsForActiveAccount } from '@/db/index';
import { errorStringForLog, getHeaders, serverMessageForUser } from '@/libs/endorserServer';
import { encryptMessage } from '@/libs/crypto';
import { nextTick } from 'vue';
import { Component, Vue } from "vue-facing-decorator";
import { nextTick } from "vue";
import { Router } from "vue-router";
import QuickNav from "@/components/QuickNav.vue";
import TopMessage from "@/components/TopMessage.vue";
import { logConsoleAndDb, retrieveSettingsForActiveAccount } from "@/db/index";
import {
errorStringForLog,
getHeaders,
serverMessageForUser,
} from "@/libs/endorserServer";
import { encryptMessage } from "@/libs/crypto";
interface Meeting {
name: string;
@@ -98,23 +109,26 @@ interface Meeting {
},
})
export default class OnboardMeetingListView extends Vue {
$notify!: (notification: { group: string; type: string; title: string; text: string }, timeout?: number) => void;
$notify!: (
notification: { group: string; type: string; title: string; text: string },
timeout?: number,
) => void;
activeDid = '';
apiServer = '';
activeDid = "";
apiServer = "";
attendingMeeting: Meeting | null = null;
firstName = '';
firstName = "";
isLoading = false;
meetings: Meeting[] = [];
password = '';
password = "";
selectedMeeting: Meeting | null = null;
showPasswordDialog = false;
async created() {
const settings = await retrieveSettingsForActiveAccount();
this.activeDid = settings.activeDid || '';
this.apiServer = settings.apiServer || '';
this.firstName = settings.firstName || '';
this.activeDid = settings.activeDid || "";
this.apiServer = settings.apiServer || "";
this.firstName = settings.firstName || "";
await this.fetchMeetings();
}
@@ -124,8 +138,8 @@ export default class OnboardMeetingListView extends Vue {
// get the meeting that the user is attending
const headers = await getHeaders(this.activeDid);
const response = await this.axios.get(
this.apiServer + '/api/partner/groupOnboardMember',
{ headers }
this.apiServer + "/api/partner/groupOnboardMember",
{ headers },
);
if (response.data?.data) {
@@ -134,8 +148,8 @@ export default class OnboardMeetingListView extends Vue {
// retrieve the meeting details
const headers2 = await getHeaders(this.activeDid);
const response2 = await this.axios.get(
this.apiServer + '/api/partner/groupOnboard/' + attendingMeetingId,
{ headers: headers2 }
this.apiServer + "/api/partner/groupOnboard/" + attendingMeetingId,
{ headers: headers2 },
);
if (response2.data?.data) {
@@ -143,29 +157,35 @@ export default class OnboardMeetingListView extends Vue {
return;
} else {
// this should never happen
logConsoleAndDb('Error fetching meeting for user after saying they are in one.', true);
logConsoleAndDb(
"Error fetching meeting for user after saying they are in one.",
true,
);
}
}
const headers2 = await getHeaders(this.activeDid);
const response2 = await this.axios.get(
this.apiServer + '/api/partner/groupsOnboarding',
{ headers: headers2 }
this.apiServer + "/api/partner/groupsOnboarding",
{ headers: headers2 },
);
if (response2.data?.data) {
this.meetings = response2.data.data;
}
} catch (error) {
logConsoleAndDb('Error fetching meetings: ' + errorStringForLog(error), true);
logConsoleAndDb(
"Error fetching meetings: " + errorStringForLog(error),
true,
);
this.$notify(
{
group: 'alert',
type: 'danger',
title: 'Error',
text: serverMessageForUser(error) || 'Failed to fetch meetings.',
group: "alert",
type: "danger",
title: "Error",
text: serverMessageForUser(error) || "Failed to fetch meetings.",
},
5000
5000,
);
} finally {
this.isLoading = false;
@@ -173,7 +193,7 @@ export default class OnboardMeetingListView extends Vue {
}
promptPassword(meeting: Meeting) {
this.password = '';
this.password = "";
this.selectedMeeting = meeting;
this.showPasswordDialog = true;
nextTick(() => {
@@ -185,7 +205,7 @@ export default class OnboardMeetingListView extends Vue {
}
cancelPasswordDialog() {
this.password = '';
this.password = "";
this.selectedMeeting = null;
this.showPasswordDialog = false;
}
@@ -193,7 +213,10 @@ export default class OnboardMeetingListView extends Vue {
async submitPassword() {
if (!this.selectedMeeting) {
// this should never happen
logConsoleAndDb('No meeting selected when prompting for password, which should never happen.', true);
logConsoleAndDb(
"No meeting selected when prompting for password, which should never happen.",
true,
);
return;
}
@@ -201,51 +224,58 @@ export default class OnboardMeetingListView extends Vue {
// Create member data object
const memberData = {
name: this.firstName,
did: this.activeDid
did: this.activeDid,
};
const memberDataString = JSON.stringify(memberData);
const encryptedMemberData = await encryptMessage(memberDataString, this.password);
const encryptedMemberData = await encryptMessage(
memberDataString,
this.password,
);
// Get headers for authentication
const headers = await getHeaders(this.activeDid);
// Encrypt the member data
const postResult = await this.axios.post(
this.apiServer + '/api/partner/groupOnboardMember',
this.apiServer + "/api/partner/groupOnboardMember",
{
groupId: this.selectedMeeting.groupId,
content: encryptedMemberData
content: encryptedMemberData,
},
{ headers }
{ headers },
);
if (postResult.data && postResult.data.success) {
// Navigate to members view with password and groupId
this.$router.push({
name: 'onboard-meeting-members',
params: {
groupId: this.selectedMeeting.groupId.toString()
(this.$router as Router).push({
name: "onboard-meeting-members",
params: {
groupId: this.selectedMeeting.groupId.toString(),
},
query: {
password: this.password,
memberId: postResult.data.memberId
}
memberId: postResult.data.memberId,
},
});
this.cancelPasswordDialog();
} else {
throw { response: postResult };
}
} catch (error) {
logConsoleAndDb('Error joining meeting: ' + errorStringForLog(error), true);
logConsoleAndDb(
"Error joining meeting: " + errorStringForLog(error),
true,
);
this.$notify(
{
group: 'alert',
type: 'danger',
title: 'Error',
text: serverMessageForUser(error) || 'Failed to join meeting.',
group: "alert",
type: "danger",
title: "Error",
text:
serverMessageForUser(error) || "You failed to join the meeting.",
},
5000
5000,
);
}
}
@@ -254,8 +284,8 @@ export default class OnboardMeetingListView extends Vue {
try {
const headers = await getHeaders(this.activeDid);
await this.axios.delete(
this.apiServer + '/api/partner/groupOnboardMember',
{ headers }
this.apiServer + "/api/partner/groupOnboardMember",
{ headers },
);
this.attendingMeeting = null;
@@ -263,25 +293,29 @@ export default class OnboardMeetingListView extends Vue {
this.$notify(
{
group: 'alert',
type: 'success',
title: 'Success',
text: 'Successfully left the meeting.',
group: "alert",
type: "success",
title: "Success",
text: "You left the meeting.",
},
5000
5000,
);
} catch (error) {
logConsoleAndDb('Error leaving meeting: ' + errorStringForLog(error), true);
logConsoleAndDb(
"Error leaving meeting: " + errorStringForLog(error),
true,
);
this.$notify(
{
group: 'alert',
type: 'danger',
title: 'Error',
text: serverMessageForUser(error) || 'Failed to leave meeting.',
group: "alert",
type: "danger",
title: "Error",
text:
serverMessageForUser(error) || "You failed to leave the meeting.",
},
5000
5000,
);
}
}
}
</script>
</script>