diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/destination/RemoteDestination.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/destination/RemoteDestination.kt index 7e1d481..5ae02cd 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/destination/RemoteDestination.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/destination/RemoteDestination.kt @@ -48,4 +48,6 @@ sealed interface RemoteDestination : Parcelable { val url: String ) : RemoteDestination + @Parcelize + data object Logs: RemoteDestination } diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/settings/LogsScreen.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/settings/LogsScreen.kt index f15c05e..88566d0 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/settings/LogsScreen.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/settings/LogsScreen.kt @@ -28,14 +28,12 @@ import androidx.compose.ui.platform.LocalClipboard import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.dp -import androidx.lifecycle.viewModelScope import io.github.wiiznokes.gitnote.BuildConfig import io.github.wiiznokes.gitnote.R import io.github.wiiznokes.gitnote.ui.component.AppPage import io.github.wiiznokes.gitnote.ui.component.CustomDropDown import io.github.wiiznokes.gitnote.ui.component.CustomDropDownModel import io.github.wiiznokes.gitnote.ui.component.SimpleIcon -import io.github.wiiznokes.gitnote.ui.viewmodel.SettingsViewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -71,15 +69,16 @@ private fun getTextStyleFromInt(id: Int): TextStyle { @Composable fun LogsScreen( onBackClick: () -> Unit, - vm: SettingsViewModel ) { val logLevel = remember { mutableStateOf(LogLevel.ERROR) } + val initTextValue = stringResource(R.string.loading) + val logState: MutableState = remember { - mutableStateOf(vm.uiHelper.getString(R.string.loading)) + mutableStateOf(initTextValue) } @@ -141,7 +140,7 @@ fun LogsScreen( ClipData.Item(logState.value) ) - vm.viewModelScope.launch { + CoroutineScope(Dispatchers.IO).launch { clipboardManager.setClipEntry(ClipEntry(data)) } diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/settings/SettingsNav.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/settings/SettingsNav.kt index ea82325..38650e9 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/settings/SettingsNav.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/settings/SettingsNav.kt @@ -53,7 +53,6 @@ fun SettingsNav( onBackClick = { navController.pop() }, - vm = vm ) } diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CloningScreen.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CloningScreen.kt index 5208843..6d91319 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CloningScreen.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/CloningScreen.kt @@ -8,8 +8,10 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import io.github.wiiznokes.gitnote.R import io.github.wiiznokes.gitnote.ui.component.AppPage import io.github.wiiznokes.gitnote.ui.viewmodel.InitState @@ -20,6 +22,7 @@ private const val TAG = "CloningScreen" fun CloningScreen( cloneState: InitState, onCancel: () -> Unit, + onShowLogs: () -> Unit, ) { AppPage( title = "Clone", @@ -31,11 +34,24 @@ fun CloningScreen( Spacer(Modifier.height(20.dp)) + if (cloneState is InitState.Error) { + Button( + onClick = onShowLogs + ) { + Text(stringResource(R.string.show_logs)) + } + } + Button( onClick = onCancel, enabled = cloneState !is InitState.CalculatingTimestamps && cloneState !is InitState.GeneratingDatabase ) { - Text("Cancel") + Text( + if (cloneState is InitState.Error) { + stringResource(R.string.go_back) + + } else stringResource(R.string.cancel) + ) } } } @@ -45,7 +61,8 @@ fun CloningScreen( private fun PickRepoScreenPreview() { CloningScreen( - cloneState = InitState.Cloning(50), + cloneState = InitState.Error("Can't clone repo"), onCancel = {}, + onShowLogs = {} ) } \ No newline at end of file diff --git a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt index f2fb994..5475816 100644 --- a/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt +++ b/app/src/main/java/io/github/wiiznokes/gitnote/ui/screen/setup/remote/RemoteNav.kt @@ -22,7 +22,9 @@ import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.PickRepo import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.SelectGenerateNewSshKeys import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.SelectProvider import io.github.wiiznokes.gitnote.ui.destination.RemoteDestination.SelectSetupAutomatically +import io.github.wiiznokes.gitnote.ui.destination.SettingsDestination import io.github.wiiznokes.gitnote.ui.model.StorageConfiguration +import io.github.wiiznokes.gitnote.ui.screen.settings.LogsScreen import io.github.wiiznokes.gitnote.ui.utils.slide import io.github.wiiznokes.gitnote.ui.viewmodel.SetupViewModel @@ -177,8 +179,20 @@ fun RemoteScreen( onCancel = { if (vm.cancelClone()) navController.pop() + }, + onShowLogs = { + navController.navigate(RemoteDestination.Logs) } + ) + + RemoteDestination.Logs -> { + LogsScreen( + onBackClick = { + navController.pop() + }, + ) + } } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 88a605f..f086275 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -163,5 +163,7 @@ Load from file Private key Private key password + Cancel + Go back