# NewEditProjectView.vue Pre-Migration Audit ## Component Overview - **File**: `src/views/NewEditProjectView.vue` - **Size**: 844 lines (Very High Complexity) - **Purpose**: Project creation and editing interface - **Migration Target**: Enhanced Triple Migration Pattern ## Database Operations Analysis ### Phase 1: Database Migration Requirements **Current databaseUtil Usage:** 1. `databaseUtil.retrieveSettingsForActiveAccount()` - Lines 282, 705 - **Migration**: → `this.$accountSettings()` - **Usage**: Get active DID, API server, and advanced settings - **Context**: Component initialization and partner API calls **Additional Database Operations:** - `retrieveAccountCount()` - Line 281 - `retrieveFullyDecryptedAccount()` - Line 667 - These are already using util functions but need PlatformServiceMixin integration ### Phase 2: SQL Abstraction Assessment **Status**: ✅ No raw SQL queries identified - Component uses high-level database utilities - No direct SQL statements requiring abstraction ### Phase 3: Notification Migration Analysis **Current Notification Patterns** (16 total notifications): 1. **Error Notifications** (10 instances): - Account loading errors (Line 260) - Project loading errors (Line 336) - Image deletion errors (Lines 403, 428) - Location validation errors (Line 460) - Date validation errors (Lines 478, 494) - Partner sending errors (Lines 568, 728, 753) - Claim saving errors (Line 636) 2. **Success Notifications** (3 instances): - Project saved successfully (Line 535) - Sent to partner services (Line 733) 3. **Confirmation Dialogs** (2 instances): - Image deletion confirmation (Line 350) - Location marker erasure (Line 788) 4. **Info Notifications** (1 instance): - Nostr partner information (Line 812) **Migration Requirements:** - Extract all notification messages to constants - Implement helper system for consistent timeouts - Standardize error message formats ### Phase 4: Template Streamlining Assessment **Template Complexity**: High - Multiple complex inline expressions **Candidates for Computed Properties:** 1. **Button State Management**: - `isHiddenSave` and `isHiddenSpinner` logic - Save button classes and states 2. **Form Validation States**: - Date/time input validation - Location validation - Agent DID validation warning 3. **Dynamic Content Display**: - Timezone display formatting - Character count for description - Image display and deletion logic 4. **Map and Location Logic**: - Map marker visibility - Location inclusion state - Coordinate validation ## Component Feature Analysis ### Core Features - **Project CRUD Operations**: Create, read, update project ideas - **Rich Form Fields**: Name, description, website, dates, location - **Image Management**: Upload, display, delete project images - **Location Integration**: Interactive map with marker placement - **Partner Integration**: Trustroots and TripHopping sharing - **Validation Systems**: Date/time, location, form validation - **State Management**: Loading states, error handling ### External Dependencies - **Leaflet Maps**: Geographic location selection - **Axios**: API communication - **Luxon**: Date/time manipulation - **Nostr Tools**: Cryptographic signing for partners - **Image API**: Image upload and deletion ### Technical Complexity Indicators - **16 notification calls** requiring standardization - **Complex state management** with multiple loading states - **External API integration** with error handling - **Cryptographic operations** for partner sharing - **Map integration** with interactive features - **Form validation** with multiple field types ## Migration Complexity Assessment ### Complexity Rating: **Very High** - **Component Size**: 844 lines - **Database Operations**: 3 patterns requiring migration - **Notification Patterns**: 16 calls requiring standardization - **Template Complexity**: Multiple candidates for computed properties - **External Dependencies**: High integration complexity ### Estimated Migration Time - **Conservative Estimate**: 45-60 minutes - **Optimistic Estimate**: 35-45 minutes - **High Estimate**: 60-75 minutes ### Risk Factors 1. **High Line Count**: Large component with many interconnected features 2. **Complex State Management**: Multiple loading and error states 3. **External Integrations**: Map, image, and partner API dependencies 4. **Cryptographic Operations**: Nostr signing and key management 5. **Form Validation**: Multiple validation patterns requiring careful handling ## Migration Strategy ### Phase 1: Database Migration 1. Add `PlatformServiceMixin` to mixins array 2. Replace `databaseUtil.retrieveSettingsForActiveAccount()` → `this.$accountSettings()` 3. Ensure other database utilities work with mixin integration 4. Add comprehensive JSDoc documentation ### Phase 2: SQL Abstraction - ✅ No raw SQL queries to migrate - Verify service layer integration works correctly ### Phase 3: Notification Migration 1. Import notification constants from `@/constants/notifications` 2. Implement notification helper system 3. Replace all 16 `$notify` calls with standardized helpers 4. Use appropriate timeout constants for different message types ### Phase 4: Template Streamlining 1. Extract button state logic to computed properties 2. Create validation state computed properties 3. Implement display formatting computed properties 4. Simplify map and location logic ## Pre-Migration Checklist - [ ] Component structure analyzed - [ ] Database operations identified - [ ] Notification patterns catalogued - [ ] Template complexity assessed - [ ] Migration strategy defined - [ ] Risk factors identified - [ ] Time estimates calculated ## Next Steps 1. Begin Phase 1: Database Migration 2. Add PlatformServiceMixin integration 3. Replace databaseUtil calls with mixin methods 4. Proceed through remaining phases systematically ## Notes - Component is feature-rich with significant complexity - Multiple external dependencies require careful handling - Strong candidate for computed property extraction - Comprehensive testing will be required post-migration