Add contractor sharing feature and move settings to navigation bar

Contractor Sharing:
- Add .casera file format for sharing contractors between users
- Create SharedContractor model with JSON serialization
- Implement ContractorSharingManager for iOS (Swift) and Android (Kotlin)
- Register .casera file type in iOS Info.plist and Android manifest
- Add share button to ContractorDetailView (iOS) and ContractorDetailScreen (Android)
- Add import confirmation, success, and error dialogs
- Create expect/actual platform implementations for sharing and import handling

Navigation Changes:
- Remove Profile tab from bottom tab bar (iOS and Android)
- Add settings gear icon to left side of "My Properties" title
- Settings gear opens Profile/Settings screen as sheet (iOS) or navigates (Android)
- Add property button to top right action bar

Bug Fixes:
- Fix ResidenceUsersResponse to match API's flat array response format
- Fix GenerateShareCodeResponse handling to access nested shareCode property
- Update ManageUsersDialog to accept residenceOwnerId parameter

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Trey t
2025-12-05 22:30:19 -06:00
parent 2965ec4031
commit 859a6679ed
43 changed files with 1848 additions and 148 deletions

View File

@@ -246,6 +246,13 @@
<string name="contractors_delete">Delete Contractor</string>
<string name="contractors_delete_warning">Are you sure you want to delete this contractor? This action cannot be undone.</string>
<string name="contractors_completed_tasks">%1$d completed tasks</string>
<string name="contractors_share">Share Contractor</string>
<string name="contractors_import_title">Import Contractor</string>
<string name="contractors_import_message">Would you like to import this contractor?</string>
<string name="contractors_import_success">Contractor Imported</string>
<string name="contractors_import_success_message">%1$s has been added to your contacts.</string>
<string name="contractors_import_failed">Import Failed</string>
<string name="contractors_shared_by">Shared by: %1$s</string>
<!-- Documents -->
<string name="documents_title">Documents</string>
@@ -423,6 +430,9 @@
<string name="common_yes">Yes</string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>
<string name="common_share">Share</string>
<string name="common_import">Import</string>
<string name="common_importing">Importing...</string>
<!-- Errors -->
<string name="error_generic">Something went wrong. Please try again.</string>