replace vault by kasier

This commit is contained in:
m
2026-09-17 07:59:21 +02:00
parent cd4f0179fc
commit f29a3c3617
191 changed files with 956 additions and 927 deletions
+8 -8
View File
@@ -9,10 +9,10 @@ plugins {
}
// Source unique de vérité : VERSION à la racine du dépôt (ex. 0.1.0).
val vaultVersion: String = rootProject.file("../VERSION").readText().trim()
val vaultVersionCode: Int = run {
val parts = vaultVersion.split('.').map { it.toInt() }
check(parts.size == 3) { "VERSION doit être major.minor.patch, reçu: $vaultVersion" }
val kazierVersion: String = rootProject.file("../VERSION").readText().trim()
val kazierVersionCode: Int = run {
val parts = kazierVersion.split('.').map { it.toInt() }
check(parts.size == 3) { "VERSION doit être major.minor.patch, reçu: $kazierVersion" }
parts[0] * 1_000_000 + parts[1] * 1_000 + parts[2]
}
@@ -24,18 +24,18 @@ val signingProps = Properties().apply {
}
android {
namespace = "com.vaultdrop.mobile"
namespace = "com.kazier.mobile"
compileSdk = 35
defaultConfig {
applicationId = "com.vaultdrop.mobile"
applicationId = "com.kazier.mobile"
minSdk = 26
// targetSdk 35 exige des .so alignés en 16K ; les libs précompilées
// OpenCV/CameraX sont en 4K (warning de compatibilité sur devices
// 16K-pages). On reste en 34 tant qu'elles ne sont pas mises à jour.
targetSdk = 34
versionCode = vaultVersionCode
versionName = vaultVersion
versionCode = kazierVersionCode
versionName = kazierVersion
// OpenCV natif : on conserve uniquement les ABIs ciblés
// (arm64 = devices, x86_64 = émulateur) pour garder l'APK raisonnable.
+4 -2
View File
@@ -2,13 +2,15 @@
# Alternative CI : mêmes valeurs via les variables d'environnement SIGNING_*.
#
# 1. Générer un keystore (ne jamais le committer, garder en lieu sûr) :
# keytool -genkey -v -keystore release.keystore -alias vaultdrop \
# keytool -genkey -v -keystore release.keystore -alias kazier \
# -keyalg RSA -keysize 2048 -validity 10000
# Note : un keystore existant garde SON alias d'origine (ex. vaultdrop) —
# reporter alors la même valeur dans keyAlias ci-dessous.
# 2. Renseigner les valeurs ci-dessous.
#
# storeFile est relatif au répertoire du module app/ (mobile-kotlin/app).
storeFile=release.keystore
storePassword=CHANGE_ME
keyAlias=vaultdrop
keyAlias=kazier
keyPassword=CHANGE_ME
@@ -10,17 +10,17 @@
android:required="false" />
<application
android:name=".VaultDropApplication"
android:name=".KazierApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/Theme.VaultDrop">
android:theme="@style/Theme.Kazier">
<!-- HiltWorkerFactory : désactive l'initialisation WorkManager par
défaut (androidx.startup) pour que Configuration.Provider
(VaultDropApplication) soit honoré — sinon le @HiltWorker ne peut
(KazierApplication) soit honoré — sinon le @HiltWorker ne peut
pas être instancié (NoSuchMethodException). -->
<provider
android:name="androidx.startup.InitializationProvider"
@@ -36,7 +36,7 @@
<activity
android:name=".MainActivity"
android:exported="true"
android:theme="@style/Theme.VaultDrop">
android:theme="@style/Theme.Kazier">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile
package com.kazier.mobile
import android.app.Application
import androidx.hilt.work.HiltWorkerFactory
@@ -8,7 +8,7 @@ import timber.log.Timber
import javax.inject.Inject
@HiltAndroidApp
class VaultDropApplication : Application(), Configuration.Provider {
class KazierApplication : Application(), Configuration.Provider {
@Inject
lateinit var workerFactory: HiltWorkerFactory
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile
package com.kazier.mobile
import android.os.Bundle
import androidx.activity.ComponentActivity
@@ -7,9 +7,9 @@ import androidx.activity.enableEdgeToEdge
import androidx.compose.runtime.getValue
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.vaultdrop.mobile.domain.ThemePreferenceStore
import com.vaultdrop.mobile.ui.navigation.VaultDropApp
import com.vaultdrop.mobile.ui.theme.VaultDropTheme
import com.kazier.mobile.domain.ThemePreferenceStore
import com.kazier.mobile.ui.navigation.KazierApp
import com.kazier.mobile.ui.theme.KazierTheme
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
import kotlinx.coroutines.launch
@@ -28,8 +28,8 @@ class MainActivity : ComponentActivity() {
setContent {
val theme by themePreferenceStore.theme.collectAsStateWithLifecycle()
VaultDropTheme(theme = theme) {
VaultDropApp()
KazierTheme(theme = theme) {
KazierApp()
}
}
}
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.auth
package com.kazier.mobile.auth
import android.content.Context
import android.content.SharedPreferences
@@ -6,7 +6,7 @@ import androidx.security.crypto.EncryptedSharedPreferences
import androidx.security.crypto.MasterKeys
import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi
import com.vaultdrop.mobile.data.remote.dto.UserDto
import com.kazier.mobile.data.remote.dto.UserDto
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
import javax.inject.Singleton
@@ -56,8 +56,8 @@ class SecureTokenStore @Inject constructor(
}
companion object {
private const val FILE_NAME = "vaultdrop_secure"
private const val KEY_TOKEN = "vaultdrop.auth_token"
private const val KEY_ACCOUNT = "vaultdrop.account"
private const val FILE_NAME = "kazier_secure"
private const val KEY_TOKEN = "kazier.auth_token"
private const val KEY_ACCOUNT = "kazier.account"
}
}
@@ -1,10 +1,10 @@
package com.vaultdrop.mobile.auth
package com.kazier.mobile.auth
import com.vaultdrop.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.dto.LoginResponseDto
import com.vaultdrop.mobile.domain.ActiveUserStore
import com.vaultdrop.mobile.domain.DeviceIdentity
import com.vaultdrop.mobile.domain.LocalModeStore
import com.kazier.mobile.data.remote.ApiClient
import com.kazier.mobile.data.remote.dto.LoginResponseDto
import com.kazier.mobile.domain.ActiveUserStore
import com.kazier.mobile.domain.DeviceIdentity
import com.kazier.mobile.domain.LocalModeStore
import javax.inject.Inject
import javax.inject.Singleton
@@ -30,7 +30,7 @@ class SessionManager @Inject constructor(
return AuthSession(token = token, user = user)
}
suspend fun save(token: String, user: com.vaultdrop.mobile.data.remote.dto.UserDto) {
suspend fun save(token: String, user: com.kazier.mobile.data.remote.dto.UserDto) {
secureTokenStore.save(token, user)
activeUserStore.set(user.id)
localModeStore.clear()
@@ -52,5 +52,5 @@ class SessionManager @Inject constructor(
data class AuthSession(
val token: String,
val user: com.vaultdrop.mobile.data.remote.dto.UserDto,
val user: com.kazier.mobile.data.remote.dto.UserDto,
)
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.auth
package com.kazier.mobile.auth
import javax.inject.Inject
import javax.inject.Singleton
@@ -1,18 +1,18 @@
package com.vaultdrop.mobile.data.local
package com.kazier.mobile.data.local
import androidx.room.Database
import androidx.room.RoomDatabase
import com.vaultdrop.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.local.dao.FolderDao
import com.vaultdrop.mobile.data.local.dao.PendingOperationDao
import com.vaultdrop.mobile.data.local.dao.ScanDao
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.local.entity.PendingOperationEntity
import com.vaultdrop.mobile.data.local.entity.ScanPageEntity
import com.vaultdrop.mobile.data.local.entity.ScanSessionEntity
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity
import com.kazier.mobile.data.local.dao.FileDao
import com.kazier.mobile.data.local.dao.FolderDao
import com.kazier.mobile.data.local.dao.PendingOperationDao
import com.kazier.mobile.data.local.dao.ScanDao
import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.data.local.entity.PendingOperationEntity
import com.kazier.mobile.data.local.entity.ScanPageEntity
import com.kazier.mobile.data.local.entity.ScanSessionEntity
import com.kazier.mobile.data.local.entity.UserPreferenceEntity
/*
* DB SQLite locale, `dot.db` (même nom que la version Expo).
@@ -1,6 +1,6 @@
package com.vaultdrop.mobile.data.local
package com.kazier.mobile.data.local
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FileEntity
/** Date de référence d'un fichier : modification SAF quand dispo, sinon ajout local. */
val FileEntity.referenceDate: Long
@@ -1,9 +1,9 @@
package com.vaultdrop.mobile.data.local.dao
package com.kazier.mobile.data.local.dao
import androidx.room.Dao
import androidx.room.Query
import androidx.room.Upsert
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FileEntity
import kotlinx.coroutines.flow.Flow
@Dao
@@ -1,11 +1,11 @@
package com.vaultdrop.mobile.data.local.dao
package com.kazier.mobile.data.local.dao
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Upsert
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.data.local.entity.FolderEntity
import kotlinx.coroutines.flow.Flow
@Dao
@@ -1,9 +1,9 @@
package com.vaultdrop.mobile.data.local.dao
package com.kazier.mobile.data.local.dao
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
import com.vaultdrop.mobile.data.local.entity.PendingOperationEntity
import com.kazier.mobile.data.local.entity.PendingOperationEntity
import kotlinx.coroutines.flow.Flow
@Dao
@@ -1,11 +1,11 @@
package com.vaultdrop.mobile.data.local.dao
package com.kazier.mobile.data.local.dao
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
import androidx.room.Update
import com.vaultdrop.mobile.data.local.entity.ScanPageEntity
import com.vaultdrop.mobile.data.local.entity.ScanSessionEntity
import com.kazier.mobile.data.local.entity.ScanPageEntity
import com.kazier.mobile.data.local.entity.ScanSessionEntity
import kotlinx.coroutines.flow.Flow
/** Persistance des sessions de scan (appareil photo) — local uniquement. */
@@ -1,11 +1,11 @@
package com.vaultdrop.mobile.data.local.dao
package com.kazier.mobile.data.local.dao
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Upsert
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity
import com.kazier.mobile.data.local.entity.UserPreferenceEntity
@Dao
interface UserPreferenceDao {
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity
package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo
import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity
package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo
import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity
package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo
import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity
package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo
import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity
package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo
import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity
package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo
import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.migration
package com.kazier.mobile.data.local.migration
import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.preferences
package com.kazier.mobile.data.preferences
import android.content.Context
import android.content.SharedPreferences
@@ -7,7 +7,7 @@ import javax.inject.Inject
import javax.inject.Singleton
/**
* Racine VaultDrop : le dossier SAF unique et obligatoire choisi au premier
* Racine Kazier : le dossier SAF unique et obligatoire choisi au premier
* lancement. Tous les exports (assemblage PDF) y sont écrits directement,
* sans sélecteur la permission persistante sur l'arbre est acquise à ce
* moment-.
@@ -31,7 +31,7 @@ class DefaultRootStore @Inject constructor(
}
companion object {
private const val FILE_NAME = "vaultdrop_prefs"
private const val KEY_ROOT_RESOURCE_ID = "vaultdrop.default_root_resource_id"
private const val FILE_NAME = "kazier_prefs"
private const val KEY_ROOT_RESOURCE_ID = "kazier.default_root_resource_id"
}
}
@@ -1,22 +1,22 @@
package com.vaultdrop.mobile.data.remote
package com.kazier.mobile.data.remote
import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi
import com.vaultdrop.mobile.data.remote.dto.ApiEnvelope
import com.vaultdrop.mobile.data.remote.dto.ApiErrorEnvelope
import com.vaultdrop.mobile.data.remote.dto.DeviceRegistrationDto
import com.vaultdrop.mobile.data.remote.dto.FileDto
import com.vaultdrop.mobile.data.remote.dto.FileOcrDto
import com.vaultdrop.mobile.data.remote.dto.FolderDto
import com.vaultdrop.mobile.data.remote.dto.LoginRequestDto
import com.vaultdrop.mobile.data.remote.dto.LoginResponseDto
import com.vaultdrop.mobile.data.remote.dto.OcrJobDto
import com.vaultdrop.mobile.data.remote.dto.OcrSubmitDto
import com.vaultdrop.mobile.data.remote.dto.ResolvedUserDto
import com.vaultdrop.mobile.data.remote.dto.ResourcePermissionDto
import com.vaultdrop.mobile.data.remote.dto.SyncOpDto
import com.vaultdrop.mobile.data.remote.dto.SyncOpsRequest
import com.vaultdrop.mobile.data.remote.dto.SyncOpsResult
import com.kazier.mobile.data.remote.dto.ApiEnvelope
import com.kazier.mobile.data.remote.dto.ApiErrorEnvelope
import com.kazier.mobile.data.remote.dto.DeviceRegistrationDto
import com.kazier.mobile.data.remote.dto.FileDto
import com.kazier.mobile.data.remote.dto.FileOcrDto
import com.kazier.mobile.data.remote.dto.FolderDto
import com.kazier.mobile.data.remote.dto.LoginRequestDto
import com.kazier.mobile.data.remote.dto.LoginResponseDto
import com.kazier.mobile.data.remote.dto.OcrJobDto
import com.kazier.mobile.data.remote.dto.OcrSubmitDto
import com.kazier.mobile.data.remote.dto.ResolvedUserDto
import com.kazier.mobile.data.remote.dto.ResourcePermissionDto
import com.kazier.mobile.data.remote.dto.SyncOpDto
import com.kazier.mobile.data.remote.dto.SyncOpsRequest
import com.kazier.mobile.data.remote.dto.SyncOpsResult
import okhttp3.MultipartBody
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody
@@ -1,18 +1,18 @@
package com.vaultdrop.mobile.data.remote
package com.kazier.mobile.data.remote
import com.vaultdrop.mobile.data.remote.dto.ApiEnvelope
import com.vaultdrop.mobile.data.remote.dto.DeviceRegistrationDto
import com.vaultdrop.mobile.data.remote.dto.FileDto
import com.vaultdrop.mobile.data.remote.dto.FileOcrDto
import com.vaultdrop.mobile.data.remote.dto.FolderDto
import com.vaultdrop.mobile.data.remote.dto.LoginRequestDto
import com.vaultdrop.mobile.data.remote.dto.LoginResponseDto
import com.vaultdrop.mobile.data.remote.dto.OcrJobDto
import com.vaultdrop.mobile.data.remote.dto.OcrSubmitDto
import com.vaultdrop.mobile.data.remote.dto.ResolvedUserDto
import com.vaultdrop.mobile.data.remote.dto.ResourcePermissionDto
import com.vaultdrop.mobile.data.remote.dto.SyncOpsRequest
import com.vaultdrop.mobile.data.remote.dto.SyncOpsResult
import com.kazier.mobile.data.remote.dto.ApiEnvelope
import com.kazier.mobile.data.remote.dto.DeviceRegistrationDto
import com.kazier.mobile.data.remote.dto.FileDto
import com.kazier.mobile.data.remote.dto.FileOcrDto
import com.kazier.mobile.data.remote.dto.FolderDto
import com.kazier.mobile.data.remote.dto.LoginRequestDto
import com.kazier.mobile.data.remote.dto.LoginResponseDto
import com.kazier.mobile.data.remote.dto.OcrJobDto
import com.kazier.mobile.data.remote.dto.OcrSubmitDto
import com.kazier.mobile.data.remote.dto.ResolvedUserDto
import com.kazier.mobile.data.remote.dto.ResourcePermissionDto
import com.kazier.mobile.data.remote.dto.SyncOpsRequest
import com.kazier.mobile.data.remote.dto.SyncOpsResult
import okhttp3.MultipartBody
import okhttp3.RequestBody
import retrofit2.Response
@@ -1,10 +1,10 @@
package com.vaultdrop.mobile.data.remote
package com.kazier.mobile.data.remote
import okhttp3.Interceptor
import okhttp3.Response
import javax.inject.Inject
import javax.inject.Singleton
import com.vaultdrop.mobile.auth.TokenProvider
import com.kazier.mobile.auth.TokenProvider
/**
* Injecte `Authorization: Bearer <token>` sur chaque requête si un token est
@@ -1,6 +1,6 @@
package com.vaultdrop.mobile.data.remote
package com.kazier.mobile.data.remote
import com.vaultdrop.mobile.domain.ServerConfigStore
import com.kazier.mobile.domain.ServerConfigStore
import javax.inject.Inject
import javax.inject.Singleton
import okhttp3.HttpUrl.Companion.toHttpUrl
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.remote.dto
package com.kazier.mobile.data.remote.dto
import com.squareup.moshi.Json
@@ -1,8 +1,8 @@
package com.vaultdrop.mobile.data.repository
package com.kazier.mobile.data.repository
import com.vaultdrop.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.dto.LoginResponseDto
import com.vaultdrop.mobile.domain.DeviceIdentity
import com.kazier.mobile.data.remote.ApiClient
import com.kazier.mobile.data.remote.dto.LoginResponseDto
import com.kazier.mobile.domain.DeviceIdentity
import timber.log.Timber
import javax.inject.Inject
import javax.inject.Singleton
@@ -1,15 +1,15 @@
package com.vaultdrop.mobile.data.repository
package com.kazier.mobile.data.repository
import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FileStatus
import com.vaultdrop.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.dto.FileDto
import com.vaultdrop.mobile.domain.GenerateId
import com.vaultdrop.mobile.domain.SyncPlacement
import com.vaultdrop.mobile.domain.computeCategory
import com.kazier.mobile.data.local.AppDatabase
import com.kazier.mobile.data.local.dao.FileDao
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FileStatus
import com.kazier.mobile.data.remote.ApiClient
import com.kazier.mobile.data.remote.dto.FileDto
import com.kazier.mobile.domain.GenerateId
import com.kazier.mobile.domain.SyncPlacement
import com.kazier.mobile.domain.computeCategory
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
import javax.inject.Singleton
@@ -1,15 +1,15 @@
package com.vaultdrop.mobile.data.repository
package com.kazier.mobile.data.repository
import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.dao.FolderDao
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.local.entity.FolderStatus
import com.vaultdrop.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.dto.FolderDto
import com.vaultdrop.mobile.domain.DeviceIdentity
import com.vaultdrop.mobile.domain.GenerateId
import com.vaultdrop.mobile.domain.SyncPlacement
import com.kazier.mobile.data.local.AppDatabase
import com.kazier.mobile.data.local.dao.FolderDao
import com.kazier.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.data.local.entity.FolderStatus
import com.kazier.mobile.data.remote.ApiClient
import com.kazier.mobile.data.remote.dto.FolderDto
import com.kazier.mobile.domain.DeviceIdentity
import com.kazier.mobile.domain.GenerateId
import com.kazier.mobile.domain.SyncPlacement
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
import javax.inject.Singleton
@@ -1,15 +1,15 @@
package com.vaultdrop.mobile.data.repository
package com.kazier.mobile.data.repository
import android.content.ContentResolver
import android.content.Context
import android.net.Uri
import androidx.core.net.toUri
import com.vaultdrop.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.ApiException
import com.vaultdrop.mobile.data.remote.dto.OcrJobDto
import com.vaultdrop.mobile.data.remote.dto.OcrJobStatus
import com.kazier.mobile.data.local.dao.FileDao
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.remote.ApiClient
import com.kazier.mobile.data.remote.ApiException
import com.kazier.mobile.data.remote.dto.OcrJobDto
import com.kazier.mobile.data.remote.dto.OcrJobStatus
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.delay
import okhttp3.MediaType
@@ -1,13 +1,13 @@
package com.vaultdrop.mobile.data.repository
package com.kazier.mobile.data.repository
import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi
import com.squareup.moshi.Types
import com.vaultdrop.mobile.data.local.dao.PendingOperationDao
import com.vaultdrop.mobile.data.local.entity.PendingOpStatus
import com.vaultdrop.mobile.data.local.entity.PendingOperationEntity
import com.vaultdrop.mobile.data.local.entity.PendingOperationType
import com.vaultdrop.mobile.domain.GenerateId
import com.kazier.mobile.data.local.dao.PendingOperationDao
import com.kazier.mobile.data.local.entity.PendingOpStatus
import com.kazier.mobile.data.local.entity.PendingOperationEntity
import com.kazier.mobile.data.local.entity.PendingOperationType
import com.kazier.mobile.domain.GenerateId
import javax.inject.Inject
import javax.inject.Singleton
@@ -1,13 +1,13 @@
package com.vaultdrop.mobile.data.repository
package com.kazier.mobile.data.repository
import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.dao.ScanDao
import com.vaultdrop.mobile.data.local.entity.ScanPageEntity
import com.vaultdrop.mobile.data.local.entity.ScanPageStatus
import com.vaultdrop.mobile.data.local.entity.ScanSessionEntity
import com.vaultdrop.mobile.data.local.entity.ScanSessionStatus
import com.vaultdrop.mobile.domain.GenerateId
import com.kazier.mobile.data.local.AppDatabase
import com.kazier.mobile.data.local.dao.ScanDao
import com.kazier.mobile.data.local.entity.ScanPageEntity
import com.kazier.mobile.data.local.entity.ScanPageStatus
import com.kazier.mobile.data.local.entity.ScanSessionEntity
import com.kazier.mobile.data.local.entity.ScanSessionStatus
import com.kazier.mobile.domain.GenerateId
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
import javax.inject.Singleton
@@ -1,15 +1,15 @@
package com.vaultdrop.mobile.data.repository
package com.kazier.mobile.data.repository
import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.local.dao.FolderDao
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.dto.ResourcePermissionDto
import com.vaultdrop.mobile.domain.DeviceIdentity
import com.vaultdrop.mobile.domain.SyncPlacement
import com.kazier.mobile.data.local.AppDatabase
import com.kazier.mobile.data.local.dao.FileDao
import com.kazier.mobile.data.local.dao.FolderDao
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.data.remote.ApiClient
import com.kazier.mobile.data.remote.dto.ResourcePermissionDto
import com.kazier.mobile.domain.DeviceIdentity
import com.kazier.mobile.domain.SyncPlacement
import timber.log.Timber
import javax.inject.Inject
import javax.inject.Singleton
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.di
package com.kazier.mobile.di
import dagger.Module
import dagger.hilt.InstallIn
@@ -1,14 +1,14 @@
package com.vaultdrop.mobile.di
package com.kazier.mobile.di
import android.content.Context
import androidx.room.Room
import com.vaultdrop.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.local.dao.FolderDao
import com.vaultdrop.mobile.data.local.dao.PendingOperationDao
import com.vaultdrop.mobile.data.local.dao.ScanDao
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.migration.Migrations
import com.kazier.mobile.data.local.AppDatabase
import com.kazier.mobile.data.local.dao.FileDao
import com.kazier.mobile.data.local.dao.FolderDao
import com.kazier.mobile.data.local.dao.PendingOperationDao
import com.kazier.mobile.data.local.dao.ScanDao
import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.kazier.mobile.data.local.migration.Migrations
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@@ -1,11 +1,11 @@
package com.vaultdrop.mobile.di
package com.kazier.mobile.di
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import com.vaultdrop.mobile.BuildConfig
import com.vaultdrop.mobile.data.remote.ApiService
import com.vaultdrop.mobile.data.remote.AuthInterceptor
import com.vaultdrop.mobile.data.remote.ServerUrlInterceptor
import com.kazier.mobile.BuildConfig
import com.kazier.mobile.data.remote.ApiService
import com.kazier.mobile.data.remote.AuthInterceptor
import com.kazier.mobile.data.remote.ServerUrlInterceptor
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@@ -80,5 +80,5 @@ object NetworkModule {
fun provideApiService(retrofit: Retrofit): ApiService =
retrofit.create(ApiService::class.java)
private const val PLACEHOLDER_BASE_URL = "http://vaultdrop.invalid/"
private const val PLACEHOLDER_BASE_URL = "http://kazier.invalid/"
}
@@ -1,7 +1,7 @@
package com.vaultdrop.mobile.domain
package com.kazier.mobile.domain
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity
import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.kazier.mobile.data.local.entity.UserPreferenceEntity
import javax.inject.Inject
import javax.inject.Singleton
@@ -1,7 +1,7 @@
package com.vaultdrop.mobile.domain
package com.kazier.mobile.domain
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity
import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.kazier.mobile.data.local.entity.UserPreferenceEntity
import javax.inject.Inject
import javax.inject.Singleton
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.domain
package com.kazier.mobile.domain
enum class FileCategory {
PDF,
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.domain
package com.kazier.mobile.domain
import java.security.SecureRandom
import javax.inject.Inject
@@ -1,13 +1,13 @@
package com.vaultdrop.mobile.domain
package com.kazier.mobile.domain
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity
import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.kazier.mobile.data.local.entity.UserPreferenceEntity
import javax.inject.Inject
import javax.inject.Singleton
/**
* Drapeau « mode local » (on utilise l'app sans compte) persisté en
* `user_preferences`. Permet de restaurer [com.vaultdrop.mobile.ui.auth.AuthState.Local]
* `user_preferences`. Permet de restaurer [com.kazier.mobile.ui.auth.AuthState.Local]
* au redémarrage au lieu de retomber sur la page de connexion.
*/
@Singleton
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.domain
package com.kazier.mobile.domain
/** Clés de `user_preferences` — miroir de `services/db/schema.ts`. */
object PrefKeys {
@@ -1,7 +1,7 @@
package com.vaultdrop.mobile.domain
package com.kazier.mobile.domain
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity
import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.kazier.mobile.data.local.entity.UserPreferenceEntity
import java.util.concurrent.atomic.AtomicBoolean
import javax.inject.Inject
import javax.inject.Named
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.domain
package com.kazier.mobile.domain
/**
* Règle de placement d'une ressource (`sync_status`), partagée entre files et
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.domain
package com.kazier.mobile.domain
/**
* Préférence d'affichage de la page Réglages, persistée dans `user_preferences`.
@@ -1,7 +1,7 @@
package com.vaultdrop.mobile.domain
package com.kazier.mobile.domain
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity
import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.kazier.mobile.data.local.entity.UserPreferenceEntity
import java.util.concurrent.atomic.AtomicBoolean
import javax.inject.Inject
import javax.inject.Singleton
@@ -1,9 +1,9 @@
package com.vaultdrop.mobile.features.connection
package com.kazier.mobile.features.connection
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.vaultdrop.mobile.auth.TokenProvider
import com.vaultdrop.mobile.domain.ServerConfigStore
import com.kazier.mobile.auth.TokenProvider
import com.kazier.mobile.domain.ServerConfigStore
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
@@ -30,7 +30,7 @@ sealed interface ServerConnectionStatus {
/**
* Surveille la joignabilité du serveur configuré (ping `/health`) et expose le
* résultat pour le badge du header. Scope Activity (créé dans [VaultDropApp]),
* résultat pour le badge du header. Scope Activity (créé dans [KazierApp]),
* comme [SyncViewModel].
*
* - ne ping que lorsqu'un compte est connecté ([TokenProvider.current] non nul),
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.features.ocr
package com.kazier.mobile.features.ocr
import android.content.Context
import androidx.hilt.work.HiltWorker
@@ -10,12 +10,12 @@ import androidx.work.NetworkType
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
import androidx.work.WorkerParameters
import com.vaultdrop.mobile.auth.TokenProvider
import com.vaultdrop.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.remote.ApiException
import com.vaultdrop.mobile.data.remote.dto.OcrJobStatus
import com.vaultdrop.mobile.data.repository.OcrAutoOutcome
import com.vaultdrop.mobile.data.repository.OcrRepository
import com.kazier.mobile.auth.TokenProvider
import com.kazier.mobile.data.local.dao.FileDao
import com.kazier.mobile.data.remote.ApiException
import com.kazier.mobile.data.remote.dto.OcrJobStatus
import com.kazier.mobile.data.repository.OcrAutoOutcome
import com.kazier.mobile.data.repository.OcrRepository
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import java.util.concurrent.TimeUnit
@@ -1,14 +1,14 @@
package com.vaultdrop.mobile.features.ocr
package com.kazier.mobile.features.ocr
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.auth.TokenProvider
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.remote.ApiException
import com.vaultdrop.mobile.data.remote.dto.OcrJobStatus
import com.vaultdrop.mobile.data.repository.OcrRepository
import com.kazier.mobile.R
import com.kazier.mobile.auth.TokenProvider
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.remote.ApiException
import com.kazier.mobile.data.remote.dto.OcrJobStatus
import com.kazier.mobile.data.repository.OcrRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Job
@@ -1,16 +1,16 @@
package com.vaultdrop.mobile.features.saf
package com.kazier.mobile.features.saf
import android.content.ContentResolver
import android.content.Context
import android.net.Uri
import android.provider.DocumentsContract
import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FileStatus
import com.vaultdrop.mobile.data.repository.FileRepository
import com.vaultdrop.mobile.data.repository.OutboxRepository
import com.vaultdrop.mobile.features.thumbnails.ThumbnailStore
import com.kazier.mobile.data.local.AppDatabase
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FileStatus
import com.kazier.mobile.data.repository.FileRepository
import com.kazier.mobile.data.repository.OutboxRepository
import com.kazier.mobile.features.thumbnails.ThumbnailStore
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -1,11 +1,11 @@
package com.vaultdrop.mobile.features.saf
package com.kazier.mobile.features.saf
import android.content.ContentResolver
import android.content.Context
import android.net.Uri
import android.provider.DocumentsContract
import com.vaultdrop.mobile.data.repository.FileRepository
import com.vaultdrop.mobile.data.repository.FolderRepository
import com.kazier.mobile.data.repository.FileRepository
import com.kazier.mobile.data.repository.FolderRepository
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -1,17 +1,17 @@
package com.vaultdrop.mobile.features.saf
package com.kazier.mobile.features.saf
import android.content.ContentResolver
import android.content.Context
import android.net.Uri
import android.provider.DocumentsContract
import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.repository.FileRepository
import com.vaultdrop.mobile.data.repository.FolderRepository
import com.vaultdrop.mobile.data.repository.OutboxRepository
import com.vaultdrop.mobile.features.thumbnails.ThumbnailStore
import com.kazier.mobile.data.local.AppDatabase
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.data.repository.FileRepository
import com.kazier.mobile.data.repository.FolderRepository
import com.kazier.mobile.data.repository.OutboxRepository
import com.kazier.mobile.features.thumbnails.ThumbnailStore
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -1,9 +1,9 @@
package com.vaultdrop.mobile.features.saf
package com.kazier.mobile.features.saf
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.repository.FileRepository
import com.vaultdrop.mobile.data.repository.FolderRepository
import com.vaultdrop.mobile.data.repository.SaveFolderInput
import com.kazier.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.data.repository.FileRepository
import com.kazier.mobile.data.repository.FolderRepository
import com.kazier.mobile.data.repository.SaveFolderInput
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import timber.log.Timber
@@ -1,15 +1,15 @@
package com.vaultdrop.mobile.features.saf
package com.kazier.mobile.features.saf
import android.content.ContentResolver
import android.content.Context
import android.net.Uri
import android.provider.DocumentsContract
import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.repository.FileRepository
import com.vaultdrop.mobile.data.repository.OutboxRepository
import com.vaultdrop.mobile.features.thumbnails.ThumbnailStore
import com.kazier.mobile.data.local.AppDatabase
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.repository.FileRepository
import com.kazier.mobile.data.repository.OutboxRepository
import com.kazier.mobile.features.thumbnails.ThumbnailStore
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.features.saf
package com.kazier.mobile.features.saf
import android.content.ContentResolver
import android.content.Context
@@ -12,7 +12,7 @@ import javax.inject.Singleton
/**
* Crée un dossier physique via DocumentsContract (SAF) facteur commun de
* `ensureVaultDropFolder` (onboarding) et de la feature « Créer un dossier ».
* `ensureKazierRootFolder` (onboarding) et de la feature « Créer un dossier ».
*
* Le parent peut être un URI *tree* (racine importée) ou *document* (dossier
* déjà créé/parcouru) : les deux sont acceptés par `createDocument`.
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.features.saf
package com.kazier.mobile.features.saf
import android.content.ContentResolver
import android.content.Context
@@ -1,10 +1,10 @@
package com.vaultdrop.mobile.features.saf
package com.kazier.mobile.features.saf
import android.content.ContentResolver
import android.net.Uri
import android.provider.DocumentsContract
import android.provider.OpenableColumns
import com.vaultdrop.mobile.data.repository.FolderRepository
import com.kazier.mobile.data.repository.FolderRepository
import java.io.File
/**
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.features.scan
package com.kazier.mobile.features.scan
import android.graphics.PointF
import kotlin.math.abs
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.features.scan
package com.kazier.mobile.features.scan
import android.graphics.Bitmap
import android.graphics.PointF
@@ -1,15 +1,15 @@
package com.vaultdrop.mobile.features.sync
package com.kazier.mobile.features.sync
import android.net.Uri
import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.repository.FileRepository
import com.vaultdrop.mobile.data.repository.FolderRepository
import com.vaultdrop.mobile.data.repository.OutboxRepository
import com.vaultdrop.mobile.data.repository.SaveFileInput
import com.vaultdrop.mobile.data.repository.SaveFolderInput
import com.vaultdrop.mobile.domain.DeviceIdentity
import com.kazier.mobile.data.local.AppDatabase
import com.kazier.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.data.repository.FileRepository
import com.kazier.mobile.data.repository.FolderRepository
import com.kazier.mobile.data.repository.OutboxRepository
import com.kazier.mobile.data.repository.SaveFileInput
import com.kazier.mobile.data.repository.SaveFolderInput
import com.kazier.mobile.domain.DeviceIdentity
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import timber.log.Timber
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.features.sync
package com.kazier.mobile.features.sync
import android.content.Context
import androidx.hilt.work.HiltWorker
@@ -13,16 +13,16 @@ import androidx.work.WorkerParameters
import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi
import com.squareup.moshi.Types
import com.vaultdrop.mobile.auth.TokenProvider
import com.vaultdrop.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.local.dao.FolderDao
import com.vaultdrop.mobile.data.local.dao.PendingOperationDao
import com.vaultdrop.mobile.data.local.entity.PendingOperationEntity
import com.vaultdrop.mobile.data.local.entity.PendingOperationType
import com.vaultdrop.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.ApiException
import com.vaultdrop.mobile.data.remote.dto.SyncOpDto
import com.vaultdrop.mobile.features.ocr.OcrAutoWorker
import com.kazier.mobile.auth.TokenProvider
import com.kazier.mobile.data.local.dao.FileDao
import com.kazier.mobile.data.local.dao.FolderDao
import com.kazier.mobile.data.local.dao.PendingOperationDao
import com.kazier.mobile.data.local.entity.PendingOperationEntity
import com.kazier.mobile.data.local.entity.PendingOperationType
import com.kazier.mobile.data.remote.ApiClient
import com.kazier.mobile.data.remote.ApiException
import com.kazier.mobile.data.remote.dto.SyncOpDto
import com.kazier.mobile.features.ocr.OcrAutoWorker
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import java.util.concurrent.TimeUnit
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.features.sync
package com.kazier.mobile.features.sync
import android.content.ContentResolver
import android.content.Context
@@ -1,17 +1,17 @@
package com.vaultdrop.mobile.features.sync
package com.kazier.mobile.features.sync
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.work.WorkInfo
import androidx.work.WorkManager
import com.vaultdrop.mobile.data.local.dao.PendingOperationDao
import com.vaultdrop.mobile.data.local.entity.PendingOpStatus
import com.vaultdrop.mobile.data.local.entity.PendingOperationEntity
import com.vaultdrop.mobile.data.repository.FolderRepository
import com.vaultdrop.mobile.data.repository.SaveFolderInput
import com.vaultdrop.mobile.data.repository.ShareRepository
import com.vaultdrop.mobile.features.ocr.OcrAutoWorker
import com.kazier.mobile.data.local.dao.PendingOperationDao
import com.kazier.mobile.data.local.entity.PendingOpStatus
import com.kazier.mobile.data.local.entity.PendingOperationEntity
import com.kazier.mobile.data.repository.FolderRepository
import com.kazier.mobile.data.repository.SaveFolderInput
import com.kazier.mobile.data.repository.ShareRepository
import com.kazier.mobile.features.ocr.OcrAutoWorker
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.CancellationException
@@ -125,7 +125,7 @@ class SyncViewModel @Inject constructor(
/**
* Import volontaire d'un dossier SAF (ajout + marche récursive).
*
* Scope Activity (VaultDropApp) : survit aux changements d'onglets un
* Scope Activity (KazierApp) : survit aux changements d'onglets un
* walk lancé ici n'est pas annulé quand l'utilisateur quitte l'écran
* Fichiers, et `importState` continue d'être visible partout.
*
@@ -1,14 +1,14 @@
package com.vaultdrop.mobile.features.thumbnails
package com.kazier.mobile.features.thumbnails
import android.content.ContentResolver
import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.pdf.PdfRenderer
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.domain.FileCategory
import com.vaultdrop.mobile.ui.components.categoryValue
import com.vaultdrop.mobile.ui.document.content.DocumentContent
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.domain.FileCategory
import com.kazier.mobile.ui.components.categoryValue
import com.kazier.mobile.ui.document.content.DocumentContent
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.sync.Mutex
@@ -1,7 +1,7 @@
package com.vaultdrop.mobile.ui.auth
package com.kazier.mobile.ui.auth
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.remote.dto.UserDto
import com.kazier.mobile.R
import com.kazier.mobile.data.remote.dto.UserDto
/** État global de connexion — équivalent de `AuthStatus` JS. */
sealed interface AuthState {
@@ -1,15 +1,15 @@
package com.vaultdrop.mobile.ui.auth
package com.kazier.mobile.ui.auth
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.vaultdrop.mobile.auth.SessionManager
import com.vaultdrop.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.ApiException
import com.vaultdrop.mobile.data.repository.AuthRepository
import com.vaultdrop.mobile.data.repository.ShareRepository
import com.vaultdrop.mobile.features.sync.OutboxSyncWorker
import com.vaultdrop.mobile.features.ocr.OcrAutoWorker
import com.kazier.mobile.auth.SessionManager
import com.kazier.mobile.data.remote.ApiClient
import com.kazier.mobile.data.remote.ApiException
import com.kazier.mobile.data.repository.AuthRepository
import com.kazier.mobile.data.repository.ShareRepository
import com.kazier.mobile.features.sync.OutboxSyncWorker
import com.kazier.mobile.features.ocr.OcrAutoWorker
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.auth
package com.kazier.mobile.ui.auth
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -34,7 +34,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.vaultdrop.mobile.R
import com.kazier.mobile.R
@Composable
fun LoginScreen(
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.size
@@ -25,10 +25,10 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FileStatus
import com.vaultdrop.mobile.features.saf.FileDeleter
import com.kazier.mobile.R
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FileStatus
import com.kazier.mobile.features.saf.FileDeleter
/** Résultat de l\'analyse de compatibilité entre les fichiers et le mode choisi. */
data class DeleteReview(
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
@@ -15,9 +15,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.Dp
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.domain.FileCategory
import com.vaultdrop.mobile.domain.computeCategory
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.domain.FileCategory
import com.kazier.mobile.domain.computeCategory
/** Pictogramme dédié à chaque catégorie de document. */
val FileCategory.icon: ImageVector
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@@ -17,8 +17,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.kazier.mobile.R
import com.kazier.mobile.data.local.entity.FileEntity
/**
* Un fichier est « à traiter » s'il est présent physiquement et jamais encore
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
@@ -11,8 +11,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.Dp
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FileStatus
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FileStatus
/** Placement d'un fichier entre le device et le serveur distant. */
private enum class FileSyncPlacement {
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import android.content.Context
import androidx.compose.foundation.layout.size
@@ -16,9 +16,9 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage
import coil.request.ImageRequest
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.domain.FileCategory
import com.vaultdrop.mobile.features.thumbnails.ThumbnailStore
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.domain.FileCategory
import com.kazier.mobile.features.thumbnails.ThumbnailStore
import dagger.hilt.EntryPoint
import dagger.hilt.InstallIn
import dagger.hilt.android.EntryPointAccessors
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.AlertDialog
@@ -12,7 +12,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.vaultdrop.mobile.R
import com.kazier.mobile.R
/** Dialog de nommage d'un nouveau dossier — partagé accueil / dossier. */
@Composable
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
@@ -25,8 +25,8 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.R
import com.kazier.mobile.data.local.entity.FolderEntity
/**
* Picker de destination pour déplacer N fichiers : liste arborescente (indent
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@@ -20,9 +20,9 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.features.connection.ServerConnectionStatus
import com.vaultdrop.mobile.ui.theme.InactiveGray
import com.kazier.mobile.R
import com.kazier.mobile.features.connection.ServerConnectionStatus
import com.kazier.mobile.ui.theme.InactiveGray
private val OnlineGreen = Color(0xFF2E7D32)
private val CheckingAmber = Color(0xFFF9A825)
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import android.text.format.DateUtils
import androidx.compose.foundation.background
@@ -24,10 +24,10 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.local.entity.PendingOpStatus
import com.vaultdrop.mobile.data.local.entity.PendingOperationEntity
import com.vaultdrop.mobile.features.sync.SyncViewModel
import com.kazier.mobile.R
import com.kazier.mobile.data.local.entity.PendingOpStatus
import com.kazier.mobile.data.local.entity.PendingOperationEntity
import com.kazier.mobile.features.sync.SyncViewModel
private val StatusPending = Color(0xFF1E88E5)
private val StatusSynced = Color(0xFF2E7D32)
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@@ -29,8 +29,8 @@ import androidx.compose.ui.semantics.Role
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.features.sync.SyncViewModel
import com.kazier.mobile.R
import com.kazier.mobile.features.sync.SyncViewModel
private val SyncingAccent = Color(0xFF1E88E5)
private val PendingAmber = Color(0xFFF9A825)
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.components
package com.kazier.mobile.ui.components
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
@@ -22,8 +22,8 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.ui.watchedfolders.WatchedFoldersViewModel
import com.kazier.mobile.R
import com.kazier.mobile.ui.watchedfolders.WatchedFoldersViewModel
/** Seuil au-delà duquel le badge affiche « 99+ » au lieu du compte exact. */
private const val COUNT_CAP = 99
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.dashboard
package com.kazier.mobile.ui.dashboard
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -30,13 +30,13 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.features.connection.ConnectionStatusViewModel
import com.vaultdrop.mobile.features.sync.SyncViewModel
import com.vaultdrop.mobile.ui.components.ServerStatusBadge
import com.vaultdrop.mobile.ui.components.SyncStatusAction
import com.vaultdrop.mobile.ui.navigation.FloatingNavBar
import com.vaultdrop.mobile.ui.navigation.NavTab
import com.kazier.mobile.R
import com.kazier.mobile.features.connection.ConnectionStatusViewModel
import com.kazier.mobile.features.sync.SyncViewModel
import com.kazier.mobile.ui.components.ServerStatusBadge
import com.kazier.mobile.ui.components.SyncStatusAction
import com.kazier.mobile.ui.navigation.FloatingNavBar
import com.kazier.mobile.ui.navigation.NavTab
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@@ -1,8 +1,8 @@
package com.vaultdrop.mobile.ui.dashboard
package com.kazier.mobile.ui.dashboard
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.vaultdrop.mobile.data.repository.FileRepository
import com.kazier.mobile.data.repository.FileRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.document
package com.kazier.mobile.ui.document
import android.app.Activity
import androidx.activity.compose.BackHandler
@@ -76,24 +76,24 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FileStatus
import com.vaultdrop.mobile.data.remote.dto.OcrJobStatus
import com.vaultdrop.mobile.domain.FileCategory
import com.vaultdrop.mobile.features.connection.ConnectionStatusViewModel
import com.vaultdrop.mobile.features.ocr.OcrViewModel
import com.vaultdrop.mobile.features.saf.FileDeleter
import com.vaultdrop.mobile.features.sync.SyncViewModel
import com.vaultdrop.mobile.ui.components.DeleteConfirmDialog
import com.vaultdrop.mobile.ui.components.ServerStatusBadge
import com.vaultdrop.mobile.ui.components.SyncStatusAction
import com.vaultdrop.mobile.ui.components.categoryValue
import com.vaultdrop.mobile.ui.document.content.DocumentContentViewer
import com.vaultdrop.mobile.ui.document.content.ImageViewer
import com.vaultdrop.mobile.ui.document.content.PdfFocusViewer
import com.vaultdrop.mobile.ui.document.content.TextFocusViewer
import com.vaultdrop.mobile.ui.document.content.ZoomableContent
import com.kazier.mobile.R
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FileStatus
import com.kazier.mobile.data.remote.dto.OcrJobStatus
import com.kazier.mobile.domain.FileCategory
import com.kazier.mobile.features.connection.ConnectionStatusViewModel
import com.kazier.mobile.features.ocr.OcrViewModel
import com.kazier.mobile.features.saf.FileDeleter
import com.kazier.mobile.features.sync.SyncViewModel
import com.kazier.mobile.ui.components.DeleteConfirmDialog
import com.kazier.mobile.ui.components.ServerStatusBadge
import com.kazier.mobile.ui.components.SyncStatusAction
import com.kazier.mobile.ui.components.categoryValue
import com.kazier.mobile.ui.document.content.DocumentContentViewer
import com.kazier.mobile.ui.document.content.ImageViewer
import com.kazier.mobile.ui.document.content.PdfFocusViewer
import com.kazier.mobile.ui.document.content.TextFocusViewer
import com.kazier.mobile.ui.document.content.ZoomableContent
import kotlinx.coroutines.launch
import java.time.Instant
import java.time.ZoneId
@@ -1,14 +1,14 @@
package com.vaultdrop.mobile.ui.document
package com.kazier.mobile.ui.document
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FileStatus
import com.vaultdrop.mobile.data.local.orderedByReferenceDateDesc
import com.vaultdrop.mobile.data.repository.FileRepository
import com.vaultdrop.mobile.features.saf.FileDeleter
import com.kazier.mobile.R
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FileStatus
import com.kazier.mobile.data.local.orderedByReferenceDateDesc
import com.kazier.mobile.data.repository.FileRepository
import com.kazier.mobile.features.saf.FileDeleter
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.flow.MutableStateFlow
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.document.content
package com.kazier.mobile.ui.document.content
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -12,9 +12,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.ui.components.FileCategoryIcon
import com.kazier.mobile.R
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.ui.components.FileCategoryIcon
/**
* Fichier cloud-only : aucune copie physique sur l'appareil (uri = NULL), le
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.document.content
package com.kazier.mobile.ui.document.content
import android.content.ContentResolver
import android.net.Uri
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.document.content
package com.kazier.mobile.ui.document.content
import android.content.ContentResolver
import androidx.compose.foundation.layout.Column
@@ -13,9 +13,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.domain.FileCategory
import com.vaultdrop.mobile.ui.components.categoryValue
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.domain.FileCategory
import com.kazier.mobile.ui.components.categoryValue
/**
* Lecteur central d'un document : dispatch par état puis par catégorie.
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.document.content
package com.kazier.mobile.ui.document.content
import android.content.ActivityNotFoundException
import android.content.Context
@@ -17,9 +17,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.ui.components.FileCategoryIcon
import com.kazier.mobile.R
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.ui.components.FileCategoryIcon
/**
* Repli pour les formats sans lecteur intégré (OFFICE, VIDÉO, AUDIO, AUTRE) :
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.document.content
package com.kazier.mobile.ui.document.content
import android.content.ContentResolver
import android.net.Uri
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.document.content
package com.kazier.mobile.ui.document.content
import android.content.ContentResolver
import android.graphics.Bitmap
@@ -40,8 +40,8 @@ import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.kazier.mobile.R
import com.kazier.mobile.data.local.entity.FileEntity
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.sync.Mutex
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.document.content
package com.kazier.mobile.ui.document.content
import android.content.ContentResolver
import androidx.compose.foundation.layout.Box
@@ -21,7 +21,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.vaultdrop.mobile.R
import com.kazier.mobile.R
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.document.content
package com.kazier.mobile.ui.document.content
import androidx.compose.animation.core.Animatable
import androidx.compose.animation.core.spring
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.folderdetail
package com.kazier.mobile.ui.folderdetail
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.ExperimentalFoundationApi
@@ -48,29 +48,29 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.features.connection.ConnectionStatusViewModel
import com.vaultdrop.mobile.features.sync.SyncViewModel
import com.vaultdrop.mobile.ui.components.FilePendingReviewBadge
import com.vaultdrop.mobile.ui.components.FileSyncStatusIcon
import com.vaultdrop.mobile.ui.components.FileThumbnail
import com.vaultdrop.mobile.ui.components.FolderNameDialog
import com.vaultdrop.mobile.ui.components.MoveFolderPickerDialog
import com.vaultdrop.mobile.ui.components.SelectionState
import com.vaultdrop.mobile.ui.components.SelectionStatusIcon
import com.vaultdrop.mobile.ui.components.ServerStatusBadge
import com.vaultdrop.mobile.ui.components.SyncStatusAction
import com.vaultdrop.mobile.ui.components.rememberSelectionState
import com.vaultdrop.mobile.features.saf.FileDeleter
import com.vaultdrop.mobile.ui.components.DeleteConfirmDialog
import com.vaultdrop.mobile.ui.components.DeleteReview
import com.vaultdrop.mobile.ui.components.DeleteWarningDialog
import com.vaultdrop.mobile.ui.components.reviewDelete
import com.vaultdrop.mobile.ui.navigation.SelectionNavBar
import com.vaultdrop.mobile.ui.share.ShareBottomSheet
import com.vaultdrop.mobile.ui.share.ShareViewModel
import com.kazier.mobile.R
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.features.connection.ConnectionStatusViewModel
import com.kazier.mobile.features.sync.SyncViewModel
import com.kazier.mobile.ui.components.FilePendingReviewBadge
import com.kazier.mobile.ui.components.FileSyncStatusIcon
import com.kazier.mobile.ui.components.FileThumbnail
import com.kazier.mobile.ui.components.FolderNameDialog
import com.kazier.mobile.ui.components.MoveFolderPickerDialog
import com.kazier.mobile.ui.components.SelectionState
import com.kazier.mobile.ui.components.SelectionStatusIcon
import com.kazier.mobile.ui.components.ServerStatusBadge
import com.kazier.mobile.ui.components.SyncStatusAction
import com.kazier.mobile.ui.components.rememberSelectionState
import com.kazier.mobile.features.saf.FileDeleter
import com.kazier.mobile.ui.components.DeleteConfirmDialog
import com.kazier.mobile.ui.components.DeleteReview
import com.kazier.mobile.ui.components.DeleteWarningDialog
import com.kazier.mobile.ui.components.reviewDelete
import com.kazier.mobile.ui.navigation.SelectionNavBar
import com.kazier.mobile.ui.share.ShareBottomSheet
import com.kazier.mobile.ui.share.ShareViewModel
import java.util.Locale
@OptIn(ExperimentalMaterial3Api::class)
@@ -1,19 +1,19 @@
package com.vaultdrop.mobile.ui.folderdetail
package com.kazier.mobile.ui.folderdetail
import android.content.Context
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.auth.TokenProvider
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.repository.FileRepository
import com.vaultdrop.mobile.data.repository.FolderRepository
import com.vaultdrop.mobile.data.repository.SaveFolderInput
import com.vaultdrop.mobile.features.saf.FileDeleter
import com.vaultdrop.mobile.features.saf.FileMover
import com.vaultdrop.mobile.features.saf.SafFolderCreator
import com.kazier.mobile.R
import com.kazier.mobile.auth.TokenProvider
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.data.repository.FileRepository
import com.kazier.mobile.data.repository.FolderRepository
import com.kazier.mobile.data.repository.SaveFolderInput
import com.kazier.mobile.features.saf.FileDeleter
import com.kazier.mobile.features.saf.FileMover
import com.kazier.mobile.features.saf.SafFolderCreator
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.flow.MutableStateFlow
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.folderlist
package com.kazier.mobile.ui.folderlist
import android.content.Intent
import android.net.Uri
@@ -76,37 +76,37 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FileStatus
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.local.entity.FolderStatus
import com.vaultdrop.mobile.features.connection.ConnectionStatusViewModel
import com.vaultdrop.mobile.features.connection.ServerConnectionStatus
import com.vaultdrop.mobile.features.saf.safDisplayName
import com.vaultdrop.mobile.features.sync.SyncViewModel
import com.vaultdrop.mobile.features.saf.FileDeleter
import com.vaultdrop.mobile.ui.components.DeleteConfirmDialog
import com.vaultdrop.mobile.ui.components.DeleteReview
import com.vaultdrop.mobile.ui.components.DeleteWarningDialog
import com.vaultdrop.mobile.ui.components.FilePendingReviewBadge
import com.vaultdrop.mobile.ui.components.FileSyncStatusIcon
import com.vaultdrop.mobile.ui.components.FileThumbnail
import com.vaultdrop.mobile.ui.components.FolderNameDialog
import com.kazier.mobile.R
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FileStatus
import com.kazier.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.data.local.entity.FolderStatus
import com.kazier.mobile.features.connection.ConnectionStatusViewModel
import com.kazier.mobile.features.connection.ServerConnectionStatus
import com.kazier.mobile.features.saf.safDisplayName
import com.kazier.mobile.features.sync.SyncViewModel
import com.kazier.mobile.features.saf.FileDeleter
import com.kazier.mobile.ui.components.DeleteConfirmDialog
import com.kazier.mobile.ui.components.DeleteReview
import com.kazier.mobile.ui.components.DeleteWarningDialog
import com.kazier.mobile.ui.components.FilePendingReviewBadge
import com.kazier.mobile.ui.components.FileSyncStatusIcon
import com.kazier.mobile.ui.components.FileThumbnail
import com.kazier.mobile.ui.components.FolderNameDialog
import com.vaultdrop.mobile.ui.components.SelectionState
import com.vaultdrop.mobile.ui.components.SelectionStatusIcon
import com.vaultdrop.mobile.ui.components.ServerStatusBadge
import com.vaultdrop.mobile.ui.components.SyncStatusAction
import com.vaultdrop.mobile.ui.components.rememberSelectionState
import com.vaultdrop.mobile.ui.components.reviewDelete
import com.vaultdrop.mobile.ui.navigation.FloatingNavBar
import com.vaultdrop.mobile.ui.navigation.FolderSelectionNavBar
import com.vaultdrop.mobile.ui.navigation.MoveTargetBar
import com.vaultdrop.mobile.ui.navigation.NavTab
import com.vaultdrop.mobile.ui.navigation.SelectionNavBar
import com.vaultdrop.mobile.ui.share.ShareBottomSheet
import com.vaultdrop.mobile.ui.share.ShareViewModel
import com.kazier.mobile.ui.components.SelectionState
import com.kazier.mobile.ui.components.SelectionStatusIcon
import com.kazier.mobile.ui.components.ServerStatusBadge
import com.kazier.mobile.ui.components.SyncStatusAction
import com.kazier.mobile.ui.components.rememberSelectionState
import com.kazier.mobile.ui.components.reviewDelete
import com.kazier.mobile.ui.navigation.FloatingNavBar
import com.kazier.mobile.ui.navigation.FolderSelectionNavBar
import com.kazier.mobile.ui.navigation.MoveTargetBar
import com.kazier.mobile.ui.navigation.NavTab
import com.kazier.mobile.ui.navigation.SelectionNavBar
import com.kazier.mobile.ui.share.ShareBottomSheet
import com.kazier.mobile.ui.share.ShareViewModel
import kotlinx.coroutines.delay
import timber.log.Timber
import java.util.Locale
@@ -196,7 +196,7 @@ fun FolderListScreen(
}
}
// Racine par défaut : dossier VaultDrop choisi au premier lancement.
// Racine par défaut : dossier Kazier choisi au premier lancement.
val defaultRootLabel = stringResource(R.string.default_root_folder_label)
val folderLabel = stringResource(R.string.folder)
var pendingDefaultPick by remember { mutableStateOf<Uri?>(null) }
@@ -216,7 +216,7 @@ fun FolderListScreen(
}
// Attend la création de la racine (importRoot la sauvegarde puis lance le
// walk), crée le sous-dossier « VaultDrop » et l'enregistre comme racine.
// walk), crée le sous-dossier « Kazier » et l'enregistre comme racine.
LaunchedEffect(pendingDefaultPick) {
val uri = pendingDefaultPick ?: return@LaunchedEffect
val target = uri.toString()
@@ -224,10 +224,10 @@ fun FolderListScreen(
while (attempts < 100) { // ~10 s max
val rootId = syncViewModel.rootResourceId(target)
if (rootId != null) {
val vaultFolderId = viewModel.ensureVaultDropFolder(uri, rootId)
if (vaultFolderId != null) {
val kazierRootId = viewModel.ensureKazierRootFolder(uri, rootId)
if (kazierRootId != null) {
pendingDefaultPick = null
viewModel.setDefaultRoot(vaultFolderId)
viewModel.setDefaultRoot(kazierRootId)
return@LaunchedEffect
}
}
@@ -806,7 +806,7 @@ private fun FolderBrowserContent(
contentPadding = PaddingValues(horizontal = 16.dp),
) {
item(key = "breadcrumb") {
// La racine VaultDrop n'est pas affichée : on ne peut pas remonter au-dessus.
// La racine Kazier n'est pas affichée : on ne peut pas remonter au-dessus.
if (atRoot) {
Spacer(Modifier.height(8.dp))
} else {
@@ -912,7 +912,7 @@ private fun FolderBrowserContent(
}
}
/** Écran obligatoire du premier lancement : choix/création de la racine VaultDrop. */
/** Écran obligatoire du premier lancement : choix/création de la racine Kazier. */
@Composable
private fun DefaultRootOnboarding(
importing: Boolean,
@@ -1,7 +1,7 @@
package com.vaultdrop.mobile.ui.folderlist
package com.kazier.mobile.ui.folderlist
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FolderEntity
/** Layer d'affichage de la page Fichiers. */
enum class HomeView {
@@ -1,25 +1,25 @@
package com.vaultdrop.mobile.ui.folderlist
package com.kazier.mobile.ui.folderlist
import android.content.Context
import android.net.Uri
import android.provider.DocumentsContract
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.auth.TokenProvider
import com.vaultdrop.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.local.referenceDate
import com.vaultdrop.mobile.data.preferences.DefaultRootStore
import com.vaultdrop.mobile.data.remote.ApiException
import com.vaultdrop.mobile.data.repository.FileRepository
import com.vaultdrop.mobile.data.repository.FolderRepository
import com.vaultdrop.mobile.data.repository.SaveFolderInput
import com.vaultdrop.mobile.domain.DeviceIdentity
import com.vaultdrop.mobile.features.saf.FileMover
import com.vaultdrop.mobile.features.saf.FileDeleter
import com.vaultdrop.mobile.features.saf.FolderDeleter
import com.vaultdrop.mobile.features.saf.SafFolderCreator
import com.kazier.mobile.R
import com.kazier.mobile.auth.TokenProvider
import com.kazier.mobile.data.local.entity.FileEntity
import com.kazier.mobile.data.local.entity.FolderEntity
import com.kazier.mobile.data.local.referenceDate
import com.kazier.mobile.data.preferences.DefaultRootStore
import com.kazier.mobile.data.remote.ApiException
import com.kazier.mobile.data.repository.FileRepository
import com.kazier.mobile.data.repository.FolderRepository
import com.kazier.mobile.data.repository.SaveFolderInput
import com.kazier.mobile.domain.DeviceIdentity
import com.kazier.mobile.features.saf.FileMover
import com.kazier.mobile.features.saf.FileDeleter
import com.kazier.mobile.features.saf.FolderDeleter
import com.kazier.mobile.features.saf.SafFolderCreator
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.flow.MutableStateFlow
@@ -56,7 +56,7 @@ class FolderListViewModel @Inject constructor(
private val _uiState = MutableStateFlow(FolderListUiState())
val uiState: StateFlow<FolderListUiState> = _uiState.asStateFlow()
/** Racine VaultDrop obligatoire : null = premier lancement (onboarding). */
/** Racine Kazier obligatoire : null = premier lancement (onboarding). */
private val _defaultRootId = MutableStateFlow(defaultRootStore.get())
val defaultRootId: StateFlow<String?> = _defaultRootId.asStateFlow()
@@ -76,11 +76,11 @@ class FolderListViewModel @Inject constructor(
}
/**
* Crée (ou retrouve) un sous-dossier « VaultDrop » dans l'arbre choisi et
* Crée (ou retrouve) un sous-dossier « Kazier » dans l'arbre choisi et
* l'enregistre en Room comme enfant de la racine. Retourne son id c'est
* lui qui devient la racine par défaut les PDF sont écrits.
*/
suspend fun ensureVaultDropFolder(rootUri: Uri, rootRoomId: String): String? {
suspend fun ensureKazierRootFolder(rootUri: Uri, rootRoomId: String): String? {
val resolver = context.contentResolver
val treeDocId = DocumentsContract.getTreeDocumentId(rootUri)
val label = context.getString(R.string.default_root_folder_label)
@@ -89,7 +89,7 @@ class FolderListViewModel @Inject constructor(
} else {
rootUri
}
val vaultFolderUri = runCatching {
val kazierFolderUri = runCatching {
DocumentsContract.createDocument(
resolver,
parentUri,
@@ -100,14 +100,14 @@ class FolderListViewModel @Inject constructor(
if (e is FileNotFoundException) {
DocumentsContract.buildDocumentUriUsingTree(rootUri, "$treeDocId/$label")
} else {
Timber.w(e, "cannot create VaultDrop folder")
Timber.w(e, "cannot create Kazier folder")
null
}
} ?: return null
val saved = folderRepository.saveFolder(
input = SaveFolderInput(
uri = vaultFolderUri.toString(),
uri = kazierFolderUri.toString(),
name = label,
exists = true,
createdInApp = true,
@@ -199,12 +199,12 @@ class FolderListViewModel @Inject constructor(
}
}
/** Remonte au parent du dossier courant (s'arrête à la racine VaultDrop). */
/** Remonte au parent du dossier courant (s'arrête à la racine Kazier). */
fun browseUp() {
val current = _browseFolderId.value
viewModelScope.launch {
val parent = current?.let { folderRepository.getFolder(it)?.parentResourceId }
// La racine par défaut (VaultDrop) est le plafond : remonter à son
// La racine par défaut (Kazier) est le plafond : remonter à son
// niveau ou plus haut ramène à l'explorateur de premier niveau.
if (parent != null && parent != _defaultRootId.value) {
_browseFolderId.value = parent
@@ -1,6 +1,6 @@
@file:OptIn(ExperimentalMaterial3Api::class)
package com.vaultdrop.mobile.ui.navigation
package com.kazier.mobile.ui.navigation
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -39,9 +39,9 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.vaultdrop.mobile.R
import com.vaultdrop.mobile.ui.components.DeleteDropdownButton
import com.vaultdrop.mobile.features.saf.FileDeleter
import com.kazier.mobile.R
import com.kazier.mobile.ui.components.DeleteDropdownButton
import com.kazier.mobile.features.saf.FileDeleter
enum class NavTab(val route: String) {
FILES(Routes.FILES),
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.ui.navigation
package com.kazier.mobile.ui.navigation
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -11,11 +11,11 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.vaultdrop.mobile.features.connection.ConnectionStatusViewModel
import com.vaultdrop.mobile.features.sync.SyncViewModel
import com.vaultdrop.mobile.ui.auth.AuthState
import com.vaultdrop.mobile.ui.auth.AuthViewModel
import com.vaultdrop.mobile.ui.auth.LoginScreen
import com.kazier.mobile.features.connection.ConnectionStatusViewModel
import com.kazier.mobile.features.sync.SyncViewModel
import com.kazier.mobile.ui.auth.AuthState
import com.kazier.mobile.ui.auth.AuthViewModel
import com.kazier.mobile.ui.auth.LoginScreen
@Composable
private fun SplashScreen() {
@@ -33,7 +33,7 @@ private fun SplashScreen() {
* navigation principale si signé in / mode local).
*/
@Composable
fun VaultDropApp(
fun KazierApp(
authViewModel: AuthViewModel = hiltViewModel(),
syncViewModel: SyncViewModel = hiltViewModel(),
connectionStatusViewModel: ConnectionStatusViewModel = hiltViewModel(),

Some files were not shown because too many files have changed in this diff Show More