diff --git a/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/SingletonModule.kt b/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/SingletonModule.kt index 8722bc1..cc696dc 100644 --- a/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/SingletonModule.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/SingletonModule.kt @@ -6,7 +6,6 @@ import com.github.nullptroma.wallenc.data.db.app.dao.StorageKeyMapDao import com.github.nullptroma.wallenc.data.db.app.dao.StorageMetaInfoDao import com.github.nullptroma.wallenc.data.db.app.repository.StorageKeyMapRepository import com.github.nullptroma.wallenc.data.db.app.repository.StorageMetaInfoRepository -import com.github.nullptroma.wallenc.data.storages.UnlockManager import com.github.nullptroma.wallenc.data.tasks.TaskOrchestrator import com.github.nullptroma.wallenc.data.vaults.VaultsManager import com.github.nullptroma.wallenc.domain.interfaces.IUnlockManager diff --git a/app/src/main/java/com/github/nullptroma/wallenc/app/tasks/TaskPipelineForegroundService.kt b/app/src/main/java/com/github/nullptroma/wallenc/app/tasks/TaskPipelineForegroundService.kt index 868a6a8..e57dc2c 100644 --- a/app/src/main/java/com/github/nullptroma/wallenc/app/tasks/TaskPipelineForegroundService.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/app/tasks/TaskPipelineForegroundService.kt @@ -6,7 +6,6 @@ import android.app.NotificationManager import android.app.PendingIntent import android.app.Service import android.content.Intent -import android.os.Build import android.os.IBinder import androidx.core.app.NotificationCompat import com.github.nullptroma.wallenc.app.R diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f8c6127..545704f 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,10 +1,2 @@ - - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 - #FF000000 - #FFFFFFFF - \ No newline at end of file + diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageKeyMap.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageKeyMap.kt index ddd4fd5..95ee98a 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageKeyMap.kt +++ b/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageKeyMap.kt @@ -2,7 +2,6 @@ package com.github.nullptroma.wallenc.data.db.app.model import androidx.room.ColumnInfo import androidx.room.Entity -import com.github.nullptroma.wallenc.data.db.app.repository.StorageKeyMapRepository import com.github.nullptroma.wallenc.data.model.StorageKeyMap import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey import java.util.UUID diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageMetaInfo.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageMetaInfo.kt index f63dc42..ce34e06 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageMetaInfo.kt +++ b/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageMetaInfo.kt @@ -3,7 +3,6 @@ package com.github.nullptroma.wallenc.data.db.app.model import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey -import com.github.nullptroma.wallenc.domain.common.impl.CommonStorageMetaInfo import java.util.UUID @Entity(tableName = "storage_meta_infos") diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/model/StorageKeyMap.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/model/StorageKeyMap.kt index 9a949c4..727b508 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/model/StorageKeyMap.kt +++ b/data/src/main/java/com/github/nullptroma/wallenc/data/model/StorageKeyMap.kt @@ -1,6 +1,5 @@ package com.github.nullptroma.wallenc.data.model -import androidx.room.ColumnInfo import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey import java.util.UUID diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorage.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorage.kt index 01c14e8..12afe8e 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorage.kt +++ b/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorage.kt @@ -1,7 +1,6 @@ package com.github.nullptroma.wallenc.data.storages.encrypt import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper -import com.github.nullptroma.wallenc.data.db.app.repository.StorageMetaInfoRepository import com.github.nullptroma.wallenc.domain.common.impl.CommonStorageMetaInfo import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey import com.github.nullptroma.wallenc.domain.datatypes.StorageEncryptionInfo @@ -13,15 +12,14 @@ import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.DisposableHandle import kotlinx.coroutines.Job +import kotlinx.coroutines.ensureActive import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.map -import kotlinx.coroutines.ensureActive import kotlinx.coroutines.withContext import java.io.InputStream import java.util.UUID -import kotlin.coroutines.coroutineContext class EncryptedStorage private constructor( private val source: IStorage, diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorageAccessor.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorageAccessor.kt index 3ba8a79..8a1b57c 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorageAccessor.kt +++ b/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorageAccessor.kt @@ -1,6 +1,5 @@ package com.github.nullptroma.wallenc.data.storages.encrypt -import com.github.nullptroma.wallenc.data.utils.CloseHandledStreamExtension.Companion.onClosed import com.github.nullptroma.wallenc.data.utils.CloseHandledStreamExtension.Companion.onClosing import com.github.nullptroma.wallenc.domain.common.impl.CommonDirectory import com.github.nullptroma.wallenc.domain.common.impl.CommonFile diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/local/LocalStorage.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/storages/local/LocalStorage.kt index 404d1c5..b44f1f4 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/local/LocalStorage.kt +++ b/data/src/main/java/com/github/nullptroma/wallenc/data/storages/local/LocalStorage.kt @@ -15,7 +15,6 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.map import kotlinx.coroutines.withContext import java.io.InputStream -import kotlin.coroutines.coroutineContext import java.util.UUID diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/tasks/TaskOrchestrator.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/tasks/TaskOrchestrator.kt index 0ef29fb..76ab0ca 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/tasks/TaskOrchestrator.kt +++ b/data/src/main/java/com/github/nullptroma/wallenc/data/tasks/TaskOrchestrator.kt @@ -13,15 +13,17 @@ import com.github.nullptroma.wallenc.domain.tasks.TaskProgress import com.github.nullptroma.wallenc.domain.tasks.TaskRunState import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Deferred import kotlinx.coroutines.Job import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.async import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch import kotlinx.coroutines.CancellationException -import kotlinx.coroutines.withContext import java.util.Collections import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.atomic.AtomicReference @@ -77,16 +79,18 @@ class TaskOrchestrator( } emitState(id) - val job = Job(pipelineSupervisor) - currentRunJob.set(job) val ctx = TaskContextImpl( taskId = id, onRunningProgress = { p -> onRunningProgress(id, envelope.title, envelope.requiresForeground, p) }, appendLog = { level, msg -> appendLogLine(level, msg) }, ) try { - withContext(ioDispatcher + job) { - envelope.work.run(ctx) + coroutineScope { + val runJob: Deferred = async(ioDispatcher) { + envelope.work.run(ctx) + } + currentRunJob.set(runJob) + runJob.await() } replaceTask(id) { it.copy(state = TaskRunState.Completed) } cancelRequested.remove(id) diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/common/impl/CommonStorageMetaInfo.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/common/impl/CommonStorageMetaInfo.kt index f5c69ba..099f4fa 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/common/impl/CommonStorageMetaInfo.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/common/impl/CommonStorageMetaInfo.kt @@ -1,8 +1,6 @@ package com.github.nullptroma.wallenc.domain.common.impl import com.github.nullptroma.wallenc.domain.datatypes.StorageEncryptionInfo -import com.github.nullptroma.wallenc.domain.interfaces.IMetaInfo -import com.github.nullptroma.wallenc.domain.interfaces.IStorage import com.github.nullptroma.wallenc.domain.interfaces.IStorageMetaInfo import java.time.Clock import java.time.Instant diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/encrypt/EncryptorWithStaticIv.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/encrypt/EncryptorWithStaticIv.kt index a6902e6..22c46fe 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/encrypt/EncryptorWithStaticIv.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/encrypt/EncryptorWithStaticIv.kt @@ -1,9 +1,6 @@ package com.github.nullptroma.wallenc.domain.encrypt -import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey -import com.github.nullptroma.wallenc.domain.datatypes.StorageEncryptionInfo import com.github.nullptroma.wallenc.domain.encrypt.Encryptor.Companion.AES_SETTINGS -import com.github.nullptroma.wallenc.domain.encrypt.Encryptor.Companion.IV_LEN import kotlinx.coroutines.DisposableHandle import java.io.InputStream import java.io.OutputStream @@ -14,7 +11,6 @@ import javax.crypto.SecretKey import javax.crypto.spec.IvParameterSpec import kotlin.io.encoding.Base64 import kotlin.io.encoding.ExperimentalEncodingApi -import kotlin.random.Random class EncryptorWithStaticIv(private var secretKey: SecretKey, iv: ByteArray) : DisposableHandle { private val ivSpec = IvParameterSpec(iv) diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/RemoveStorageUseCase.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/RemoveStorageUseCase.kt index 3dd0db3..94719b4 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/RemoveStorageUseCase.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/RemoveStorageUseCase.kt @@ -4,7 +4,6 @@ import com.github.nullptroma.wallenc.domain.interfaces.IStorage import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo import com.github.nullptroma.wallenc.domain.interfaces.IUnlockManager import com.github.nullptroma.wallenc.domain.interfaces.IVaultsManager -import java.util.UUID class RemoveStorageUseCase( private val vaultsManager: IVaultsManager, diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/ViewModelBase.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/ViewModelBase.kt index c8f87cf..af2d491 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/ViewModelBase.kt +++ b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/ViewModelBase.kt @@ -6,7 +6,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow abstract class ViewModelBase(initState: TState) : ViewModel() { - private val _state = MutableStateFlow(initState) + private val _state = MutableStateFlow(initState) val state: StateFlow get() = _state diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencUi.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencUi.kt index 59d4080..8f6b781 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencUi.kt +++ b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencUi.kt @@ -3,9 +3,6 @@ package com.github.nullptroma.wallenc.presentation import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.material.icons.Icons @@ -23,9 +20,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable @@ -35,8 +30,8 @@ import com.github.nullptroma.wallenc.presentation.navigation.rememberNavigationS import com.github.nullptroma.wallenc.presentation.screens.main.MainRoute import com.github.nullptroma.wallenc.presentation.screens.main.MainScreen import com.github.nullptroma.wallenc.presentation.screens.main.MainViewModel -import com.github.nullptroma.wallenc.presentation.screens.main.screens.tasks.TaskPipelineScreen import com.github.nullptroma.wallenc.presentation.screens.main.screens.tasks.TaskPipelineRoute +import com.github.nullptroma.wallenc.presentation.screens.main.screens.tasks.TaskPipelineScreen import com.github.nullptroma.wallenc.presentation.screens.settings.SettingsRoute import com.github.nullptroma.wallenc.presentation.screens.settings.SettingsScreen import com.github.nullptroma.wallenc.presentation.screens.settings.SettingsViewModel @@ -100,7 +95,7 @@ fun WallencNavRoot(viewModel: WallencViewModel = hiltViewModel()) { label = { Text(stringResource(navBarItemData.nameStringResourceId)) }, selected = currentRoute?.startsWith(routeClassName) == true, onClick = { - var route = topLevelRoutes[navBarItemData.screenRouteClass] + val route = topLevelRoutes[navBarItemData.screenRouteClass] if (route == null) throw NullPointerException("Route $route not found") if (currentRoute?.startsWith(routeClassName) != true) navState.changeTop( diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencViewModel.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencViewModel.kt index 69c4e1f..6837d21 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencViewModel.kt +++ b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencViewModel.kt @@ -17,7 +17,7 @@ class WallencViewModel @javax.inject.Inject constructor(savedStateHandle: SavedS @OptIn(SavedStateHandleSaveableApi::class) var routes by savedStateHandle.saveable { mutableStateOf( - mapOf( + mapOf( MainRoute::class.qualifiedName!! to MainRoute(), TaskPipelineRoute::class.qualifiedName!! to TaskPipelineRoute(), SettingsRoute::class.qualifiedName!! to SettingsRoute() diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/StorageTree.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/StorageTree.kt index 5b2db0a..d8a7faa 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/StorageTree.kt +++ b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/StorageTree.kt @@ -1,10 +1,7 @@ package com.github.nullptroma.wallenc.presentation.elements -import android.widget.FrameLayout -import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.background import androidx.compose.foundation.clickable -import androidx.compose.foundation.indication import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -16,7 +13,6 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Lock import androidx.compose.material.icons.filled.LockOpen diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/extensions/Modifier.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/extensions/Modifier.kt index 61345cb..dd61d42 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/extensions/Modifier.kt +++ b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/extensions/Modifier.kt @@ -1,19 +1,10 @@ package com.github.nullptroma.wallenc.presentation.extensions -import androidx.compose.foundation.Indication -import androidx.compose.foundation.IndicationNodeFactory -import androidx.compose.foundation.LocalIndication -import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.composed import androidx.compose.ui.input.pointer.PointerEventPass import androidx.compose.ui.input.pointer.PointerInputChange import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.layout -import androidx.compose.ui.platform.debugInspectorInfo -import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.Dp fun Modifier.ignoreHorizontalParentPadding(horizontal: Dp): Modifier { diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainScreen.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainScreen.kt index d150bde..5405fc5 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainScreen.kt +++ b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainScreen.kt @@ -3,10 +3,8 @@ package com.github.nullptroma.wallenc.presentation.screens.main import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut -import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api @@ -18,7 +16,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultScreen.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultScreen.kt index 7c322e9..2e8a7b1 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultScreen.kt +++ b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultScreen.kt @@ -19,8 +19,8 @@ import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha @@ -31,7 +31,6 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.github.nullptroma.wallenc.presentation.elements.StorageTree import com.github.nullptroma.wallenc.presentation.extensions.gesturesDisabled -import kotlinx.coroutines.flow.collect @Composable fun LocalVaultScreen( diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsScreen.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsScreen.kt index 09f7729..835e9d0 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsScreen.kt +++ b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsScreen.kt @@ -11,5 +11,5 @@ import androidx.hilt.navigation.compose.hiltViewModel @Composable fun RemoteVaultsScreen(modifier: Modifier = Modifier, viewModel: RemoteVaultsViewModel = hiltViewModel()) { - Text("Remote vault screen") + Text("Remote vault screen", modifier = modifier) } \ No newline at end of file