Skip to content

Feature/no sardine#784

Merged
prathieshna merged 5 commits into
NEXT-WITHOUT-STORACHAfrom
feature/no-sardine
May 2, 2026
Merged

Feature/no sardine#784
prathieshna merged 5 commits into
NEXT-WITHOUT-STORACHAfrom
feature/no-sardine

Conversation

@prathieshna
Copy link
Copy Markdown

No description provided.

Prathieshna Vekneswaran added 5 commits May 2, 2026 17:36
Remove the `sardine-android` dependency and implement WebDAV functionality (PROPFIND, MKCOL, MOVE, PUT, DELETE) directly using OkHttp and a custom XML parser.

-   **WebDavRepository**: Replaced Sardine's `list` with a manual `PROPFIND` request and `XmlPullParser` to fetch folder contents.
-   **WebDavConduit**:
    -   Migrated single and chunked upload logic to use OkHttp `Request` objects.
    -   Implemented manual WebDAV operations: `headExists`, `headContentLength`, `mkcol`, `move`, and `webdavDelete`.
    -   Improved chunked upload efficiency by using `HEAD` requests instead of `PROPFIND` to check for existing chunks.
    -   Added support for cancelling active network calls.
-   **Conduit**: Wrapped `jobFailed` logic in `NonCancellable` to ensure database updates and event broadcasts complete during service shutdown.
-   **SaveClient**: Removed the `getSardine` helper as it is no longer required.
-   **Dependencies**: Removed `guardianproject-sardine` from Gradle configuration and updated app version to 4.0.15.
- Upgrade AGP to 9.1.1, Compose to 1.11.0, Kotlin to 2.3.21, and Koin to 4.2.1.
- Update various library versions including Datastore, Firebase Crashlytics, Gson, Material3, Media3, Mixpanel, OkHttp, and Tor-Android.
- Remove unused or redundant dependencies and plugins, such as BouncyCastle, Bitcoinj, Guava, Netcipher, and ConstraintLayout.
- Clean up unused library definitions for Picasso, Jsoup, and several Google Play/MLKit components.
Introduce a standalone `SugarToRoomMigrator` object to facilitate the synchronous migration of records from Sugar ORM to Room.

Key changes:
- Implement `migrate()` to sequence the migration of Spaces, Projects, Collections, and Media.
- Add `migrateSpaces()` to map `SugarSpace` to `VaultEntity` and handle credential storage.
- Add `migrateProjects()` to map `SugarProject` to `ArchiveEntity`.
- Add `migrateCollections()` to map `SugarCollection` to `SubmissionEntity`.
- Add `migrateMedia()` to map `SugarMedia` to `EvidenceEntity`, including status mapping.
- Update `MigrationStateEntity` throughout the process to track migration stages.
…tore

Ensures the DataStore is a process-wide singleton for the credential file, preventing conflicts between migration-time and Koin-injected instances.

- Implement a thread-safe `getOrCreateDataStore` pattern in the companion object.
- Update the `dataStore` property to use the shared singleton instance.
- Adjust visibility of internal security constants.
@prathieshna prathieshna merged commit 381971c into NEXT-WITHOUT-STORACHA May 2, 2026
1 check passed
Copy link
Copy Markdown

@github-advanced-security github-advanced-security AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

detekt found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

@prathieshna prathieshna deleted the feature/no-sardine branch May 2, 2026 19:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants