Dispose для EncryptedStorage, скрытые системные файлы для LocalStorage

This commit is contained in:
Roman Pytkov
2025-01-05 15:50:14 +03:00
parent abbaa62412
commit ab82aa6e7b
8 changed files with 67 additions and 38 deletions

View File

@@ -47,9 +47,6 @@ android {
}
dependencies {
// Timber
implementation(libs.timber)
implementation(libs.navigation)
implementation(libs.navigation.hilt.compose)

View File

@@ -0,0 +1,7 @@
package com.github.nullptroma.wallenc.presentation.extensions
import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo
fun IStorageInfo.toPrintable(): String {
return "{ uuid: $uuid, enc: ${encInfo.value} }"
}

View File

@@ -1,5 +1,6 @@
package com.github.nullptroma.wallenc.presentation.screens.main.screens.local.vault
import androidx.compose.foundation.clickable
import androidx.compose.foundation.gestures.detectTapGestures
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.WindowInsets
@@ -39,19 +40,21 @@ fun LocalVaultScreen(modifier: Modifier = Modifier,
}) { innerPadding ->
LazyColumn(modifier = Modifier.padding(innerPadding)) {
items(uiState.storagesList) {
Card(modifier = Modifier.pointerInput(Unit) {
Card(modifier = Modifier.clickable { }.pointerInput(Unit) {
detectTapGestures(
onTap = { _ -> viewModel.printAllFilesToLog(it) }
onTap = { _ -> viewModel.printStorageInfoToLog(it) }
)
}) {
val available by it.isAvailable.collectAsStateWithLifecycle()
val numOfFiles by it.numberOfFiles.collectAsStateWithLifecycle()
val size by it.size.collectAsStateWithLifecycle()
val enc by it.encInfo.collectAsStateWithLifecycle()
Column {
Text(it.uuid.toString())
Text("IsAvailable: $available")
Text("Files: $numOfFiles")
Text("Size: $size")
Text("Enc: $enc")
}
}
}

View File

@@ -3,13 +3,14 @@ package com.github.nullptroma.wallenc.presentation.screens.main.screens.local.va
import androidx.lifecycle.viewModelScope
import com.github.nullptroma.wallenc.domain.interfaces.IDirectory
import com.github.nullptroma.wallenc.domain.interfaces.IFile
import com.github.nullptroma.wallenc.domain.interfaces.ILogger
import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo
import com.github.nullptroma.wallenc.domain.usecases.ManageLocalVaultUseCase
import com.github.nullptroma.wallenc.domain.usecases.StorageFileManagementUseCase
import com.github.nullptroma.wallenc.presentation.extensions.toPrintable
import com.github.nullptroma.wallenc.presentation.viewmodel.ViewModelBase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject
import kotlin.system.measureTimeMillis
@@ -17,6 +18,7 @@ import kotlin.system.measureTimeMillis
class LocalVaultViewModel @Inject constructor(
private val _manageLocalVaultUseCase: ManageLocalVaultUseCase,
private val _storageFileManagementUseCase: StorageFileManagementUseCase,
private val logger: ILogger
) :
ViewModelBase<LocalVaultScreenState>(LocalVaultScreenState(listOf())) {
init {
@@ -30,7 +32,7 @@ class LocalVaultViewModel @Inject constructor(
}
}
fun printAllFilesToLog(storage: IStorageInfo) {
fun printStorageInfoToLog(storage: IStorageInfo) {
_storageFileManagementUseCase.setStorage(storage)
viewModelScope.launch {
val files: List<IFile>
@@ -40,14 +42,13 @@ class LocalVaultViewModel @Inject constructor(
dirs = _storageFileManagementUseCase.getAllDirs()
}
for (file in files) {
Timber.tag("Files")
Timber.d(file.metaInfo.toString())
logger.debug("Files", file.metaInfo.toString())
}
for (dir in dirs) {
Timber.tag("Dirs")
Timber.d(dir.metaInfo.toString())
logger.debug("Dirs", dir.metaInfo.toString())
}
Timber.d("Time: $time ms")
logger.debug("Time", "Time: $time ms")
logger.debug("Storage", storage.toPrintable())
}
}

View File

@@ -4,15 +4,10 @@ package com.github.nullptroma.wallenc.presentation.viewmodel
import androidx.lifecycle.ViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import timber.log.Timber
abstract class ViewModelBase<TState>(initState: TState) : ViewModel() {
private val _state = MutableStateFlow<TState>(initState)
init {
Timber.d("Init ViewModel ${this.javaClass.name}")
}
val state: StateFlow<TState>
get() = _state