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

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

  1. Account Metadata Loading: Uses retrieveAllAccountsMetadata() utility function
  2. Settings Integration: Manages global activeDid setting
  3. Delete Confirmation: Complex modal with callback function
  4. Router Integration: Multiple navigation targets (account, start)
  5. 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

  1. Manual Testing: Test identity switching, deletion, and navigation
  2. Database Testing: Verify settings updates and account deletion
  3. Notification Testing: Test all three notification scenarios
  4. Edge Cases: Test with zero identities, single identity, corrupted data

🔧 Specific Migration Steps

Database Migration Steps

  1. Add PlatformServiceMixin to component
  2. Replace databaseUtil.retrieveSettingsForActiveAccount() with this.$accountSettings()
  3. Replace databaseUtil.updateDefaultSettings() with this.$saveSettings()
  4. Replace PlatformServiceFactory.getInstance().dbExec() with this.$exec()
  5. Remove legacy database imports

Notification Migration Steps

  1. Add notification helpers and constants imports
  2. Replace error notification with this.notify.error()
  3. Replace warning notification with this.notify.warning()
  4. Keep complex delete confirmation as direct $notify() (has callback)
  5. Add constants to src/constants/notifications.ts

Template Streamlining Steps

  1. Extract primary button classes to computed property
  2. Extract secondary button classes to computed property
  3. Extract identity list item classes to computed property
  4. Extract account formatting logic to helper method
  5. Add JSDoc comments for all computed properties

Verification Steps

  1. Test identity list loading and display
  2. Test identity switching (active DID changes)
  3. Test account deletion with confirmation
  4. Test navigation between account/start pages
  5. 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)