You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
11 KiB
11 KiB
Pre-Migration Feature Audit - IdentitySwitcherView.vue
Component Information
- Component Name: IdentitySwitcherView.vue
- Location:
src/views/IdentitySwitcherView.vue
- Total Lines: 196 lines
- Audit Date: 2025-01-08
- Auditor: Matthew Raymer
📊 Migration Scope Analysis
Database Operations Audit
- Total Database Operations: 3 operations
- Legacy databaseUtil imports: 1 import
- PlatformServiceFactory calls: 1 call
- Raw SQL queries: 1 query (DELETE)
Notification Operations Audit
- Total Notification Calls: 3 calls
- Direct $notify calls: 3 calls
- Legacy notification patterns: 3 patterns
Template Complexity Audit
- Complex template expressions: 2 expressions
- Repeated CSS classes: 2 repetitions
- Configuration objects: 2 objects
🔍 Feature-by-Feature Audit
1. Database Features
Feature: Load Active Account Settings
- Location: Lines 119-121
- Type: Settings retrieval
- Current Implementation:
const settings = await databaseUtil.retrieveSettingsForActiveAccount(); this.activeDid = settings.activeDid || ""; this.apiServer = settings.apiServer || "";
- Migration Target:
this.$accountSettings()
- Verification: Functionality preserved after migration
Feature: Update Active DID Setting
- Location: Lines 140-141
- Type: Settings update
- Current Implementation:
await databaseUtil.updateDefaultSettings({ activeDid: did }); this.$router.push({ name: "account" });
- Migration Target:
this.$saveSettings()
- Verification: Functionality preserved after migration
Feature: Delete Account
- Location: Lines 149-152
- Type: DELETE query
- Current Implementation:
const platformService = PlatformServiceFactory.getInstance(); await platformService.dbExec(`DELETE FROM accounts WHERE id = ?`, [id]);
- Migration Target:
this.$exec()
or specialized account deletion method - Verification: Functionality preserved after migration
2. Notification Features
Feature: Error Loading Accounts
- Location: Lines 130-137
- Type: Danger notification
- Current Implementation:
this.$notify({ group: "alert", type: "danger", title: "Error Loading Accounts", text: "Clear your cache and start over (after data backup).", }, 5000);
- Migration Target:
this.notify.error(CONSTANT.message, TIMEOUTS.LONG)
- Verification: Functionality preserved after migration
Feature: Delete Confirmation Modal
- Location: Lines 143-157
- Type: Confirmation modal with callback
- Current Implementation:
this.$notify({ group: "modal", type: "confirm", title: "Delete Identity?", text: "Are you sure you want to erase this identity?...", onYes: async () => { /* delete logic */ } }, -1);
- Migration Target:
this.notify.confirm()
or keep as direct$notify
(complex modal) - Verification: Functionality preserved after migration
Feature: Cannot Delete Warning
- Location: Lines 160-169
- Type: Warning notification
- Current Implementation:
this.$notify({ group: "alert", type: "warning", title: "Cannot Delete", text: "You cannot delete the active identity. Set to another identity or 'no identity' first.", }, 3000);
- Migration Target:
this.notify.warning(CONSTANT.message, TIMEOUTS.SHORT)
- Verification: Functionality preserved after migration
3. Template Features
Feature: Repeated Button Styling - Primary
- Location: Lines 75-81
- Type: Primary button CSS classes
- Current Implementation:
class="block text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
- Migration Target: Extract to computed property
primaryButtonClasses
- Verification: Functionality preserved after migration
Feature: Repeated Button Styling - Secondary
- Location: Lines 82-87
- Type: Secondary button CSS classes
- Current Implementation:
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-8"
- Migration Target: Extract to computed property
secondaryButtonClasses
- Verification: Functionality preserved after migration
Feature: Identity List Item Classes
- Location: Lines 42-44
- Type: Repeated list item styling
- Current Implementation:
class="flex flex-grow items-center bg-slate-100 rounded-md px-4 py-3 mb-2 truncate cursor-pointer"
- Migration Target: Extract to computed property
identityListItemClasses
- Verification: Functionality preserved after migration
Feature: Account Display Logic
- Location: Lines 126-127
- Type: Complex data processing
- Current Implementation:
this.otherIdentities.push({ id: (acct.id ?? 0).toString(), did: acct.did, });
- Migration Target: Extract to helper method
formatAccountForDisplay()
- Verification: Functionality preserved after migration
🎯 Migration Checklist Totals
Database Migration Requirements
- Replace databaseUtil imports: 1 import → PlatformServiceMixin
- Replace PlatformServiceFactory calls: 1 call → mixin methods
- Replace raw SQL queries: 1 query → service methods
- Update error handling: 0 patterns → mixin error handling
Notification Migration Requirements
- Add notification helpers: Import createNotifyHelpers
- Replace direct $notify calls: 2 simple calls → helper methods
- Add notification constants: 2 constants → src/constants/notifications.ts
- Update notification patterns: 1 complex modal may remain direct $notify
Template Streamlining Requirements
- Extract repeated classes: 3 repetitions → computed properties
- Extract complex expressions: 1 expression → helper method
- Extract configuration objects: 0 objects → Not needed
- Simplify template logic: 3 patterns → methods/computed
📋 Post-Migration Verification Checklist
✅ Database Functionality Verification
- Settings loading works correctly
- Active DID switching functions properly
- Account deletion works and updates list
- Error handling functions for database failures
✅ Notification Functionality Verification
- Error notifications display correctly for account loading failures
- Delete confirmation modal works with proper callback
- Warning notifications show for invalid delete attempts
- All notification timing works as expected
✅ Template Functionality Verification
- Identity list renders correctly with consistent styling
- Button styling is consistent and responsive
- Identity switching (click handlers) work properly
- Active identity highlighting functions correctly
- Trash can icons and actions work properly
- Router navigation to start page works
✅ Integration Verification
- Component loads identity data properly on mount
- Identity switching updates global state correctly
- Router navigation back to account page works
- Data corruption warning displays when appropriate
🚀 Migration Readiness Assessment
Pre-Migration Requirements
- Feature audit completed: All features documented with line numbers
- Migration targets identified: Each feature has clear migration path
- Test scenarios planned: Verification steps documented
- Backup created: Original component backed up
Complexity Assessment
- Simple (15-20 min): Few database operations, minimal notifications
- Medium (20-30 min): Multiple database operations, several notifications
- Complex (45-60 min): Extensive database usage, many notifications, complex templates
Dependencies Assessment
- No blocking dependencies: Component can be migrated independently
- Parent dependencies identified: Used from account settings flow
- Child dependencies identified: Navigates to account and start routes
📝 Notes and Special Considerations
Special Migration Considerations
- Account Metadata Loading: Uses
retrieveAllAccountsMetadata()
utility function - Settings Integration: Manages global activeDid setting
- Delete Confirmation: Complex modal with callback function
- Router Integration: Multiple navigation targets (account, start)
- Data Corruption Handling: Special UI state for corrupted identity data
Risk Assessment
- Medium Risk: Multiple database operations and notification patterns
- Main Risk: Identity switching logic must work correctly after migration
- Mitigation: Thorough testing of identity switch and delete functionality
Testing Strategy
- Manual Testing: Test identity switching, deletion, and navigation
- Database Testing: Verify settings updates and account deletion
- Notification Testing: Test all three notification scenarios
- Edge Cases: Test with zero identities, single identity, corrupted data
🔧 Specific Migration Steps
Database Migration Steps
- Add PlatformServiceMixin to component
- Replace
databaseUtil.retrieveSettingsForActiveAccount()
withthis.$accountSettings()
- Replace
databaseUtil.updateDefaultSettings()
withthis.$saveSettings()
- Replace
PlatformServiceFactory.getInstance().dbExec()
withthis.$exec()
- Remove legacy database imports
Notification Migration Steps
- Add notification helpers and constants imports
- Replace error notification with
this.notify.error()
- Replace warning notification with
this.notify.warning()
- Keep complex delete confirmation as direct
$notify()
(has callback) - Add constants to
src/constants/notifications.ts
Template Streamlining Steps
- Extract primary button classes to computed property
- Extract secondary button classes to computed property
- Extract identity list item classes to computed property
- Extract account formatting logic to helper method
- Add JSDoc comments for all computed properties
Verification Steps
- Test identity list loading and display
- Test identity switching (active DID changes)
- Test account deletion with confirmation
- Test navigation between account/start pages
- Test error scenarios (loading failures)
Estimated Migration Time: 20-30 minutes Complexity Level: Medium Ready for Migration: ✅ Yes Template Version: 1.0 Created: 2025-01-08 Author: Matthew Raymer Status: ✅ MIGRATION COMPLETE (Completed 2025-01-08 in 6 minutes)