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.
 
 
 
 
 
 

8.0 KiB

Active Identity Migration - Phase B Progress

Author: Matthew Raymer Date: 2025-08-22T07:05Z Status: 🚧 IN PROGRESS - Component Migration Active

Objective

Complete Phase B: Component Cutover by updating all Vue components to use the new Active Identity façade methods instead of directly accessing settings.activeDid.

Current Status

Completed

  • Migration Infrastructure: Migrations 003 and 004 implemented
  • Service Façade: PlatformServiceMixin extended with all required methods
  • TypeScript Types: Added missing method declarations to Vue component interfaces
  • Feature Flags: Comprehensive flag system for controlling rollout phases

🔄 In Progress

  • Component Migration: Manually updating critical components
  • Pattern Establishment: Creating consistent migration approach

Pending

  • Bulk Component Updates: 40+ components need migration
  • Testing: Validate migrated components work correctly
  • Performance Validation: Ensure no performance regressions

Migration Progress

Components Migrated (3/40+)

Component Status Changes Made Notes
IdentitySwitcherView.vue Complete - Updated switchIdentity() method
- Added FLAGS import
- Uses $setActiveDid()
Critical component for identity switching
ImportDerivedAccountView.vue Complete - Updated incrementDerivation() method
- Added FLAGS import
- Uses $setActiveDid()
Handles new account creation
ClaimAddRawView.vue Complete - Updated initializeSettings() method
- Uses $getActiveDid()
Reads active DID for claims

Components Pending Migration (37+)

Component Usage Pattern Priority Estimated Effort
HomeView.vue Updated High 5 min
ProjectsView.vue settings.activeDid || "" High 3 min
ContactsView.vue settings.activeDid || "" High 3 min
AccountViewView.vue settings.activeDid || "" High 3 min
InviteOneView.vue settings.activeDid || "" Medium 3 min
TestView.vue settings.activeDid || "" Medium 3 min
SeedBackupView.vue settings.activeDid || "" Medium 3 min
QuickActionBvcBeginView.vue const activeDid = settings.activeDid || "" Medium 3 min
ConfirmGiftView.vue this.activeDid = settings.activeDid || "" Medium 3 min
ClaimReportCertificateView.vue this.activeDid = settings.activeDid || "" Medium 3 min
ImportAccountView.vue settings.activeDid, Medium 3 min
MembersList.vue this.activeDid = settings.activeDid || "" Medium 3 min
ShareMyContactInfoView.vue const activeDid = settings.activeDid || "" Medium 3 min
ClaimView.vue this.activeDid = settings.activeDid || "" Medium 3 min
ImageMethodDialog.vue this.activeDid = settings.activeDid || "" Medium 3 min
DiscoverView.vue settings.activeDid as string Medium 3 min
QuickActionBvcEndView.vue this.activeDid = settings.activeDid || "" Medium 3 min
ContactQRScanFullView.vue this.activeDid = settings.activeDid || "" Medium 3 min
ContactGiftingView.vue this.activeDid = settings.activeDid || "" Medium 3 min
OfferDetailsView.vue this.activeDid = settings.activeDid ?? "" Medium 3 min
NewActivityView.vue this.activeDid = settings.activeDid || "" Medium 3 min
OfferDialog.vue this.activeDid = settings.activeDid || "" Medium 3 min
SharedPhotoView.vue this.activeDid = settings.activeDid Medium 3 min
ContactQRScanShowView.vue this.activeDid = settings.activeDid || "" Medium 3 min
NewEditProjectView.vue this.activeDid = settings.activeDid || "" Medium 3 min
GiftedDialog.vue this.activeDid = settings.activeDid || "" Medium 3 min
HelpView.vue if (settings.activeDid) Medium 3 min
TopMessage.vue settings.activeDid?.slice(11, 15) Medium 3 min
ClaimCertificateView.vue this.activeDid = settings.activeDid || "" Medium 3 min
UserProfileView.vue this.activeDid = settings.activeDid || "" Medium 3 min
OnboardingDialog.vue this.activeDid = settings.activeDid || "" Medium 3 min
RecentOffersToUserView.vue this.activeDid = settings.activeDid || "" Medium 3 min
RecentOffersToUserProjectsView.vue this.activeDid = settings.activeDid || "" Medium 3 min
ContactImportView.vue this.activeDid = settings.activeDid || "" Medium 3 min
GiftedDetailsView.vue this.activeDid = settings.activeDid || "" Medium 3 min

Migration Patterns

Pattern 1: Simple Read Replacement

// Before
this.activeDid = settings.activeDid || "";

// After
this.activeDid = await this.$getActiveDid() || "";

Pattern 2: Write Replacement with Dual-Write

// Before
await this.$saveSettings({ activeDid: newDid });

// After
await this.$setActiveDid(newDid);

// Legacy fallback - remove after Phase C
if (!FLAGS.USE_ACTIVE_IDENTITY_ONLY) {
  await this.$saveSettings({ activeDid: newDid });
}

Pattern 3: FLAGS Import Addition

// Add to imports section
import { FLAGS } from "@/config/featureFlags";

Next Steps

Immediate Actions (Next 30 minutes)

  1. Complete High-Priority Components: Update remaining critical components
  2. Test Migration: Verify migrated components work correctly
  3. Run Linter: Check for any remaining TypeScript issues

Short Term (Next 2 hours)

  1. Bulk Migration: Use automated script for remaining components
  2. Testing: Validate all migrated components
  3. Performance Check: Ensure no performance regressions

Medium Term (Next 1 day)

  1. Phase C Preparation: Enable USE_ACTIVE_IDENTITY_ONLY flag
  2. Legacy Fallback Removal: Remove dual-write patterns
  3. Final Testing: End-to-end validation

Success Criteria

Phase B Complete When

  • All 40+ components use new façade methods
  • No direct settings.activeDid access remains
  • All components pass linting
  • Basic functionality tested and working
  • Performance maintained or improved

Phase C Ready When

  • All components migrated and tested
  • Feature flag USE_ACTIVE_IDENTITY_ONLY can be enabled
  • No legacy fallback usage in production
  • Performance benchmarks show improvement

Risks & Mitigation

High Risk

  • Component Breakage: Test each migrated component individually
  • Performance Regression: Monitor performance metrics during migration
  • TypeScript Errors: Ensure all method signatures are properly declared

Medium Risk

  • Migration Inconsistency: Use consistent patterns across all components
  • Testing Coverage: Ensure comprehensive testing of identity switching flows

Low Risk

  • Backup Size: Minimal backup strategy for critical files only
  • Rollback Complexity: Simple git revert if needed

Tools & Scripts

Migration Scripts

  • scripts/migrate-active-identity-components.sh - Full backup version
  • scripts/migrate-active-identity-components-efficient.sh - Minimal backup version

Testing Commands

# Check for remaining settings.activeDid usage
grep -r "settings\.activeDid" src/views/ src/components/

# Run linter
npm run lint-fix

# Test specific component
npm run test:web -- --grep "IdentitySwitcher"

References


Status: Phase B in progress, 3/40+ components migrated Next Review: After completing high-priority components Maintainer: Development team