refactor: consolidate data checks & remove unused items

This commit is contained in:
2026-01-20 20:14:48 -07:00
parent 2684484a84
commit e1b312a402
6 changed files with 21 additions and 82 deletions

View File

@@ -45,16 +45,7 @@ import EntityGrid from "./EntityGrid.vue";
import { Contact } from "../db/tables/contacts";
import { PlanData } from "../interfaces/records";
import { NotificationIface } from "../constants/app";
/**
* Entity data interface for giver/receiver
*/
interface EntityData {
did?: string;
handleId?: string;
name?: string;
image?: string;
}
import { EntityData } from "@/interfaces";
/**
* Entity selection event data structure
@@ -103,14 +94,6 @@ export default class EntitySelectionStep extends Vue {
@Prop({ required: true })
conflictChecker!: (did: string) => boolean;
/** Project ID for context (giver) */
@Prop({ default: "" })
fromProjectId!: string;
/** Project ID for context (recipient) */
@Prop({ default: "" })
toProjectId!: string;
/** Current giver entity for context */
@Prop()
giver?: EntityData | null;
@@ -119,20 +102,6 @@ export default class EntitySelectionStep extends Vue {
@Prop()
receiver?: EntityData | null;
/** Form field values to preserve when navigating to "Show All" */
@Prop({ default: "" })
description!: string;
@Prop({ default: "0" })
amountInput!: string;
@Prop({ default: "HUR" })
unitCode!: string;
/** Offer ID for context when fulfilling an offer */
@Prop({ default: "" })
offerId!: string;
/** Notification function from parent component */
@Prop()
notify?: (notification: NotificationIface, timeout?: number) => void;

View File

@@ -50,16 +50,7 @@ import EntityIcon from "./EntityIcon.vue";
import ProjectIcon from "./ProjectIcon.vue";
import { Contact } from "../db/tables/contacts";
import { UNNAMED_ENTITY_NAME } from "@/constants/entities";
/**
* Entity interface for both person and project entities
*/
interface EntityData {
did?: string;
handleId?: string;
name?: string;
image?: string;
}
import { EntityData } from "@/interfaces";
/**
* EntitySummaryButton - Displays selected entity with edit capability

View File

@@ -14,7 +14,6 @@ control over updates and validation * * @author Matthew Raymer */
<!-- Giver Button -->
<EntitySummaryButton
:entity="giver"
:entity-type="giverEntityType"
:label="giverLabel"
:on-edit-requested="handleEditGiver"
/>
@@ -22,7 +21,6 @@ control over updates and validation * * @author Matthew Raymer */
<!-- Recipient Button -->
<EntitySummaryButton
:entity="receiver"
:entity-type="recipientEntityType"
:label="recipientLabel"
:on-edit-requested="handleEditRecipient"
/>
@@ -104,16 +102,7 @@ import { Component, Prop, Vue, Watch, Emit } from "vue-facing-decorator";
import EntitySummaryButton from "./EntitySummaryButton.vue";
import AmountInput from "./AmountInput.vue";
import { RouteLocationRaw } from "vue-router";
/**
* Entity data interface for giver/receiver
*/
interface EntityData {
did?: string;
handleId?: string;
name?: string;
image?: string;
}
import { EntityData } from "@/interfaces";
/**
* GiftDetailsStep - Complete step 2 gift details form interface
@@ -145,14 +134,6 @@ export default class GiftDetailsStep extends Vue {
@Prop({ required: true })
receiver!: EntityData | null;
/** Type of giver entity: 'person' or 'project' */
@Prop({ required: true })
giverEntityType!: "person" | "project";
/** Type of recipient entity: 'person' or 'project' */
@Prop({ required: true })
recipientEntityType!: "person" | "project";
/** Gift description */
@Prop({ default: "" })
description!: string;
@@ -211,6 +192,14 @@ export default class GiftDetailsStep extends Vue {
private localAmount: number = 0;
private localUnitCode: string = "HUR";
get giverEntityType(): string {
return this.giver?.handleId ? "project" : "person";
}
get recipientEntityType(): string {
return this.receiver?.handleId ? "project" : "person";
}
/**
* CSS classes for the photo & more options link
*/

View File

@@ -9,20 +9,12 @@
<EntitySelectionStep
v-show="firstStep"
:step-type="stepType"
:giver-entity-type="currentGiverEntityType"
:recipient-entity-type="currentRecipientEntityType"
:all-contacts="allContacts"
:active-did="activeDid"
:all-my-dids="allMyDids"
:conflict-checker="wouldCreateConflict"
:from-project-id="fromProjectId"
:to-project-id="toProjectId"
:giver="giver"
:receiver="receiver"
:description="description"
:amount-input="amountInput"
:unit-code="unitCode"
:offer-id="offerId"
:notify="$notify"
@entity-selected="handleEntitySelected"
@cancel="cancel"

View File

@@ -125,6 +125,16 @@ export interface DexieError extends Error {
stack?: string;
}
/**
* Entity interface for both person and project entities
*/
export interface EntityData {
did?: string;
handleId?: string;
name?: string;
image?: string;
}
/**
* Type guard for database constraint errors
*/

View File

@@ -135,14 +135,8 @@
:active-did="activeDid"
:all-my-dids="allMyDids"
:conflict-checker="wouldCreateConflictWithRecipient"
:from-project-id="providerProjectId"
:to-project-id="fulfillsProjectId"
:giver="currentGiver"
:receiver="currentReceiver"
:description="description"
:amount-input="amountInput"
:unit-code="unitCode"
:offer-id="offerId"
:notify="$notify"
@entity-selected="handleGiverEntitySelected"
@cancel="closeGiverSelection"
@@ -190,14 +184,8 @@
:active-did="activeDid"
:all-my-dids="allMyDids"
:conflict-checker="wouldCreateConflictWithGiver"
:from-project-id="providerProjectId"
:to-project-id="fulfillsProjectId"
:giver="currentGiver"
:receiver="currentReceiver"
:description="description"
:amount-input="amountInput"
:unit-code="unitCode"
:offer-id="offerId"
:notify="$notify"
@entity-selected="handleRecipientEntitySelected"
@cancel="closeRecipientSelection"