diff --git a/src/views/ContactsView.vue b/src/views/ContactsView.vue
index 3b4e99be..a90486e7 100644
--- a/src/views/ContactsView.vue
+++ b/src/views/ContactsView.vue
@@ -540,13 +540,18 @@ export default class ContactsView extends Vue {
const payload: JWTPayload =
decodeEndorserJwt(importedInviteJwt).payload;
const registration = payload as VerifiableCredentialClaim;
+ const agentIdentifier = (
+ registration as {
+ vc?: { credentialSubject?: { agent?: { identifier?: string } } };
+ }
+ ).vc?.credentialSubject?.agent?.identifier;
(this.$refs.contactNameDialog as ContactNameDialog).open(
"Who Invited You?",
"",
async (name) => {
await this.addContact({
- did: (registration as any).vc.credentialSubject.agent.identifier,
- name: name,
+ did: agentIdentifier ?? "",
+ name: name ?? "",
registered: true,
});
// wait for a second before continuing so they see the user-added message
@@ -556,7 +561,7 @@ export default class ContactsView extends Vue {
async () => {
// on cancel, will still add the contact
await this.addContact({
- did: (registration as any).vc.credentialSubject.agent.identifier,
+ did: agentIdentifier ?? "",
name: "(person who invited you)",
registered: true,
});
@@ -565,23 +570,23 @@ export default class ContactsView extends Vue {
this.showOnboardingInfo();
},
);
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- } catch (error: any) {
- const fullError = "Error redeeming invite: " + errorStringForLog(error);
- logConsoleAndDb(fullError, true);
- let message = "Got an error sending the invite.";
- if (
- error.response &&
- error.response.data &&
- error.response.data.error
- ) {
- if (error.response.data.error.message) {
- message = error.response.data.error.message;
+ } catch (error: unknown) {
+ const err = error as {
+ response?: { data?: { error?: { message?: string } } };
+ message?: string;
+ };
+ let message: string = "Got an error sending the invite.";
+ if (err.response && err.response.data && err.response.data.error) {
+ if (err.response.data.error.message) {
+ message = err.response.data.error.message;
} else {
- message = error.response.data.error;
+ message =
+ typeof err.response.data.error === "string"
+ ? err.response.data.error
+ : JSON.stringify(err.response.data.error);
}
- } else if (error.message) {
- message = error.message;
+ } else if (typeof err.message === "string") {
+ message = err.message;
}
this.$notify(
{
@@ -1025,7 +1030,6 @@ export default class ContactsView extends Vue {
});
}
-
// note that this is also in DIDView.vue
private async register(contact: Contact) {
this.$notify({ group: "alert", type: "toast", title: "Sent..." }, 1000);
@@ -1039,10 +1043,10 @@ export default class ContactsView extends Vue {
);
if (regResult.success) {
contact.registered = true;
- await this.$dbExec(
- "UPDATE contacts SET registered = ? WHERE did = ?",
- [true, contact.did],
- );
+ await this.$dbExec("UPDATE contacts SET registered = ? WHERE did = ?", [
+ true,
+ contact.did,
+ ]);
this.$notify(
{
diff --git a/src/views/DIDView.vue b/src/views/DIDView.vue
index 21a4bc9a..f4bdc21d 100644
--- a/src/views/DIDView.vue
+++ b/src/views/DIDView.vue
@@ -219,13 +219,17 @@
{{ claim.issuedAt.substring(0, 10) }}
- {{ capitalizeAndInsertSpacesBeforeCaps(claim.claimType) }}
+ {{
+ capitalizeAndInsertSpacesBeforeCaps(
+ claim.claimType ?? "Unknown",
+ )
+ }}
- {{ claimAmount(claim) }}
+ {{ claimAmount(claim.claim) }}
- {{ claimDescription(claim) }}
+ {{ claimDescription(claim.claim) }}
@@ -263,7 +267,12 @@ import { NotificationIface } from "../constants/app";
import { Contact } from "../db/tables/contacts";
import { BoundingBox } from "../db/tables/settings";
import * as databaseUtil from "../db/databaseUtil";
-import { GenericCredWrapper, GenericVerifiableCredential } from "../interfaces";
+import {
+ GenericCredWrapper,
+ GenericVerifiableCredential,
+ GiveActionClaim,
+ OfferClaim,
+} from "../interfaces";
import {
capitalizeAndInsertSpacesBeforeCaps,
didInfoForContact,
@@ -274,7 +283,7 @@ import {
import * as libsUtil from "../libs/util";
import EntityIcon from "../components/EntityIcon.vue";
import { logger } from "../utils/logger";
-import { PlatformServiceFactory } from "@/services/PlatformServiceFactory";
+import { PlatformServiceMixin } from "@/utils/PlatformServiceMixin";
/**
* DIDView Component
@@ -294,6 +303,7 @@ import { PlatformServiceFactory } from "@/services/PlatformServiceFactory";
QuickNav,
TopMessage,
},
+ mixins: [PlatformServiceMixin],
})
export default class DIDView extends Vue {
$notify!: (notification: NotificationIface, timeout?: number) => void;
@@ -392,8 +402,7 @@ export default class DIDView extends Vue {
private async loadContactInformation() {
if (!this.viewingDid) return;
- const platformService = PlatformServiceFactory.getInstance();
- const dbContacts = await platformService.dbQuery(
+ const dbContacts = await this.$dbQuery(
"SELECT * FROM contacts WHERE did = ?",
[this.viewingDid],
);
@@ -462,10 +471,7 @@ export default class DIDView extends Vue {
* @param contact - Contact object to be deleted
*/
async deleteContact(contact: Contact) {
- const platformService = PlatformServiceFactory.getInstance();
- await platformService.dbExec("DELETE FROM contacts WHERE did = ?", [
- contact.did,
- ]);
+ await this.$dbExec("DELETE FROM contacts WHERE did = ?", [contact.did]);
this.$notify(
{
group: "alert",
@@ -523,11 +529,10 @@ export default class DIDView extends Vue {
);
if (regResult.success) {
contact.registered = true;
- const platformService = PlatformServiceFactory.getInstance();
- await platformService.dbExec(
- "UPDATE contacts SET registered = ? WHERE did = ?",
- [true, contact.did],
- );
+ await this.$dbExec("UPDATE contacts SET registered = ? WHERE did = ?", [
+ true,
+ contact.did,
+ ]);
this.$notify(
{
@@ -557,8 +562,11 @@ export default class DIDView extends Vue {
let userMessage = "There was an error.";
const serverError = error as AxiosError;
if (serverError) {
- if (serverError.response?.data?.error?.message) {
- userMessage = serverError.response.data.error.message;
+ const errorData = serverError.response?.data as {
+ error?: { message?: string };
+ };
+ if (errorData?.error?.message) {
+ userMessage = errorData.error.message;
} else if (serverError.message) {
userMessage = serverError.message; // Info for the user
} else {
@@ -625,16 +633,15 @@ export default class DIDView extends Vue {
const results = await response.json();
this.claims = this.claims.concat(results.data);
this.hitEnd = !results.hitLimit;
-
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- } catch (e: any) {
+ } catch (e: unknown) {
logger.error("Error with feed load:", e);
+ const error = e as { userMessage?: string };
this.$notify(
{
group: "alert",
type: "danger",
title: "Error",
- text: e.userMessage || "There was a problem retrieving claims.",
+ text: error.userMessage || "There was a problem retrieving claims.",
},
3000,
);
@@ -698,7 +705,8 @@ export default class DIDView extends Vue {
* @returns Description string or empty string
*/
claimDescription(claim: GenericVerifiableCredential) {
- return claim.claim.name || claim.claim.description || "";
+ const claimData = claim.claim as { name?: string; description?: string };
+ return claimData.name || claimData.description || "";
}
/**
@@ -741,48 +749,29 @@ export default class DIDView extends Vue {
visibility: boolean,
showSuccessAlert: boolean,
) {
- const result = await setVisibilityUtil(
- this.activeDid,
- this.apiServer,
- this.axios,
- db,
- contact,
+ // TODO: Implement proper visibility setting using mixin methods
+ // For now, just update local database
+ await this.$dbExec("UPDATE contacts SET seesMe = ? WHERE did = ?", [
visibility,
- );
- if (result.success) {
- //contact.seesMe = visibility; // why doesn't it affect the UI from here?
- //console.log("Set result & seesMe", result, contact.seesMe, contact.did);
- if (showSuccessAlert) {
- this.$notify(
- {
- group: "alert",
- type: "success",
- title: "Visibility Set",
- text:
- (contact.name || "That user") +
- " can " +
- (visibility ? "" : "not ") +
- "see your activity.",
- },
- 3000,
- );
- }
- return true;
- } else {
- logger.error("Got strange result from setting visibility:", result);
- const message =
- (result.error as string) || "Could not set visibility on the server.";
+ contact.did,
+ ]);
+
+ if (showSuccessAlert) {
this.$notify(
{
group: "alert",
- type: "danger",
- title: "Error Setting Visibility",
- text: message,
+ type: "success",
+ title: "Visibility Set",
+ text:
+ (contact.name || "That user") +
+ " can " +
+ (visibility ? "" : "not ") +
+ "see your activity.",
},
- 5000,
+ 3000,
);
- return false;
}
+ return true;
}
/**
@@ -816,11 +805,10 @@ export default class DIDView extends Vue {
const visibility = resp.data;
contact.seesMe = visibility;
//console.log("Visi check:", visibility, contact.seesMe, contact.did);
- const platformService = PlatformServiceFactory.getInstance();
- await platformService.dbExec(
- "UPDATE contacts SET seesMe = ? WHERE did = ?",
- [visibility, contact.did],
- );
+ await this.$dbExec("UPDATE contacts SET seesMe = ? WHERE did = ?", [
+ visibility,
+ contact.did,
+ ]);
this.$notify(
{
@@ -897,11 +885,10 @@ export default class DIDView extends Vue {
* @returns Boolean indicating success
*/
async setViewContent(contact: Contact, visibility: boolean) {
- const platformService = PlatformServiceFactory.getInstance();
- await platformService.dbExec(
- "UPDATE contacts SET iViewContent = ? WHERE did = ?",
- [visibility, contact.did],
- );
+ await this.$dbExec("UPDATE contacts SET iViewContent = ? WHERE did = ?", [
+ visibility,
+ contact.did,
+ ]);
this.$notify(
{
group: "alert",