Commit Graph

117 Commits

Author SHA1 Message Date
Matthew Raymer
379056aae1 feat(typescript): resolve Priority 2 type safety issues across components
- Eliminate all remaining any types in Priority 2 components (activity, gifts, usage limits, QR scanning, discovery, meetings)
- Implement proper TypeScript types using existing interfaces (GiveActionClaim, EndorserRateLimits, ImageRateLimits)
- Replace any types with unknown + proper type guards for error handling
- Fix type assertions for external library integrations (QR scanning, mapping)
- Maintain backward compatibility while improving type safety

Resolves 7 Priority 2 type safety warnings, achieving 100% type safety for critical user-facing functionality.
2025-08-16 14:13:36 +00:00
Matthew Raymer
79593f12b4 fix(types): resolve notification system type safety issues
- Replace $notify any types with proper NotifyFunction interface
- Import NotifyFunction type from utils/notify
- Eliminate 5 TypeScript any type warnings
- Improve type safety for notification system across components

Reduces lint warnings from 25 to 20 by addressing high-impact,
low-effort notification type issues. Maintains full functionality
while improving code quality and IntelliSense support.
2025-08-14 11:05:34 +00:00
Jose Olarte III
bf08e57ce7 Fix: re-organize entity type conditional logic in gifting flow
- Add conditional checks for person vs project entity types when setting DID fields
- Simplify project ID assignment logic by removing redundant entity type checks
- Preserve existing recipient context when selecting givers in ContactGiftingView, especially when dealing with "Unnamed" entity
2025-08-07 18:29:58 +08:00
Jose Olarte III
18e6aa5a9a Fix: gifting error messages
- Replaced error messages in GiftedDetailsView
- Maintained consistency between GiftedDialog and GiftedDetailsView (error message constants, amountInput)
2025-08-07 18:20:09 +08:00
Jose Olarte III
919b48e61f Remove unneeded comment 2025-08-07 15:08:57 +08:00
2a34d0e2d1 chore: Adjust some types and type commentary 2025-08-06 17:56:50 -06:00
Jose Olarte III
06f3a4c7c2 Refactor: simplify GiftedDialog with explicit entity type props
Replace complex updateEntityTypes() method with explicit giverEntityType and
recipientEntityType props. This makes the component more declarative and
maintainable by removing hidden logic and making entity type relationships
clear at the call site.

- Remove updateEntityTypes() method and related watchers
- Add explicit giverEntityType and recipientEntityType props with defaults
- Update all views to use inline logic for entity type determination
- Fix entity type preservation in navigation flows
- Enhance query parameter passing for better context preservation
- Fix recipient reset issue in ContactGiftingView
- Resolve entity type mismatch in HomeView project button flow

Files changed:
- GiftedDialog.vue: Remove complex logic, add explicit props
- EntitySelectionStep.vue: Enhanced query parameter handling
- ContactGiftingView.vue: Improved context preservation
- HomeView.vue, ProjectViewView.vue, ClaimView.vue, ContactsView.vue:
  Updated to use explicit entity type props
- Add refactoring documentation
2025-08-03 11:49:46 +08:00
Jose Olarte III
54bfaafbd0 Fix entity type matching in ClaimView
- Add recipientEntityTypeOverride prop to GiftedDialog component
- Add data-testid and data-recipient-entity-type-override attributes for testing
- Update updateEntityTypes() to respect recipientEntityTypeOverride when set
- Add watcher for recipientEntityTypeOverride prop changes
- Update ClaimView to pass recipient entity type override based on project context
- Improve recipient determination logic in ClaimView for person vs project recipients
2025-08-01 16:13:20 +08:00
Jose Olarte III
e741790d70 Fix ClaimView affirm delivery action
- Add offer context support to gifting flow
- Add offerId prop to EntitySelectionStep for offer fulfillment context
- Pass offerId through GiftedDialog to EntitySelectionStep
- Update ContactGiftingView to handle offerId from route query parameters
- Extract offer details (description, amount, unitCode) for pre-population
2025-08-01 13:44:28 +08:00
Jose Olarte III
404a7cbc71 Add form field preservation in gifting flow
- Preserve description, amount, and unit code when navigating between gifting steps
- Add form field props to EntitySelectionStep and GiftedDialog components
- Update ContactGiftingView to handle form state persistence in URL parameters
2025-08-01 11:36:17 +08:00
Jose Olarte III
433f3c1154 Fix GiftedDialog functionality
- Add description, amountInput, and unitCode parameters to GiftedDialog.open()
- Pass offer details to GiftedDialog in ProjectViewView
- Update ContactsView to handle new GiftedDialog parameters
2025-07-31 17:28:46 +08:00
Jose Olarte III
0582954cfa Remove 'customTitle' variable 2025-07-31 15:53:37 +08:00
Matthew Raymer
dacf1f8083 refactor: convert GiftDetailsStep update handlers from emits to function props
- Replace @Emit("update:description"), @Emit("update:amount"), @Emit("update:unitCode") with function props
- Add onUpdateDescription, onUpdateAmount, onUpdateUnitCode function props with TypeScript typing
- Update GiftedDialog to use new function prop interface for update handlers
- Remove emit decorators and methods for update events
- Keep emit pattern for non-update events (edit-entity, explain-data, submit, cancel)
- Improve component documentation to reflect new architecture

This change provides better parent control over validation and update behavior
for form fields while maintaining existing functionality for other events.
2025-07-18 07:23:20 +00:00
Jose Olarte III
3ad4f44d89 Fix: notification init + safety checks 2025-07-07 18:08:30 +08:00
Jose Olarte III
e1db9083c2 Fix: handle special "You" entity 2025-07-07 17:16:59 +08:00
Jose Olarte III
41dab36eb6 Fix: stepType was being set to an object 2025-07-07 16:20:11 +08:00
Matthew Raymer
dd22e1b884 refactor: standardize notification usage and document best practices
Move all user-facing notification messages to src/constants/notifications.ts
Use TIMEOUTS constants from src/utils/notify.ts for all notification durations
Refactor ActivityListItem.vue:
Use notification message and duration constants
Initialize notify helper in created() with createNotifyHelpers(this.$notify)
Add $notify property for Vue runtime injection to satisfy type checker
Use type guards or 'as any' for unknown notification payloads
Wrap notifyWhyCannotConfirm calls to match expected function signature
Fix type import for GiveRecordWithContactInfo
Add 'Notification Best Practices and Nuances' section to migration-progress-tracker.md:
Document message/duration constants, notify helper pattern, type safety, and wrapper function usage
Remove all hardcoded notification strings and durations from components
2025-07-06 12:19:31 +00:00
Matthew Raymer
8d5e4ddbfb refactor: standardize notify helper usage and document migration workflow
- Refactor notify usage in GiftedDialog.vue, AccountViewView.vue, ClaimView.vue, and DataExportSection.vue:
  • Use notify as a property initialized in created() with createNotifyHelpers(this.$notify)
  • Remove getter-based notify patterns for consistency and lifecycle safety
  • Fix linter/type errors related to notify property initialization

- Add mandatory per-file migration workflow to doc/migration-progress-tracker.md:
  • For each file: (1) migrate to PlatformServiceMixin, (2) immediately standardize notify usage and fix linter/type errors
  • Clarifies this two-step process is required for every file, not as a global sweep

All migrated files are now consistent, maintainable, and ready for further migration work.
2025-07-06 11:56:12 +00:00
Jose Olarte III
993aa005fa Feature: notify on click why entity is disabled 2025-07-04 19:12:56 +08:00
Jose Olarte III
17721ea448 Fix: remove duplicates from merge conflict 2025-07-04 17:19:04 +08:00
Matthew Raymer
082dc200b3 Fix TypeScript any types, console statements, and clean up duplicates
- Replace console.log with structured logger.debug() calls in AmountInput,
  GiftDetailsStep, and GiftedDialog components
- Fix duplicate enum values in constants/app.ts for LOCAL_*_API_SERVER
- Replace Record<string, any> with Record<string, string> for query params
- Update error handling from catch(err: any) to catch(err: unknown)
- Add EntityData interface and fix entity prop typing
- Remove USE_DEXIE_DB conditionals and unused database imports
- Fix duplicate imports and class members in GiftedDialog.vue
- Correct createAndSubmitGive function call parameters

Resolves 12 linting errors and 9 TypeScript any type warnings.
Improves type safety, logging practices, and removes deprecated code.
2025-07-04 08:29:43 +00:00
Matthew Raymer
b78d2e7d22 Merge branch 'gifting-periphery-improvements' into build-improvement 2025-07-04 08:26:03 +00:00
Matthew Raymer
56286e1fea Fix TypeScript any types and remove deprecated Dexie code
- Replace Record<string, any> with Record<string, string> for query params
- Fix error handling from catch(err: any) to catch(err: unknown)
- Add EntityData interface for proper entity typing
- Update EntitySelectionEvent interface with union types
- Remove USE_DEXIE_DB conditionals and unused import
- Clean up database service calls removing Dexie fallbacks

Resolves 9 TypeScript any type warnings, improves type safety across
entity selection components, and removes deprecated database migration code.
2025-07-04 08:06:08 +00:00
f85a912b0d some fixes to the gifted-dialog logic 2025-06-29 18:18:18 -06:00
Jose Olarte III
e74d7c260f Various aesthetic improvements and optimizations 2025-06-27 21:59:19 +08:00
Jose Olarte III
bb1cca65b6 Add project-to-project case 2025-06-26 18:52:52 +08:00
Jose Olarte III
f38cbd8d95 Merge branch 'gifting-ui-2025-05' into gifting-periphery-improvements 2025-06-26 15:27:55 +08:00
ad0773b3fc adjust grammar for recording receipt 2025-06-25 20:51:57 -06:00
Jose Olarte III
dc537ccf00 Unit codes pulled from util.ts 2025-06-25 21:28:25 +08:00
Jose Olarte III
b5a0503f7c Describe firstStep variable 2025-06-25 21:17:11 +08:00
Jose Olarte III
12c2f1ba61 Better handling of No-name and Unnamed entities 2025-06-25 21:15:05 +08:00
Jose Olarte III
153b7f619b Changed currentStep to boolean 2025-06-25 17:38:33 +08:00
Jose Olarte III
485b41ebec Style "unnamed" entity 2025-06-25 17:35:01 +08:00
Jose Olarte III
89f56e232e Merge branch 'master' into gifting-periphery-improvements 2025-06-24 16:20:07 +08:00
Matthew Raymer
d359263704 feat: enhance GenericVerifiableCredential interface with explicit optional properties
- Add name, description, and agent as optional properties to GenericVerifiableCredential
- Improve type safety and IntelliSense for common claim properties
- Maintain backward compatibility with existing code
- Reduce need for type assertions when accessing claim properties
2025-06-23 10:30:08 +00:00
Matthew Raymer
ebc241eba0 WIP: restore database migration system and improve error handling
- Restore runMigrations functionality for database schema migrations
- Remove indexedDBMigrationService.ts (was for IndexedDB to SQLite migration)
- Recreate migrationService.ts and db-sql/migration.ts for schema management
- Add proper TypeScript error handling with type guards in AccountViewView
- Fix CreateAndSubmitClaimResult property access in QuickActionBvcBeginView
- Remove LeafletMouseEvent from Vue components array (it's a type, not component)
- Add null check for UserNameDialog callback to prevent undefined assignment
- Implement extractErrorMessage helper function for consistent error handling
- Update router to remove database-migration route

The migration system now properly handles database schema evolution
across app versions, while the IndexedDB to SQLite migration service
has been removed as it was specific to that one-time migration.
2025-06-23 08:25:10 +00:00
Jose Olarte III
e78b02fb6e Fix: entity-type identifier validation
- Ensure claims contain only correct and necessary giver and recipient identifiers, as per Endorser.ch documentation
2025-06-20 20:37:14 +08:00
Jose Olarte III
20aab2f58d Feature: giver-recipient validation
- Ensures person-to-person gifting won't allow the same entity as giver and recipient
- Disable user item selection if it would create conflict
- Error messaging fallback
2025-06-20 18:38:35 +08:00
Jose Olarte III
73fd394003 Fix: added context for ContactGiftingView 2025-06-20 15:50:57 +08:00
Jose Olarte III
2a4667b8f8 Giver-recipient controls
- Dialog now shows separate cards for giver and recipient
- Ability to change giver and/or recipient
- Project giver/recipient is locked in ProjectView (context reinforcement)
2025-06-19 21:16:56 +08:00
Jose Olarte III
576879513b Fixed more gifting use cases 2025-06-18 19:58:10 +08:00
12b0c38c63 fix spelling 2025-06-15 12:43:22 -06:00
8c1c6a9c4e fix some result types and refactor types themselves 2025-06-13 21:58:57 -06:00
Jose Olarte III
e23e302695 Fix: pass project info
In GiftingDialog, project information is passed along if:
- Selecting "Show All" to go to ContactGiftingView
- Selecting "Photos and Other Options" to go to GiftedDetailsView
2025-06-13 20:52:26 +08:00
Jose Olarte III
bf7bb3209a Feature: Project Gifting
- Gifting dialog: added ability to pick a project to benefit from
- Project view: modified dialog calls in Project view to toggle between giving to and benefiting from a project
- Project view: removed redundant person selection
- Project view: benefiting from a project locks the project selection in dialog to enforce context.
2025-06-12 20:50:27 +08:00
Jose Olarte III
8eb9ea6ce5 Fix: Conditional show-all link
- Only show "Show All" when user has contacts
2025-06-12 14:34:00 +08:00
Jose Olarte III
b049ab0c28 Merge branch 'master' into gifting-ui-2025-05 2025-06-11 19:10:59 +08:00
4327a5175c fix more logic for tests (cherry-picked from 83acb028c7) 2025-06-07 17:42:06 -06:00
8c42166d36 fix some incorrect logic & things AI hallucinated 2025-06-07 17:39:10 -06:00
8092d1c576 convert all remaining DB writes & reads to SQL (with successful registration & claim) 2025-05-27 21:07:24 -06:00