Commit Graph

67 Commits

Author SHA1 Message Date
Jose Olarte III
756688bf75 feat: restored TopMessage
- Added back TopMessage tag, placed inside #Content for better positioning
- Styled TopMessage for better visibility
2025-10-06 18:42:05 +08:00
Jose Olarte III
be8230d046 refactor: standardize view headings across all components
- Add consistent view heading IDs and structure
- Add consistent help buttons and back navigation
- Improve spacing and typography consistency
2025-10-03 21:49:35 +08:00
Matthew Raymer
afe0f5e019 Merge branch 'master' into active_did_redux 2025-09-16 08:22:59 +00:00
Jose Olarte III
4c218c4786 feat: migrate all clipboard operations from useClipboard to ClipboardService
- Replace useClipboard with platform-agnostic ClipboardService across 13 files
- Add proper error handling with user notifications for all clipboard operations
- Fix naming conflicts between method names and imported function names
- Ensure consistent async/await patterns throughout the codebase
- Add notification system to HelpView.vue for user feedback on clipboard errors
- Remove unnecessary wrapper methods for cleaner code

Files migrated:
- View components: UserProfileView, QuickActionBvcEndView, ProjectViewView,
  InviteOneView, SeedBackupView, HelpView, AccountViewView, DatabaseMigration,
  ConfirmGiftView, ClaimView, OnboardMeetingSetupView
- Utility functions: libs/util.ts (doCopyTwoSecRedo)
- Components: HiddenDidDialog

Naming conflicts resolved:
- DatabaseMigration: copyToClipboard() → copyExportedDataToClipboard()
- ShareMyContactInfoView: copyToClipboard() → copyContactMessageToClipboard() → removed
- HiddenDidDialog: copyToClipboard() → copyTextToClipboard()
- ClaimView: copyToClipboard() → copyTextToClipboard()
- ConfirmGiftView: copyToClipboard() → copyTextToClipboard()

This migration ensures reliable clipboard functionality across iOS, Android,
and web platforms with proper error handling and user feedback.

Closes: Platform-specific clipboard issues on mobile devices
2025-09-12 14:33:09 +08:00
Matthew Raymer
f55ef85981 fix: from merge 2025-09-08 11:38:51 +00:00
Matthew Raymer
d9569922eb docs: merge notification system docs into single Native-First guide
- Consolidate 5 notification-system-* files into doc/notification-system.md
- Add web-push cleanup guide and Start-on-Login glossary entry
- Configure markdownlint for consistent formatting
- Remove web-push references, focus on native OS scheduling

Reduces maintenance overhead while preserving all essential information
in a single, well-formatted reference document.
2025-09-08 11:36:59 +00:00
Matthew Raymer
4c761d8fd5 feat(db)!: complete ActiveDid migration to active_identity table
Migrate all 34 Vue components from settings.activeDid to $getActiveIdentity()
pattern. This completes the database architecture improvement that separates
identity selection from user preferences and prevents data corruption.

- Replace this.activeDid = settings.activeDid with $getActiveIdentity() calls
- Add ESLint ignore comments for TypeScript type assertions
- Update migration plan documentation to reflect completion
- All components tested with passing results

BREAKING CHANGE: Components now use active_identity table as single source
of truth for activeDid values instead of settings table
2025-09-04 07:28:26 +00:00
Jose Olarte III
1eeb013638 refactor(claims): extract offer fulfillment logic to utility function
Created extractOfferFulfillment utility in libs/util.ts to handle both
array and single object cases for fulfills field. Updated ClaimView and
ConfirmGiftView to use the shared utility, eliminating code duplication
and improving maintainability.
2025-09-01 21:24:46 +08:00
Jose Olarte III
3e5e2cd0bb fix(claims): handle single Offer object in fulfills field for ConfirmGiftView
Updated extractOfferFulfillment to support both array and single object
cases for the fulfills field, matching the fix applied to ClaimView.
Now handles when fulfills contains a single Offer object with @type "Offer".
2025-09-01 21:18:08 +08:00
Jose Olarte III
e5ad71505c Chore: move function to serverUtil
- capitalizeAndInsertSpacesBeforeCapsWithAPrefix() defined in two places, unified and moved to endorserServer.ts
- Use capitalizeAndInsertSpacesBeforeCaps() that's already defined in endorserServer.ts
2025-08-18 17:47:33 +08:00
19f0c270d3 chore: Rename variable for clarity 2025-08-17 14:13:50 -06:00
Jose Olarte III
693173f09d UI: wording and spacing consistencies
- Added grouped conditional spacing to ensure a top margin before fulfills links
- Brought over icons and wording from ConfirmGiftView to ClaimView
2025-08-14 20:12:28 +08:00
Jose Olarte III
a1388539c1 Fix: improve offer fulfillment detection in ClaimView
- Remove outdated fulfillsType logic that was checking for non-PlanAction items
- Keep only the new offer fulfillment extraction from fullClaim.fulfills array
- Apply consistent changes to both ClaimView and ConfirmGiftView

This ensures that "Fulfills Offer..." links appear correctly when gives are created from offers, by directly parsing the fulfills array instead of relying on API-processed fields that only capture the first relationship.
2025-08-14 18:53:12 +08:00
Matthew Raymer
53282b4237 fix: resolve duplicate APP_SERVER import declarations
Remove duplicate APP_SERVER imports in ContactsView.vue and ClaimView.vue that were causing compilation errors during testing. The duplicate imports occurred when both files had APP_SERVER imported from constants/app and also assigned as class properties.

- ContactsView.vue: Remove duplicate import, keep class property assignment
- ClaimView.vue: Remove duplicate import, keep class property assignment
- Fixes Vite compilation errors that were blocking test execution
- 33/38 tests now pass successfully

This resolves the "Identifier 'APP_SERVER' has already been declared" errors that were preventing the development server from running properly.
2025-07-24 06:30:16 +00:00
Matthew Raymer
7ab595cb60 Implement configurable domain names for all copy link functionality
- Add PROD_SHARE_DOMAIN constant using existing AppString.PROD_PUSH_SERVER
- Update all 9 components/services to use configurable domain instead of hardcoded URLs
- Fix localhost issues in development mode for all sharing functionality
- Ensure all copy link buttons generate production URLs regardless of environment
- Add proper TypeScript imports and component properties for template access
- Maintain existing functionality while improving maintainability and consistency

Files updated:
- src/constants/app.ts (new constant)
- src/views/ClaimView.vue (claim + certificate links)
- src/views/ProjectViewView.vue (project links)
- src/views/ConfirmGiftView.vue (confirm gift links)
- src/components/HiddenDidDialog.vue (hidden DID links)
- src/views/UserProfileView.vue (profile links)
- src/views/InviteOneView.vue (invite links)
- src/views/ContactsView.vue (contact import links)
- src/views/OnboardMeetingSetupView.vue (meeting links)
- src/libs/endorserServer.ts (contact import confirm links)

Documentation added:
- docs/domain-configuration.md (comprehensive guide)
- README.md (quick reference section)

Security audit:  All changes maintain existing security model
Testing:  All linting errors resolved, only warnings remain
Performance:  No performance impact, improves user experience
2025-07-21 07:47:34 +00:00
Matthew Raymer
0d75dd6262 Migrate DiscoverView.vue to Enhanced Triple Migration Pattern
- Replaced all databaseUtil and direct PlatformServiceFactory usage with PlatformServiceMixin methods
- Removed all raw SQL queries from the component
- Centralized all notification messages in src/constants/notifications.ts
- Replaced direct $notify calls with notification helpers and TIMEOUTS constants
- Streamlined template logic (tab classes via computed properties)
- Updated migration documentation and security audit
- Ran lint-fix; no errors remain

Ready for human testing and validation.
2025-07-08 12:19:09 +00:00
Matthew Raymer
6857cb02b5 Migrate ConfirmGiftView.vue and ClaimReportCertificateView.vue to PlatformServiceMixin
- ConfirmGiftView.vue: Complete triple migration (11 minutes, EXCELLENT execution)
  - Replaced databaseUtil and PlatformServiceFactory with PlatformServiceMixin methods
  - Migrated 6 notification calls to helper methods with centralized constants
  - Added 5 new notification constants for gift confirmation workflow
  - All linting errors resolved, human tested and validated

- ClaimReportCertificateView.vue: Already migrated, marked as human tested
  - Component was already fully compliant with modern patterns
  - Human testing completed and documented
  - No additional migration work required

- Updated migration status: 47% complete (43/92 components)
- Enhanced notification constants with proper message extraction
- All components follow Enhanced Triple Migration Pattern
- Security audit: SQL injection prevention, standardized error handling
- Performance: Migration time reduced by 20% through improved processes

Migration progress: 47% complete with perfect human testing record (4/4 components)
2025-07-08 12:10:19 +00: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
3c83092fc1 fix linting 2025-06-18 16:33:55 -06:00
1f4a8ca9ff fix all copies for externally-shared links to redirected deep links 2025-06-18 15:53:16 -06:00
8c1c6a9c4e fix some result types and refactor types themselves 2025-06-13 21:58:57 -06:00
5a62c965df fix problems with :href links causing the app to reload for DB errors on mobile 2025-06-13 20:39:12 -06:00
f79568cc5d remove relative URL references in different target because mobile chokes 2025-06-08 16:55:03 -06:00
8092d1c576 convert all remaining DB writes & reads to SQL (with successful registration & claim) 2025-05-27 21:07:24 -06:00
3f691ef880 add SQL DB access to everywhere we are using the DB, up to the "C" files 2025-05-27 01:27:04 -06:00
Matthew Raymer
acb003c6b3 fix: improve DeepLinkErrorView code quality
- Fix TypeScript property error by using validRoutes constant
- Replace console.log with logger utility
- Fix string quote consistency
- Improve v-for loop variable naming
- Add proper type safety for route parameters

Technical Changes:
- Use VALID_DEEP_LINK_ROUTES constant for route list
- Add logger import and replace console.log calls
- Standardize string quotes to double quotes
- Rename v-for variable to avoid shadowing
- Add proper type assertions for route params

This improves code quality and type safety in the
DeepLinkErrorView component while maintaining consistent
coding standards.
2025-03-20 12:04:27 +00:00
6c538de762 fix 'give' query and restore confirmClaim method 2025-03-16 17:06:01 -06:00
Matthew Raymer
c9536dd643 refactor: Replace console logging with logger utility
- Add logger import across multiple view components
- Replace console.error/warn/log with logger methods
- Update error handling to use structured logging
- Improve type safety for error objects
- Add crypto-browserify polyfill for browser environment

The changes improve logging by:
1. Using consistent logging interface
2. Adding structured error logging
3. Improving error type safety
4. Centralizing logging configuration
5. Fixing browser compatibility issues

Affected files:
- Multiple view components
- vite.config.ts
- Build configuration
2025-03-11 09:35:55 +00:00
22da1106a8 fix linting 2025-03-10 09:10:30 -06:00
Matthew Raymer
29d61d2a75 refactor: Improve ConfirmGiftView component organization and error handling
- Split loadClaim into focused methods for better separation of concerns
- Add proper error handling and error messages
- Add JSDoc comments for all methods
- Extract URL parameter handling into dedicated method
- Improve gift confirmation and sharing workflows

The changes improve code maintainability by:
1. Breaking down monolithic methods into smaller, focused functions
2. Adding clear error handling and user feedback
3. Improving method documentation with JSDoc
4. Separating data fetching from processing logic
5. Making component behavior more predictable
2025-03-10 10:50:50 +00:00
Matthew Raymer
3dbb836ae5 style: reorder v-model and v-bind directives
Changes:
- Move v-model directives before other attributes
- Move v-bind directives before event handlers
- Reorder attributes for better readability
- Fix template attribute ordering across components
- Improve eslint rules
- add default vite config for testing (handles nostr error too)
This follows Vue.js style guide recommendations for attribute
ordering and improves template consistency.
2025-02-26 09:27:04 +00:00
Matthew Raymer
03178d35e7 refactor: improve router type safety and usage
- Add explicit Router type imports across views
- Replace $router type casting with proper typing
- Use $router.back() instead of $router.go(-1) for consistency
- Add proper route and router typings to components
- Clean up router navigation methods
- Fix router push/back method calls

This commit improves type safety and consistency in router usage across
the application's view components.
2025-02-26 06:50:08 +00:00
Matthew Raymer
61da40596c fix: improve TypeScript type safety across views
Changes:
- Add proper type annotations for component properties
- Fix null checks with optional chaining
- Add missing interface properties
- Replace any with proper types where possible
- Move interfaces from endorserServer to interfaces/
- Add proper Router and Route typing
- Add default empty string for optional text fields

This improves type safety and reduces TypeScript errors across views.
2025-02-25 11:36:24 +00:00
Matthew Raymer
79ef59c5a9 refactor: migrate interfaces to dedicated directory
Reorganizes TypeScript interfaces into a modular structure:
- Create dedicated interfaces directory with specialized files
- Split interfaces by domain (claims, common, limits, records, user)
- Update imports in endorserServer.ts to use new interface locations
- Replace 'any' types with 'unknown' for better type safety
- Add proper type imports and exports

This improves code organization and maintainability by:
- Centralizing interface definitions
- Reducing file size of endorserServer.ts
- Making interface relationships more explicit
- Improving type safety with stricter types
2025-02-24 11:21:08 +00:00
Matthew Raymer
2a7178db53 Merge changes 2025-02-03 13:27:36 +00:00
9f54286817 fix linting, add to the 10-project timeout 2025-01-29 21:36:27 -07:00
888e87f6c6 add instructions for contacting potential links to hidden people 2025-01-29 21:01:35 -07:00
Matthew Raymer
6903a02df6 Merge fixes 2025-01-11 12:45:43 +00:00
Matthew Raymer
8b77d2b573 Refatored vite.config to be a bit more streamlined before adding alternate build options. This did end up requiring me to remove @ from imports for some reason. Tests came out fine. 2025-01-05 08:38:15 +00:00
d4bb2a35fc add a contact-edit page and allow saving of notes 2025-01-04 16:35:05 -07:00
670c729a37 move extended details under details section in ClaimView, and make that section more similar to ConfirmGiftView 2025-01-04 14:55:20 -07:00
251649e6fe switch the encryption secret from localStorage to IndexedDB (because localStorage gets lost so often) 2024-12-08 19:34:31 -07:00
1714f4d087 refactor some verbiage & look-and-feel 2024-11-30 13:16:58 -07:00
8db7ac3f6f refactor project screen: add action to record a give from it, and add checks to give confirmation buttons 2024-11-28 11:26:51 -07:00
2758af6e6e finish separation of daily reminder message, bump version to 0.3.34 2024-11-24 13:09:40 -07:00
8a61d9df45 various look-and-feel improvements 2024-11-01 20:32:39 -06:00
6f880d0df1 fix bad link to project page, fix improper action on invite-add-contact cancel 2024-10-12 20:55:55 -06:00
9925800fbd allow details on a give for a providing project (so we can attach a picture) 2024-09-30 18:11:07 -06:00
8111b0e5cf modify the settings to allow account-specific settings, eg. for "isRegistered" 2024-09-15 16:30:46 -06:00