fix: eliminate all @typescript-eslint/no-explicit-any warnings

- Replace any type assertions with proper type definitions
- Add null safety with fallback values for undefined fields
- Improve error handling with type-safe string assignments
- Use JSON.stringify for non-string error objects
- Maintain runtime compatibility while improving type safety

Files changed:
- src/views/DIDView.vue: Fix claim type assertions and error handling
- src/views/ContactsView.vue: Fix registration payload and catch block typing
This commit is contained in:
Matthew Raymer
2025-07-03 12:08:43 +00:00
parent 72eb739c14
commit 5562ad2926
2 changed files with 82 additions and 91 deletions

View File

@@ -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(
{