fix: epoch-millis DB converter + biometric from onResume
Sync change detection: - DbConverters was using epochSecond but comparisons used epochMilli — every file appeared modified on every scan, causing full re-sync each time - DB migration 2→3 clears sync_file_states (all stored timestamps wrong) - First sync after upgrade re-learns state; subsequent syncs skip unchanged files Biometric: - Move prompt trigger from LaunchedEffect to onResume() — guarantees the activity is in RESUMED state when authenticate() is called - Add bestAuthenticators(): tries BIOMETRIC_STRONG|DEVICE_CREDENTIAL first, falls back to BIOMETRIC_WEAK|DEVICE_CREDENTIAL for side-sensor phones - canAuthenticate() now accepts either strong or weak+credential - onAuthenticationError always shows Unlock button (no infinite retry loop) - isLocked/showRetry are Activity-level state, no need for Compose remember Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -21,9 +21,8 @@ object AppModule {
|
||||
@Provides @Singleton
|
||||
fun provideDatabase(@ApplicationContext ctx: Context): SyncDatabase =
|
||||
Room.databaseBuilder(ctx, SyncDatabase::class.java, "syncflow.db")
|
||||
// Only fall back to destructive migration for very old dev builds (v1).
|
||||
// All future version bumps must include a proper Migration object.
|
||||
.fallbackToDestructiveMigrationFrom(1)
|
||||
.addMigrations(SyncDatabase.MIGRATION_2_3)
|
||||
.build()
|
||||
|
||||
@Provides fun provideCloudAccountDao(db: SyncDatabase): CloudAccountDao = db.cloudAccountDao()
|
||||
|
||||
Reference in New Issue
Block a user