diff --git a/src/views/AccountViewView.vue b/src/views/AccountViewView.vue index 96b1d83e..cc608810 100644 --- a/src/views/AccountViewView.vue +++ b/src/views/AccountViewView.vue @@ -68,9 +68,9 @@ class="inline-block text-md uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md" @click=" () => - ($refs.userNameDialog as UserNameDialog).open( - (name) => (givenName = name), - ) + ($refs.userNameDialog as UserNameDialog).open((name) => { + if (name) givenName = name; + }) " > Set Your Name @@ -437,7 +437,7 @@ <b>{{ endorserLimits?.maxClaimsPerWeek || "?" }}</b> for this week. Your claims counter resets at <b class="whitespace-nowrap">{{ - readableDate(endorserLimits?.nextWeekBeginDateTime) + readableDate(endorserLimits?.nextWeekBeginDateTime ?? "") }}</b> </p> <p class="mt-3 text-sm"> @@ -454,7 +454,7 @@ <i>(You cannot register anyone on your first day.)</i> Your registration counter resets at <b class="whitespace-nowrap"> - {{ readableDate(endorserLimits?.nextMonthBeginDateTime) }} + {{ readableDate(endorserLimits?.nextMonthBeginDateTime ?? "") }} </b> </p> <p class="mt-3 text-sm"> @@ -463,7 +463,7 @@ <b>{{ imageLimits?.maxImagesPerWeek || "?" }}</b> for this week. Your image counter resets at <b class="whitespace-nowrap">{{ - readableDate(imageLimits?.nextWeekBeginDateTime) + readableDate(imageLimits?.nextWeekBeginDateTime ?? "") }}</b> </p> </div> @@ -976,11 +976,10 @@ import Dexie from "dexie"; import "dexie-export-import"; // @ts-expect-error - they aren't exporting it but it's there import { ImportProgress } from "dexie-export-import"; -import { LeafletMouseEvent } from "leaflet"; import * as R from "ramda"; import { IIdentifier } from "@veramo/core"; import { ref } from "vue"; -import { Component, Vue } from "vue-facing-decorator"; +import { Component, Vue, Hook } from "vue-facing-decorator"; import { RouteLocationNormalizedLoaded, Router } from "vue-router"; import { useClipboard } from "@vueuse/core"; import { LMap, LMarker, LTileLayer } from "@vue-leaflet/vue-leaflet"; @@ -1016,15 +1015,14 @@ import { import * as databaseUtil from "../db/databaseUtil"; import { clearPasskeyToken, - EndorserRateLimits, - ErrorResponse, errorStringForLog, fetchEndorserRateLimits, fetchImageRateLimits, getHeaders, - ImageRateLimits, tokenExpiryTimeDescription, } from "../libs/endorserServer"; +import { EndorserRateLimits, ImageRateLimits } from "../interfaces/limits"; +import { ErrorResponse } from "../interfaces/common"; import { DAILY_CHECK_TITLE, DIRECT_PUSH_TITLE, @@ -1040,7 +1038,6 @@ const inputImportFileNameRef = ref<Blob>(); components: { EntityIcon, ImageMethodDialog, - LeafletMouseEvent, LMap, LMarker, LTileLayer, @@ -1117,8 +1114,11 @@ export default class AccountViewView extends Vue { * * @throws Will display specific messages to the user based on different errors. */ + @Hook("mounted") async mounted() { try { + // eslint-disable-next-line no-console + console.log("[AccountViewView] -- mounted", process.env.VITE_PLATFORM); // Initialize component state with values from the database or defaults await this.initializeState(); await this.processIdentity(); @@ -1145,7 +1145,12 @@ export default class AccountViewView extends Vue { throw Error("Unable to load profile."); } } catch (error) { - if (error.status === 404) { + if ( + error && + typeof error === "object" && + "status" in error && + error.status === 404 + ) { // this is ok: the profile is not yet created } else { databaseUtil.logConsoleAndDb( @@ -1676,7 +1681,9 @@ export default class AccountViewView extends Vue { } async uploadImportFile(event: Event) { - inputImportFileNameRef.value = (event.target as EventTarget).files[0]; + inputImportFileNameRef.value = ( + event.target as HTMLInputElement + ).files?.[0]; } showContactImport() { @@ -1886,6 +1893,11 @@ export default class AccountViewView extends Vue { } async onClickSaveApiServer() { + console.log("[AccountViewView] -- Starting API server update", { + current: this.apiServer, + new: this.apiServerInput, + component: "AccountViewView", + }); logger.debug("[AccountViewView] Starting API server update", { current: this.apiServer, new: this.apiServerInput, @@ -2123,6 +2135,7 @@ export default class AccountViewView extends Vue { const headers = await getHeaders(this.activeDid); const payload: UserProfile = { description: this.userProfileDesc, + issuerDid: this.activeDid, }; if (this.userProfileLatitude && this.userProfileLongitude) { payload.locLat = this.userProfileLatitude; @@ -2164,11 +2177,14 @@ export default class AccountViewView extends Vue { if (USE_DEXIE_DB) { logConsoleAndDb("Error saving profile: " + errorStringForLog(error)); } - const errorMessage: string = - error.response?.data?.error?.message || - error.response?.data?.error || - error.message || - "There was an error saving your profile."; + let errorMessage = "There was an error saving your profile."; + if (error instanceof AxiosError) { + errorMessage = + error.response?.data?.error?.message || + error.response?.data?.error || + error.message || + errorMessage; + } this.$notify( { group: "alert", @@ -2259,11 +2275,14 @@ export default class AccountViewView extends Vue { if (USE_DEXIE_DB) { logConsoleAndDb("Error deleting profile: " + errorStringForLog(error)); } - const errorMessage: string = - error.response?.data?.error?.message || - error.response?.data?.error || - error.message || - "There was an error deleting your profile."; + let errorMessage = "There was an error deleting your profile."; + if (error instanceof AxiosError) { + errorMessage = + error.response?.data?.error?.message || + error.response?.data?.error || + error.message || + errorMessage; + } this.$notify( { group: "alert",