From d6db81cc36448602970b2e0e0e716f78486d009a Mon Sep 17 00:00:00 2001 From: Trent Larson Date: Fri, 13 Jun 2025 21:58:57 -0600 Subject: [PATCH] fix some result types and refactor types themselves --- src/components/GiftedDialog.vue | 15 +-------------- src/components/OfferDialog.vue | 17 +---------------- src/interfaces/claims-result.ts | 11 ----------- src/interfaces/common.ts | 9 --------- src/interfaces/index.ts | 6 +----- src/libs/endorserServer.ts | 2 +- src/views/ClaimAddRawView.vue | 2 +- src/views/ConfirmGiftView.vue | 2 +- src/views/GiftedDetailsView.vue | 15 +-------------- src/views/HomeView.vue | 2 +- src/views/ProjectViewView.vue | 2 +- src/views/QuickActionBvcEndView.vue | 14 +++++++------- 12 files changed, 16 insertions(+), 81 deletions(-) diff --git a/src/components/GiftedDialog.vue b/src/components/GiftedDialog.vue index 754c9bf6..c6eb2064 100644 --- a/src/components/GiftedDialog.vue +++ b/src/components/GiftedDialog.vue @@ -321,7 +321,7 @@ export default class GiftedDialog extends Vue { ); if (!result.success) { - const errorMessage = this.getGiveCreationErrorMessage(result); + const errorMessage = result.error; logger.error("Error with give creation result:", result); this.$notify( { @@ -367,19 +367,6 @@ export default class GiftedDialog extends Vue { // Helper functions for readability - /** - * @param result direct response eg. ErrorResult or SuccessResult (potentially with embedded "data") - * @returns best guess at an error message - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - getGiveCreationErrorMessage(result: any) { - return ( - result.error?.userMessage || - result.error?.error || - result.response?.data?.error?.message - ); - } - explainData() { this.$notify( { diff --git a/src/components/OfferDialog.vue b/src/components/OfferDialog.vue index 659488f1..1ca6dc2b 100644 --- a/src/components/OfferDialog.vue +++ b/src/components/OfferDialog.vue @@ -250,7 +250,7 @@ export default class OfferDialog extends Vue { ); if (!result.success) { - const errorMessage = this.getOfferCreationErrorMessage(result); + const errorMessage = result.error; logger.error("Error with offer creation result:", result); this.$notify( { @@ -290,21 +290,6 @@ export default class OfferDialog extends Vue { ); } } - - // Helper functions for readability - - /** - * @param result direct response eg. ErrorResult or SuccessResult (potentially with embedded "data") - * @returns best guess at an error message - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - getOfferCreationErrorMessage(result: any) { - return ( - serverMessageForUser(result) || - result.error?.userMessage || - result.error?.error - ); - } } diff --git a/src/interfaces/claims-result.ts b/src/interfaces/claims-result.ts index d8f60f0c..920c652d 100644 --- a/src/interfaces/claims-result.ts +++ b/src/interfaces/claims-result.ts @@ -1,6 +1,4 @@ -import { AxiosResponse } from "axios"; import { GiverReceiverInputInfo } from "../libs/util"; -import { ErrorResult, ResultWithType } from "./common"; export interface GiverOutputInfo { action: string; @@ -47,12 +45,3 @@ export interface ProviderInfo { */ linkConfirmed: boolean; } - -// Type for createAndSubmitClaim result -export type CreateAndSubmitClaimResult = SuccessResult | ErrorResult; - -// Update SuccessResult to use ClaimResult -export interface SuccessResult extends ResultWithType { - type: "success"; - response: AxiosResponse; -} diff --git a/src/interfaces/common.ts b/src/interfaces/common.ts index 566db958..cce40568 100644 --- a/src/interfaces/common.ts +++ b/src/interfaces/common.ts @@ -15,10 +15,6 @@ export interface GenericCredWrapper { publicUrls?: Record; } -export interface ResultWithType { - type: string; -} - export interface ErrorResponse { error?: { message?: string; @@ -30,11 +26,6 @@ export interface InternalError { userMessage?: string; } -export interface ErrorResult extends ResultWithType { - type: "error"; - error: InternalError; -} - export interface KeyMeta { did: string; publicKeyHex: string; diff --git a/src/interfaces/index.ts b/src/interfaces/index.ts index 5d4b499d..b8e76493 100644 --- a/src/interfaces/index.ts +++ b/src/interfaces/index.ts @@ -1,5 +1,6 @@ export type { // From common.ts + CreateAndSubmitClaimResult, GenericCredWrapper, GenericVerifiableCredential, KeyMeta, @@ -18,11 +19,6 @@ export type { RegisterActionClaim, } from "./claims"; -export type { - // From claims-result.ts - CreateAndSubmitClaimResult, -} from "./claims-result"; - export type { // From records.ts PlanSummaryRecord, diff --git a/src/libs/endorserServer.ts b/src/libs/endorserServer.ts index 8409f413..cbdcbaee 100644 --- a/src/libs/endorserServer.ts +++ b/src/libs/endorserServer.ts @@ -979,7 +979,7 @@ export const createAndSubmitConfirmation = async ( handleId: string | undefined, apiServer: string, axios: Axios, -) => { +): Promise => { const goodClaim = removeSchemaContext( removeVisibleToDids( addLastClaimOrHandleAsIdIfMissing(claim, lastClaimId, handleId), diff --git a/src/views/ClaimAddRawView.vue b/src/views/ClaimAddRawView.vue index 3ff401f0..c63c33ad 100644 --- a/src/views/ClaimAddRawView.vue +++ b/src/views/ClaimAddRawView.vue @@ -198,7 +198,7 @@ export default class ClaimAddRawView extends Vue { this.apiServer, this.axios, ); - if (result.type === "success") { + if (result.success) { this.$notify( { group: "alert", diff --git a/src/views/ConfirmGiftView.vue b/src/views/ConfirmGiftView.vue index e58882ac..63225259 100644 --- a/src/views/ConfirmGiftView.vue +++ b/src/views/ConfirmGiftView.vue @@ -831,7 +831,7 @@ export default class ConfirmGiftView extends Vue { this.apiServer, this.axios, ); - if (result.type === "success") { + if (result.success) { this.$notify( { group: "alert", diff --git a/src/views/GiftedDetailsView.vue b/src/views/GiftedDetailsView.vue index 70f16e89..277546bc 100644 --- a/src/views/GiftedDetailsView.vue +++ b/src/views/GiftedDetailsView.vue @@ -826,7 +826,7 @@ export default class GiftedDetails extends Vue { } if (!result.success) { - const errorMessage = this.getGiveCreationErrorMessage(result); + const errorMessage = result.error; logger.error("Error with give creation result:", result); this.$notify( { @@ -899,19 +899,6 @@ export default class GiftedDetails extends Vue { // Helper functions for readability - /** - * @param result direct response eg. ErrorResult or SuccessResult (potentially with embedded "data") - * @returns best guess at an error message - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - getGiveCreationErrorMessage(result: any) { - return ( - result.error?.userMessage || - result.error?.error || - result.response?.data?.error?.message - ); - } - explainData() { this.$notify( { diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 24ce8255..70a569a2 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -1843,7 +1843,7 @@ export default class HomeView extends Vue { this.axios, ); - if (result.type === "success") { + if (result.success) { this.$notify( { group: "alert", diff --git a/src/views/ProjectViewView.vue b/src/views/ProjectViewView.vue index bd7b9f79..bcbcf666 100644 --- a/src/views/ProjectViewView.vue +++ b/src/views/ProjectViewView.vue @@ -1433,7 +1433,7 @@ export default class ProjectViewView extends Vue { this.apiServer, this.axios, ); - if (result.type === "success") { + if (result.success) { this.$notify( { group: "alert", diff --git a/src/views/QuickActionBvcEndView.vue b/src/views/QuickActionBvcEndView.vue index 18e96bcd..2a5330b3 100644 --- a/src/views/QuickActionBvcEndView.vue +++ b/src/views/QuickActionBvcEndView.vue @@ -155,7 +155,7 @@ import { Contact } from "../db/tables/contacts"; import { GenericCredWrapper, GenericVerifiableCredential, - ErrorResult, + CreateAndSubmitClaimResult, } from "../interfaces"; import { BVC_MEETUPS_PROJECT_CLAIM_ID, @@ -298,13 +298,13 @@ export default class QuickActionBvcBeginView extends Vue { } // in parallel, make a confirmation for each selected claim and send them all to the server - const confirmResults = await Promise.allSettled( + const confirmResults: PromiseSettledResult[] = await Promise.allSettled( this.claimsToConfirmSelected.map(async (jwtId) => { const record = this.claimsToConfirm.find( (claim) => claim.id === jwtId, ); if (!record) { - return { type: "error", error: "Record not found." }; + return { success: false, error: "Record not found." }; } return createAndSubmitConfirmation( this.activeDid, @@ -318,8 +318,8 @@ export default class QuickActionBvcBeginView extends Vue { ); // check for any rejected confirmations const confirmsSucceeded = confirmResults.filter( - (result) => - result.status === "fulfilled" && result.value.type === "success", + // 'fulfilled' is the status in a successful PromiseFulfilledResult + (result) => result.status === "fulfilled" && result.value.success, ); if (confirmsSucceeded.length < this.claimsToConfirmSelected.length) { logger.error("Error sending confirmations:", confirmResults); @@ -353,7 +353,7 @@ export default class QuickActionBvcBeginView extends Vue { undefined, BVC_MEETUPS_PROJECT_CLAIM_ID, ); - giveSucceeded = giveResult.type === "success"; + giveSucceeded = giveResult.success; if (!giveSucceeded) { logger.error("Error sending give:", giveResult); this.$notify( @@ -362,7 +362,7 @@ export default class QuickActionBvcBeginView extends Vue { type: "danger", title: "Error", text: - (giveResult as ErrorResult)?.error?.userMessage || + (giveResult as CreateAndSubmitClaimResult)?.error || "There was an error sending that give.", }, 5000,