finish SwiftData migration with @Query views
- Drive chat list, timeline and forward picker from SwiftData @Query instead of AppModel's in-memory arrays; inject the per-account ModelContext from RootView with an in-memory fallback. - Physically delete locally deleted messages (context.delete) and purge rows marked deleted by older builds on store open, so @Query views never resurrect them. - Delete the legacy JSON snapshot only after a successful import save and restore the completeUntilFirstUserAuthentication data protection attribute on the store file. - Mirror the old ChatArchive tolerant decoding in LegacyArchiveImporter so snapshots from older schema versions (missing reactions, isGroupMessage, roster fields) still import. - Cover the new behaviour in ArchiveStoreTests and guard it with new verify.sh invariants; update AGENTS.md, ARCHITECTURE.md and SECURITY.md.
This commit is contained in:
1 parent
277d8654c3
commit
2884810ec4
16 files changed
+653
-65
No files matched your search
@@ -8,11 +8,17 @@ and the Martin / MartinOMEMO libraries. The Xcode project is generated from
|
||||
|
||||
- `Sources/App/` — iOS/macOS app entry point (`LumaApp.swift`).
|
||||
- `Sources/Shared/` — shared code:
|
||||
- `Models/` — value types and pure policy enums (`ChatMessage`,
|
||||
`ArchiveSyncPagination`, `ChatTypingPolicy`, …).
|
||||
- `UI/` — SwiftUI views and components.
|
||||
- `Models/` — value types and pure policy enums (`ArchiveSyncPagination`,
|
||||
`ChatTypingPolicy`, …) plus the SwiftData `@Model` classes
|
||||
(`ChatMessage`, `Conversation`).
|
||||
- `UI/` — SwiftUI views; chat list, timeline and forward picker read
|
||||
SwiftData through `@Query` (`MainChatView`, `ChatView`,
|
||||
`ForwardMessageView`).
|
||||
- `XMPP/` — `XMPPService` (MAM/OMEMO/MUC), `LumaCallEngine`, OMEMO store.
|
||||
- `Persistence/` — `ChatArchive` (JSON snapshot), preferences.
|
||||
- `Persistence/` — `ArchiveStore` (per-account SwiftData container),
|
||||
`ArchiveMetadataRecord` (durable MAM checkpoint metadata),
|
||||
`LegacyArchiveImporter` (one-time legacy JSON snapshot migration),
|
||||
preferences.
|
||||
- `Services/`, `Security/` — media, notifications, credentials.
|
||||
- `Sources/Watch/` — single-target watchOS app.
|
||||
- `Tests/` — XCTest unit tests.
|
||||
|
||||
Reference in new issue
Block a user