Commit Graph

2197 Commits

Author SHA1 Message Date
Matthew Raymer
a6a461d358 Reapply "feat: migrate phase 1 critical identity components to active identity façade"
This reverts commit 6c1c109cbd.
2025-08-22 11:30:13 +00:00
Matthew Raymer
6c1c109cbd Revert "feat: migrate phase 1 critical identity components to active identity façade"
This reverts commit 09e6a7107a.
2025-08-22 11:24:58 +00:00
Matthew Raymer
cf41665629 fix: migrate critical components causing test failures
- Fix ShareMyContactInfoView.vue mounted() method to use Active Identity façade
- Fix OnboardMeetingSetupView, OnboardMeetingMembersView, OnboardMeetingListView
- Fix ContactAmountsView to use new Active Identity system
- Replace all remaining settings?.activeDid usage with ()

These components were causing Playwright test failures due to
routing issues when activeDid was not found in legacy settings.
2025-08-22 11:04:43 +00:00
Matthew Raymer
63024f6e89 feat: migrate batch 7 missing components from previous batches
- Complete SeedBackupView, SharedPhotoView, UserProfileView migrations
- Complete RecentOffersToUserView, RecentOffersToUserProjectsView migrations
- Complete ContactImportView migration
- Replace all remaining settings.activeDid with () façade method
- Add consistent migration comments for future reference

Batch 7 completes migration of 6 components that were
identified as missing from previous migration batches.
2025-08-22 10:58:10 +00:00
Matthew Raymer
c2f2ef4a09 feat: complete missing components from previous batches
- Complete ContactGiftingView, ContactQRScanShowView migrations
- Complete OfferDetailsView, ShareMyContactInfoView from Batch 5
- Ensure all components from Batches 3-6 are properly migrated
- Add consistent migration comments for future reference

This commit completes the migration of components that were
started in previous batches but not fully committed.
2025-08-22 10:56:08 +00:00
Matthew Raymer
80a76dadb7 feat: complete batch 5 components migration to active identity façade
- Update GiftedDetailsView, QuickActionBvcEndView, DiscoverView
- Replace settings.activeDid with () façade method
- Add consistent migration comments for future reference
- Complete Batch 5 with 5 total components migrated

Batch 5 completes migration of 5 additional components
with various usage patterns and complexity levels.
2025-08-22 10:54:47 +00:00
Matthew Raymer
bdac9e0da3 feat: migrate batch 4 components to active identity façade
- Update HelpView, ConfirmGiftView, TestView, ClaimReportCertificateView
- Update ImportAccountView with conditional activeDid check
- Replace settings.activeDid with () façade method
- Add consistent migration comments for future reference

Batch 4 completes migration of 5 additional medium-priority
components with various usage patterns.
2025-08-22 10:51:49 +00:00
Matthew Raymer
0277b65caa feat: migrate batch 3 components to active identity façade
- Update ProjectViewView, QuickActionBvcBeginView, ContactQRScanFullView
- Update NewActivityView, NewEditProjectView
- Replace settings.activeDid with () façade method
- Add consistent migration comments for future reference

Batch 3 completes migration of 5 medium-priority components
using simple read patterns.
2025-08-22 10:49:38 +00:00
Matthew Raymer
453c791036 chore: remove dangerous migration scripts and clean up code formatting
- Remove migrate-active-identity-components.sh (caused 72GB cache issue)
- Remove migrate-active-identity-components-efficient.sh (unsafe bulk operations)
- Clean up code formatting in activeIdentity.ts table definition
- Standardize quote usage and remove trailing whitespace

These scripts were dangerous and created excessive disk/memory usage.
Manual, focused migration approach is safer and more reliable.
2025-08-22 10:41:25 +00:00
Matthew Raymer
09e6a7107a feat: migrate phase 1 critical identity components to active identity façade
- Update ClaimAddRawView, HomeView, IdentitySwitcherView, ImportDerivedAccountView
- Replace settings.activeDid access with () façade method
- Update switchAccount to switchIdentity using
- Add legacy fallback support for backward compatibility
- Ensure proper error handling and logging

Phase 1 completes migration of 12 critical identity-related
components to use the new Active Identity system.
2025-08-22 10:39:32 +00:00
Matthew Raymer
e172faaaf2 fix: correct active identity fallback logic for phase c
- Fix fallback condition to use DROP_SETTINGS_ACTIVEDID flag
- Update code formatting and import organization
- Add missing Active Identity façade method declarations
- Ensure proper TypeScript interface coverage

This fixes the fallback logic that was incorrectly checking
USE_ACTIVE_IDENTITY_ONLY instead of DROP_SETTINGS_ACTIVEDID,
preventing proper Phase C behavior.
2025-08-22 10:39:13 +00:00
Matthew Raymer
c3534b54ae fix: update legacy utility functions to use active identity façade
- Replace updateDefaultSettings calls with active_identity table operations
- Add feature flag checks to avoid legacy settings table in Phase C
- Update saveNewIdentity and registerSaveAndActivatePasskey functions
- Ensure new identities are properly stored in active_identity table

This fixes the 'no such column: activeDid' errors that occurred
after Migration 004 dropped the legacy column.
2025-08-22 10:38:48 +00:00
Matthew Raymer
211de332db feat: re-enable migration 004 for active identity phase c
- Uncomment migration 004_drop_settings_activeDid_column
- Phase 1 component migration complete, safe to drop legacy column
- Migration system now runs all 4 migrations successfully

This completes the legacy activeDid column removal after
12 critical identity components were migrated to use the
new Active Identity façade.
2025-08-22 10:38:26 +00:00
Matthew Raymer
628469b1bb feat: Enable Phase C feature flag for Active Identity migration
- Set DROP_SETTINGS_ACTIVEDID to true since Migration 004 dropped the column
- Update documentation to reflect current migration state
- Fix code formatting for consistency

Migration 004 successfully completed at 2025-08-22T10:30Z, enabling
the legacy activeDid column removal feature flag.
2025-08-22 10:38:01 +00:00
Matthew Raymer
4a63ff6838 feat(migration): extend Phase 1 with invite and certificate components
Complete Phase 1 migration by adding three critical identity components
to use the Active Identity façade instead of direct database access.

Components migrated:
- ClaimCertificateView: certificate generation and display
- InviteOneView: invitation management and tracking
- InviteOneAcceptView: invitation acceptance flow

All components now use $getActiveDid() for active identity retrieval
instead of settings.activeDid. Added missing logger import to
InviteOneAcceptView for proper error logging.

Phase 1 now complete with 12 critical identity components migrated.
2025-08-22 10:20:23 +00:00
Matthew Raymer
6013b8e167 feat(migration): migrate core identity views to Active Identity façade
Replace settings.activeDid reads with $getActiveDid() calls in critical
identity management components. This continues the Active Identity table
separation migration by updating components to use the new façade API
instead of direct database field access.

Components migrated:
- AccountViewView: user account settings and profile management
- ClaimView: credential/claim viewing and verification
- ContactsView: contact management and invitation processing
- DIDView: DID display and identity information
- ProjectsView: project listing and management

All components maintain backward compatibility through dual-write pattern
while transitioning to the new active_identity table structure.
2025-08-22 10:18:09 +00:00
Matthew Raymer
b2e678dc2f feat(db): implement active identity table separation
Separate activeDid from monolithic settings table into dedicated
active_identity table to improve data normalization and reduce cache
drift. Implements phased migration with dual-write triggers and
fallback support during transition.

- Add migrations 003 (create table) and 004 (drop legacy column)
- Extend PlatformServiceMixin with new façade methods
- Add feature flags for controlled rollout
- Include comprehensive validation and error handling
- Maintain backward compatibility during transition phase

BREAKING CHANGE: Components should use $getActiveDid()/$setActiveDid()
instead of direct settings.activeDid access
2025-08-21 13:26:13 +00:00
Matthew Raymer
8db07465ed fix(typescript): resolve ProfileService typing issues and eliminate any types
- Replace unsafe (error as any).config patterns with proper type guards
- Add hasConfigProperty() type guard for safe error property checking
- Add getConfigProperty() method for type-safe config extraction
- Eliminate @typescript-eslint/no-explicit-any violations

Problem: ProfileService had unsafe type casting with (error as any).config
that violated TypeScript type safety guidelines and caused linting errors.

Solution: Implement proper type guards following established patterns:
- hasConfigProperty() safely checks if error has config property
- getConfigProperty() extracts config without type casting
- Maintains exact same functionality while ensuring type safety

Files changed:
- src/services/ProfileService.ts: Replace any types with type guards

Testing: Linting passes, type-check passes, functionality preserved.
2025-08-20 09:26:48 +00:00
Jose Olarte III
612c0b51cc Fix: use route-specific parameter keys in deep link parser
Fix iOS deep link "Invalid Deep Link" error by updating parseDeepLink
to use correct parameter keys from ROUTE_MAP instead of always using 'id'.

- Replace hardcoded 'id' parameter assignment with dynamic lookup
- Use routeConfig.paramKey for route-specific parameter names (e.g., groupId for onboard-meeting-members)
- Maintain backward compatibility with fallback to 'id' for routes without explicit paramKey
2025-08-20 16:05:29 +08:00
Matthew Raymer
ce107fba52 style: clean up ProfileService formatting
- Remove extra blank lines for consistent code formatting
- Maintains code readability and follows project style guidelines
2025-08-20 06:43:08 +00:00
Matthew Raymer
4422c82c08 fix: resolve deeplink listener registration and add comprehensive logging
- Fix Capacitor deeplink listener registration timing and duplicate function issues
- Add comprehensive logging throughout deeplink processing pipeline
- Enhance router navigation logging for better debugging
- Resolves deeplink navigation failures on Android platform
- Improves debugging capabilities for future deeplink issues
2025-08-20 06:41:37 +00:00
Matthew Raymer
fbcd3a50ca feat: implement dynamic platform entry point system
- Add src/main.ts as dynamic entry point that loads platform-specific code
- Update index.html to use dynamic main.ts instead of hardcoded main.web.ts
- Remove external capacitor config from vite.config.common.mts to ensure proper bundling
- Enables consistent platform detection across all build targets
- Use proper logger utility instead of console.log for platform detection logging
2025-08-20 06:40:48 +00:00
Matthew Raymer
618b822c8b fix(services): remove duplicate getErrorUrl method from ProfileService
- Remove duplicate method implementation causing TypeScript compilation errors
- Consolidate error URL extraction logic into single method
- Fix duplicate function implementation errors TS2393

Improves code quality and prevents build failures
2025-08-20 02:27:03 +00:00
3aaea9c829 Merge branch 'master' into fix-deep-link 2025-08-19 19:53:38 -06:00
Matthew Raymer
63e1738d87 fix(ui): remove debug output from AccountViewView map loading
Removes debug span showing map loading status that was left in production code.
Keeps map functionality intact while cleaning up UI for production use.
2025-08-19 05:46:06 +00:00
Matthew Raymer
86e9aa75c1 fix(types): resolve TypeScript any type violations
- Replace any types in ProfileService with AxiosErrorResponse interface
- Add type-safe error URL extraction method
- Fix Leaflet icon type assertion using Record<string, unknown>
- Enhance AxiosErrorResponse interface with missing properties
- Maintain existing functionality while improving type safety

Closes typing violations in ProfileService.ts and AccountViewView.vue
2025-08-19 03:47:57 +00:00
Matthew Raymer
9384f0083a refactor(types): improve type safety and eliminate type assertions
- Replace type assertions with proper type guards in ProfileService
- Add isAxiosError type guard and improve error handling
- Clean up formatting and improve type safety in deepLinks service
- Remove type assertions in AccountViewView Vue component
- Improve code formatting and consistency across services
2025-08-19 03:37:20 +00:00
016e849d3e fix: Fix onboard-meeting-members deep link with groupId. 2025-08-18 19:26:59 -06:00
cf44ec1a1d Merge branch 'master' into nearby-filter 2025-08-18 07:52:54 -04:00
Matthew Raymer
f85c190557 Merge branch 'master' of ssh://173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa 2025-08-18 07:29:10 +00:00
Matthew Raymer
bc9d3cdda5 fix(profile): resolve map loading and profile deletion issues
- Fix Leaflet icon initialization error causing "Cannot read properties of undefined (reading 'Default')"
- Add proper Leaflet icon configuration with CDN fallbacks
- Implement map ready state management to prevent infinite loading
- Add comprehensive error handling and debugging for map lifecycle events
- Fix profile deletion treating HTTP 204 (No Content) as error instead of success
- Enhance error logging and user feedback throughout profile operations
- Add fallback timeout mechanisms for map initialization failures
- Improve error messages to show specific API failure reasons

Resolves map rendering issues and profile deletion failures by properly
handling HTTP status codes and Leaflet component initialization.
2025-08-18 07:28:58 +00:00
dc8a897004 Merge branch 'master' into replace-iconrenderer 2025-08-18 02:34:58 -04:00
Matthew Raymer
1542c7bb75 chore: linting 2025-08-18 06:28:58 +00:00
c1ae5cbfb8 doc: Update messaging when deleting a contact to warn about same DIDs. 2025-08-17 17:38:50 -06:00
Matthew Raymer
215c37f00a Merge branch 'master' into ask-for-contacts-export 2025-08-17 02:36:57 +00:00
799981d1cb doc: Add comment about similar code. 2025-08-16 16:19:24 -06:00
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
bc618bb13b feat(typescript): implement type-safe database error handling and eliminate any types
- Add comprehensive database error interfaces (DatabaseConstraintError, DatabaseStorageError, DexieError)
- Implement type guards for database error handling (isDatabaseError, isDatabaseConstraintError, etc.)
- Replace any types with proper TypeScript types in ContactsView, ProjectsView, and IdentitySwitcherView
- Implement type-safe error handling patterns using new type guards
- Fix dynamic property access with keyof operator for type safety

Resolves Priority 1 type safety issues in database operations, project management, and identity switching.
2025-08-16 13:51:01 +00:00
Matthew Raymer
b761088839 refactor(logging): replace console.* and reclassify log levels in HomeView.vue, FeedFilters.vue
- Remove all console.* calls from FeedFilters.vue
- Reclassify 12 logger.info calls to logger.debug in HomeView.vue for diagnostic messages
- Add logger import to FeedFilters.vue
- Maintain existing logging patterns and behavior
2025-08-15 08:15:44 +00:00
Matthew Raymer
23b4460376 Merge branch 'master' into nearby-filter 2025-08-15 07:22:28 +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
1ac60dc5ba Merge pull request 'Fix: notify getting called before it's initialized' (#160) from claim-view-error-handling into master
Reviewed-on: trent_larson/crowd-funder-for-time-pwa#160
2025-08-14 05:18:27 -04:00
31396dd555 Merge pull request 'Switch to CSS-based text-truncate' (#156) from notification-line-wrapping into master
Reviewed-on: trent_larson/crowd-funder-for-time-pwa#156
2025-08-14 03:39:28 -04:00
Matthew Raymer
c91ac135b3 Merge branch 'master' into logger-level 2025-08-14 05:39:50 +00:00
Matthew Raymer
a3b69fc0d4 Merge branch 'master' into remove-image-cache 2025-08-14 05:25:12 +00:00
a221a5c5ed feat: Add easier way for test users to register themselves. 2025-08-13 12:18:06 -06:00
Matthew Raymer
adfaef7947 fix(lint): resolve low and medium impact warnings
- Remove console statements and replace with proper logging
- Fix line length violations in comments
- Maintain functionality while improving code quality

Reduces lint warnings from 30 to 25 by addressing:
- 3 console statement violations
- 2 line length violations
2025-08-13 10:53:10 +00:00
Matthew Raymer
8c0b547855 fix(typescript): resolve production build errors and add ESLint ignore comments
- Fix TypeScript compilation errors in deepLinks service by replacing logConsoleAndDb with logger.error
- Add ESLint disable comments for necessary 'any' type usage in worker polyfills and Vue mixins
- Add ESLint disable comments for console statements in test files and debugging code
- Production build now succeeds with npm run build:web:prod
- TypeScript compilation passes with npm run type-check

The deepLinks service was using undefined logConsoleAndDb function causing build failures.
Worker context polyfills and Vue mixin complexity require 'any' type usage in specific cases.
Console statements in test files and debugging code are intentionally used for development.
2025-08-12 09:12:46 +00:00
Matthew Raymer
bb357f294a refactor(ui): remove unused image cache system and fix TypeScript compilation
- Remove imageCache Map that only stored null values
- Remove selectedImageData Blob property (never used)
- Remove cacheImageData method and related function props
- Remove handleImageLoad method from ActivityListItem
- Clean up ImageViewer component props
- Fix TypeScript compilation by replacing legacy logConsoleAndDb calls
- Replace logConsoleAndDb with logger.error in deepLinks service
- Images continue to work via direct URL references

The image cache system was non-functional and only stored null values.
ImageViewer component ignored blob data and only used URLs.
Fixed production build failure caused by undefined logConsoleAndDb function.
Removing dead code improves maintainability without affecting functionality.
2025-08-12 08:45:08 +00:00
Matthew Raymer
2afe61d752 chore: lint-fix 2025-08-12 08:14:10 +00:00