Browse Source

refactor: move ProviderInfo interface to claims-result.ts

- Move ProviderInfo interface from ClaimView.vue to claims-result.ts
- Add JSDoc documentation to interface properties
- Update imports in ClaimView.vue
- Clean up route handling using vue-router types
- Remove outdated browser compatibility comment

This improves type organization and documentation while reducing
component-level interface definitions.
side_step
Matthew Raymer 1 month ago
parent
commit
dc16cb393e
  1. 11
      src/interfaces/claims-result.ts
  2. 8
      src/main.capacitor.ts
  3. 4
      src/router/index.ts
  4. 55
      src/views/ClaimView.vue

11
src/interfaces/claims-result.ts

@ -37,6 +37,17 @@ export interface WorldProperties {
endTime?: string;
}
export interface ProviderInfo {
/**
* Could be a DID or a handleId that identifies the provider
*/
identifier: string;
/**
* Indicates if the provider link has been confirmed
*/
linkConfirmed: boolean;
}
// Type for createAndSubmitClaim result
export type CreateAndSubmitClaimResult = SuccessResult | ErrorResult;

8
src/main.capacitor.ts

@ -97,15 +97,15 @@ const handleDeepLink = async (data: { url: string }) => {
const paramRoutes = {
"claim-add-raw": /^claim-add-raw\/(.+)$/,
"claim-cert": /^claim-cert\/(.+)$/,
claim: /^claim\/(.+)$/,
"claim": /^claim\/(.+)$/,
"confirm-gift": /^confirm-gift\/(.+)$/,
"contact-edit": /^contact-edit\/(.+)$/,
"contact-import": /^contact-import\/(.+)$/,
did: /^did\/(.+)$/,
"did": /^did\/(.+)$/,
"invite-one-accept": /^invite-one-accept\/(.+)$/,
"offer-details": /^offer-details\/(.+)$/,
project: /^project\/(.+)$/,
userProfile: /^userProfile\/(.+)$/,
"project": /^project\/(.+)$/,
"user-profile": /^user-profile\/(.+)$/,
};
// Match route pattern and extract parameter

4
src/router/index.ts

@ -276,8 +276,8 @@ const routes: Array<RouteRecordRaw> = [
component: () => import("../views/TestView.vue"),
},
{
path: "/userProfile/:id?",
name: "userProfile",
path: "/user-profile/:id?",
name: "user-profile",
component: () => import("../views/UserProfileView.vue"),
},
];

55
src/views/ClaimView.vue

@ -505,7 +505,7 @@ import { AxiosError } from "axios";
import * as yaml from "js-yaml";
import * as R from "ramda";
import { Component, Vue } from "vue-facing-decorator";
import { Router } from "vue-router";
import { Router, RouteLocationNormalizedLoaded } from "vue-router";
import { useClipboard } from "@vueuse/core";
import GiftedDialog from "../components/GiftedDialog.vue";
@ -518,22 +518,20 @@ import {
} from "../db/index";
import { Contact } from "../db/tables/contacts";
import * as serverUtil from "../libs/endorserServer";
import {
GenericCredWrapper,
import {
GenericCredWrapper,
OfferVerifiableCredential,
} from "../libs/endorserServer";
ProviderInfo
} from '../interfaces';
import * as libsUtil from "../libs/util";
interface ProviderInfo {
identifier: string; // could be a DID or a handleId
linkConfirmed: boolean;
}
@Component({
components: { GiftedDialog, QuickNav },
})
export default class ClaimView extends Vue {
$notify!: (notification: NotificationIface, timeout?: number) => void;
$route!: RouteLocationNormalizedLoaded;
$router!: Router;
activeDid = "";
allMyDids: Array<string> = [];
@ -595,41 +593,30 @@ export default class ClaimView extends Vue {
try {
this.allMyDids = await libsUtil.retrieveAccountDids();
} catch (error) {
// continue because we want to see claims, even anonymously
logConsoleAndDb(
"Error retrieving all account DIDs on home page:" + error,
true,
);
this.$notify(
{
group: "alert",
type: "danger",
title: "Error Loading Profile",
text: "See the Help page for problems with your personal data.",
},
5000,
);
this.$notify({
group: "alert",
type: "danger",
title: "Error Loading Profile",
text: "See the Help page for problems with your personal data.",
}, 5000);
}
const pathParam = window.location.pathname.substring("/claim/".length);
let claimId;
if (pathParam) {
claimId = decodeURIComponent(pathParam);
const claimId = this.$route.params.id as string;
if (claimId) {
await this.loadClaim(claimId, this.activeDid);
} else {
this.$notify(
{
group: "alert",
type: "danger",
title: "Error",
text: "No claim ID was provided.",
},
5000,
);
this.$notify({
group: "alert",
type: "danger",
title: "Error",
text: "No claim ID was provided.",
}, 5000);
}
// When Chrome compatibility is fixed https://developer.mozilla.org/en-US/docs/Web/API/Web_Share_API#api.navigator.canshare
// then use this truer check: navigator.canShare && navigator.canShare()
this.canShare = !!navigator.share;
}

Loading…
Cancel
Save