Шифрование путей

This commit is contained in:
Roman Pytkov
2025-01-01 22:28:16 +03:00
parent 82412db962
commit 25947449af
36 changed files with 402 additions and 68 deletions

View File

@@ -1,16 +1,24 @@
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
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material3.Card
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.Icon
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -20,19 +28,31 @@ fun LocalVaultScreen(modifier: Modifier = Modifier,
viewModel: LocalVaultViewModel = hiltViewModel()) {
val uiState by viewModel.state.collectAsStateWithLifecycle()
LazyColumn(modifier = modifier) {
items(uiState.storagesList) {
Card(modifier = Modifier.clickable {
viewModel.printAllFilesToLog(it)
}) {
val available by it.isAvailable.collectAsStateWithLifecycle()
val numOfFiles by it.numberOfFiles.collectAsStateWithLifecycle()
val size by it.size.collectAsStateWithLifecycle()
Column {
Text(it.uuid.toString())
Text("IsAvailable: $available")
Text("Files: $numOfFiles")
Text("Size: $size")
Scaffold(modifier = modifier, contentWindowInsets = WindowInsets(0.dp), floatingActionButton = {
FloatingActionButton(
onClick = {
viewModel.createStorage()
},
) {
Icon(Icons.Filled.Add, "Floating action button.")
}
}) { innerPadding ->
LazyColumn(modifier = Modifier.padding(innerPadding)) {
items(uiState.storagesList) {
Card(modifier = Modifier.pointerInput(Unit) {
detectTapGestures(
onTap = { _ -> viewModel.printAllFilesToLog(it) }
)
}) {
val available by it.isAvailable.collectAsStateWithLifecycle()
val numOfFiles by it.numberOfFiles.collectAsStateWithLifecycle()
val size by it.size.collectAsStateWithLifecycle()
Column {
Text(it.uuid.toString())
Text("IsAvailable: $available")
Text("Files: $numOfFiles")
Text("Size: $size")
}
}
}
}

View File

@@ -1,5 +1,5 @@
package com.github.nullptroma.wallenc.presentation.screens.main.screens.local.vault
import com.github.nullptroma.wallenc.domain.models.IStorage
import com.github.nullptroma.wallenc.domain.interfaces.IStorage
data class LocalVaultScreenState(val storagesList: List<IStorage>)

View File

@@ -1,12 +1,11 @@
package com.github.nullptroma.wallenc.presentation.screens.main.screens.local.vault
import android.app.Activity
import android.widget.Toast
import androidx.lifecycle.viewModelScope
import com.github.nullptroma.wallenc.domain.models.IDirectory
import com.github.nullptroma.wallenc.domain.models.IFile
import com.github.nullptroma.wallenc.domain.models.IStorage
import com.github.nullptroma.wallenc.domain.usecases.GetAllRawStoragesUseCase
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.IStorage
import com.github.nullptroma.wallenc.domain.usecases.ManageLocalVaultUseCase
import com.github.nullptroma.wallenc.domain.usecases.StorageFileManagementUseCase
import com.github.nullptroma.wallenc.presentation.viewmodel.ViewModelBase
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -17,13 +16,13 @@ import kotlin.system.measureTimeMillis
@HiltViewModel
class LocalVaultViewModel @Inject constructor(
private val _getAllRawStoragesUseCase: GetAllRawStoragesUseCase,
private val _storageFileManagementUseCase: StorageFileManagementUseCase
private val _manageLocalVaultUseCase: ManageLocalVaultUseCase,
private val _storageFileManagementUseCase: StorageFileManagementUseCase,
) :
ViewModelBase<LocalVaultScreenState>(LocalVaultScreenState(listOf())) {
init {
viewModelScope.launch {
_getAllRawStoragesUseCase.localStorage.storages.collect {
_manageLocalVaultUseCase.localStorages.collect {
val newState = state.value.copy(
storagesList = it
)
@@ -52,4 +51,10 @@ class LocalVaultViewModel @Inject constructor(
Timber.d("Time: $time ms")
}
}
fun createStorage() {
viewModelScope.launch {
_manageLocalVaultUseCase.createStorage()
}
}
}