Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 3 additions & 26 deletions app/src/main/java/io/github/wiiznokes/gitnote/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,16 @@ import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.lifecycle.viewmodel.compose.viewModel
import dev.olshevski.navigation.reimagined.AnimatedNavHost
import dev.olshevski.navigation.reimagined.NavBackHandler
import dev.olshevski.navigation.reimagined.navigate
import dev.olshevski.navigation.reimagined.popAll
import dev.olshevski.navigation.reimagined.popUpTo
import dev.olshevski.navigation.reimagined.rememberNavController
import io.github.wiiznokes.gitnote.MyApp.Companion.appModule
import io.github.wiiznokes.gitnote.helper.NoteSaver
import io.github.wiiznokes.gitnote.ui.destination.AppDestination
import io.github.wiiznokes.gitnote.ui.destination.Destination
import io.github.wiiznokes.gitnote.ui.destination.EditParams
import io.github.wiiznokes.gitnote.ui.destination.SetupDestination
import io.github.wiiznokes.gitnote.ui.screen.app.AppScreen
import io.github.wiiznokes.gitnote.ui.screen.setup.SetupNav
Expand Down Expand Up @@ -58,32 +55,12 @@ class MainActivity : ComponentActivity() {
dynamicColor = dynamicColor
) {

val startDestination: Destination = remember {
val startDestination: Destination = rememberSaveable {
if (runBlocking { vm.tryInit() }) {
if (NoteSaver.isEditUnsaved()) {
val saveInfo = NoteSaver.getSaveState()
if (saveInfo == null) {
Log.d(TAG, "can't retrieve the last saved note state")
Destination.App(AppDestination.Grid)
} else {
Log.d(TAG, "launch as EDIT_IS_UNSAVED")
Destination.App(
AppDestination.Edit(
EditParams.Saved(
note = saveInfo.previousNote,
editType = saveInfo.editType,
name = saveInfo.name,
content = saveInfo.content
)
)
)
}

} else Destination.App(AppDestination.Grid)
Destination.App(AppDestination.Grid)
} else Destination.Setup(SetupDestination.Main)
}


val navController =
rememberNavController(startDestination = startDestination)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package io.github.wiiznokes.gitnote.ui.screen.app

import android.util.Log
import androidx.compose.animation.ContentTransform
import androidx.compose.runtime.Composable
import androidx.compose.runtime.saveable.rememberSaveable
import dev.olshevski.navigation.reimagined.AnimatedNavHost
import dev.olshevski.navigation.reimagined.NavAction
import dev.olshevski.navigation.reimagined.NavBackHandler
Expand All @@ -10,6 +12,7 @@ import dev.olshevski.navigation.reimagined.NavTransitionSpec
import dev.olshevski.navigation.reimagined.navigate
import dev.olshevski.navigation.reimagined.pop
import dev.olshevski.navigation.reimagined.rememberNavController
import io.github.wiiznokes.gitnote.helper.NoteSaver
import io.github.wiiznokes.gitnote.ui.destination.AppDestination
import io.github.wiiznokes.gitnote.ui.destination.EditParams
import io.github.wiiznokes.gitnote.ui.destination.SettingsDestination
Expand All @@ -28,8 +31,34 @@ fun AppScreen(
onCloseRepo: () -> Unit,
) {

val initialBackstack: List<AppDestination> = rememberSaveable {
buildList {
add(appDestination)

if (NoteSaver.isEditUnsaved()) {
val saveInfo = NoteSaver.getSaveState()
if (saveInfo == null) {
Log.d(TAG, "can't retrieve the last saved note state")
} else {
Log.d(TAG, "launch as EDIT_IS_UNSAVED")
add(
AppDestination.Edit(
EditParams.Saved(
note = saveInfo.previousNote,
editType = saveInfo.editType,
name = saveInfo.name,
content = saveInfo.content
)
)
)
}
}
}
}


val navController =
rememberNavController(startDestination = appDestination)
rememberNavController(initialBackstack)

NavBackHandler(navController)

Expand Down Expand Up @@ -58,10 +87,6 @@ fun AppScreen(
editParams = it.params,
onFinished = {
navController.pop()

if (it.params is EditParams.Saved) {
navController.navigate(AppDestination.Grid)
}
}
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import androidx.compose.ui.unit.dp
import io.github.wiiznokes.gitnote.R
import io.github.wiiznokes.gitnote.manager.ExtensionType
import io.github.wiiznokes.gitnote.manager.extensionType
import io.github.wiiznokes.gitnote.ui.component.RequestConfirmationDialog
import io.github.wiiznokes.gitnote.ui.component.SimpleIcon
import io.github.wiiznokes.gitnote.ui.destination.EditParams
import io.github.wiiznokes.gitnote.ui.model.EditType
Expand All @@ -64,6 +65,7 @@ fun EditScreen(
onFinished: () -> Unit,
) {


val extension = editParams.fileExtension()

val vm = when (extensionType(extension.text)) {
Expand All @@ -72,10 +74,25 @@ fun EditScreen(
null -> throw Exception("file extension not supported, but present in the database?? $extension")
}

if (editParams is EditParams.Saved) {
BackHandler {
val showShouldQuitDialog = rememberSaveable {
mutableStateOf(false)
}

RequestConfirmationDialog(
expanded = showShouldQuitDialog,
text = stringResource(R.string.confirmation_quit_edit_dialog),
onConfirmation = {
vm.shouldSaveWhenQuitting = false
onFinished()
}
)

BackHandler {
if (vm.isPreviousNoteTheSame()) {
vm.shouldSaveWhenQuitting = false
onFinished()
} else {
showShouldQuitDialog.value = true
}
}

Expand Down Expand Up @@ -108,8 +125,12 @@ fun EditScreen(
navigationIcon = {
IconButton(
onClick = {
vm.shouldSaveWhenQuitting = false
onFinished()
if (vm.isPreviousNoteTheSame()) {
vm.shouldSaveWhenQuitting = false
onFinished()
} else {
showShouldQuitDialog.value = true
}
},
) {
SimpleIcon(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,7 @@ open class TextVM() : ViewModel() {
return success(note)
}

private fun isPreviousNoteTheSame(): Boolean =
fun isPreviousNoteTheSame(): Boolean =
previousNote.nameWithoutExtension() == NameValidation.removeEndingWhiteSpace(name.value.text)
&& previousNote.content == content.value.text

Expand Down
5 changes: 0 additions & 5 deletions app/src/main/res/values-cs/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@
<string name="system_theme">Systémový</string>
<string name="light_theme">Světlý</string>
<string name="dark_theme">Tmavý</string>
<string name="modification_sort_type">Modifikace</string>
<string name="alpha_numeric_sort_type">Alfanumerické</string>
<string name="ascending_sort_order">Vzestupné</string>
<string name="descending_sort_order">Sestupné</string>
<string name="new_folder_label">Název nové složky</string>
<string name="create_new_folder">Vytvořit novou složku</string>
<string name="yes">Ano</string>
Expand All @@ -16,7 +12,6 @@
<string name="search_in_notes">Hledat v poznámkách</string>
<string name="user_interface">Uživatelské rozhraní</string>
<string name="dynamic_colors">Dynamické barvy</string>
<string name="sort_type">Typ řazení</string>
<string name="sort_order">Pořadí řazení</string>
<string name="minimal_note_width">Minimální šířka poznámky</string>
<string name="show_long_notes">Úplně zobrazit dlouhé poznámky</string>
Expand Down
35 changes: 28 additions & 7 deletions app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,13 @@
<string name="dark_theme">Sombre</string>


<string name="modification_sort_type">Modification</string>
<string name="alpha_numeric_sort_type">Alpha numérique</string>

<string name="ascending_sort_order">Ascendant</string>
<string name="descending_sort_order">Descendant</string>


<string name="error_invalid_name">Le nom est invalide</string>
<string name="error_invalid_extension">L\'extension est invalide</string>

<string name="error_folder_already_exist">Le dossier existe déjà</string>

<string name="oldest_sort_order">Plus ancient</string>
<string name="new_folder_label">Nom du nouveau dossier</string>
<string name="create_new_folder">Créer un nouveau dossier</string>

Expand All @@ -31,8 +26,9 @@
<string name="search_in_notes">Rechercher</string>
<string name="user_interface">Interface</string>
<string name="dynamic_colors">Couleurs dynamique</string>
<string name="sort_type">Type de tri</string>

<string name="sort_order">Odre du tri</string>
<string name="defaultPathForNewNote">Chemin par défaut pour les nouvelles notes</string>
<string name="minimal_note_width">Largeur minimal d\'une note</string>
<string name="show_long_notes">Montrer les longues notes entièrement</string>
<string name="remember_last_opened_folder">Se souvenir du dernier dossier ouvert</string>
Expand All @@ -47,10 +43,12 @@
<string name="password">Mot de passe</string>
<string name="username">Nom d\'utilisateur</string>
<string name="remote_url">Url du dépôt distant</string>
<string name="git_author_email">Mail de l\'auteur Git</string>
<string name="close_repository">Fermer le dépôt</string>
<string name="close_repository_confirmation">Voulez vous vraiment fermer le dépôt ?</string>
<string name="version">Version</string>
<string name="show_logs">Montrer les logs</string>
<string name="success_reload">La base de donnée a été rechargé avec succès</string>
<string name="report_an_issue">Signaler un problème</string>
<string name="source_code">Code source</string>
<string name="libraries">Bibliothèques open source</string>
Expand All @@ -75,6 +73,7 @@
<string name="error_create_repo">Impossible de créer le dépôt: %1$s</string>
<string name="error_note_is_the_same">Aucune modification</string>
<string name="grid">Grille</string>
<string name="switch_to_grid_view">Passer à l\'affichage en grille</string>
<string name="about">À propos</string>
<string name="app_page_choose_method">Choisir la méthode</string>
<string name="create_local_repo">Créer un dépôt local</string>
Expand All @@ -87,6 +86,7 @@
<string name="create_repo_explorer">Créer un dépôt dans ce dossier</string>
<string name="open_repo_explorer">Ouvrir ce dépôt</string>
<string name="clone_repo_explorer">Cloner le dépôt dans ce dossier</string>
<string name="clone_repo_explorer_use_url_for_root_folder">Clonez le dépôt dans ce dossier et utilisez l\'URL comme nom du dossier racine</string>
<string name="quick_links">Liens rapides</string>
<string name="quick_links_home_page">Page d\'accueil</string>
<string name="quick_links_create_repo">Créer dépôt</string>
Expand Down Expand Up @@ -125,6 +125,7 @@

<string name="read_only_mode_activate">Activer la lecture seule</string>
<string name="read_only_mode_deactive">Desactiver la lecture seule</string>
<string name="authorize_gitnote">Autoriser Gitnote et récupérer les métadonnées des dépôts</string>
<string name="clone_url">Clone URL</string>
<string name="url_explain_create_remote_repo">"Allez sur la page Web, créez un référentiel et copiez son URL"</string>
<string name="url_explain_enter_url">Entrez l\'URL de clonage</string>
Expand All @@ -146,6 +147,7 @@
<string name="create_private_repo">Créer un dépôt privé %1$s</string>
<string name="we_need_ssh_keys_to_authenticate">Besoin de clés SSH pour s\'authentifier</string>
<string name="generate_new_keys">Générer de nouvelles clés</string>
<string name="custom">Non spécifié</string>
<string name="git_hosting_provider">Fournisseur d\'hébergement Git</string>
<string name="select_a_git_hosting_provider">Sélectionnez un fournisseur d\'hébergement Git</string>
<string name="setup_selection">Sélection de la configuration</string>
Expand All @@ -155,4 +157,23 @@
<string name="loading">Chargement…</string>
<string name="logs">Journaux</string>
<string name="extension">Extension: %1$s</string>
<string name="az_sort_order">A-Z</string>
<string name="za_sort_order">Z-A</string>
<string name="most_recent_sort_order">Plus récent</string>
<string name="sort_order_folder">Odre du tri des dossiers</string>
<string name="git_author_name">Nom de l\'auteur Git</string>
<string name="reload_database">Recharger la base de donnée</string>
<string name="list">Liste</string>
<string name="switch_to_list_view">Passer à l\'affichage en liste</string>
<string name="authorize_gitnote_title">Récupérer les métadonnées des dépôts</string>
<string name="custom_ssh_keys">Utiliser des clés SSH personnalisées</string>
<string name="parent_path">Dossier parent: %1$s</string>
<string name="pick_folder">Sélectionnez ce dossier</string>
<string name="public_key">Clé publique</string>
<string name="load_from_file">Charger depuis un fichier</string>
<string name="private_key">Clé privée</string>
<string name="private_key_password">Mot de passe de la clé privée</string>
<string name="cancel">Annuler</string>
<string name="go_back">Retour</string>
<string name="confirmation_quit_edit_dialog">Êtes-vous sûr de vouloir abandonner ? Vous perdrez toutes vos modifications.</string>
</resources>
5 changes: 0 additions & 5 deletions app/src/main/res/values-ru-rRU/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@
<string name="system_theme">Системная</string>
<string name="light_theme">Светлая</string>
<string name="dark_theme">Тёмная</string>
<string name="modification_sort_type">По изменению</string>
<string name="alpha_numeric_sort_type">По алфавиту и числам</string>
<string name="ascending_sort_order">По возрастанию</string>
<string name="descending_sort_order">По убыванию</string>
<string name="new_folder_label">Имя новой папки</string>
<string name="create_new_folder">Создать новую папку</string>
<string name="yes">Да</string>
Expand All @@ -16,7 +12,6 @@
<string name="search_in_notes">Поиск в заметках</string>
<string name="user_interface">Интерфейс</string>
<string name="dynamic_colors">Динамические цвета</string>
<string name="sort_type">Тип сортировки</string>
<string name="sort_order">Порядок сортировки</string>
<string name="minimal_note_width">Минимальная ширина заметки</string>
<string name="show_long_notes">Показывать длинные заметки полностью</string>
Expand Down
5 changes: 0 additions & 5 deletions app/src/main/res/values-uk/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@
<string name="system_theme">Системна</string>
<string name="light_theme">Світла</string>
<string name="dark_theme">Темна</string>
<string name="modification_sort_type">За зміною</string>
<string name="alpha_numeric_sort_type">За абеткою та числами</string>
<string name="ascending_sort_order">За зростанням</string>
<string name="descending_sort_order">За спаданням</string>
<string name="new_folder_label">Назва нової папки</string>
<string name="create_new_folder">Створити нову папку</string>
<string name="yes">Так</string>
Expand All @@ -16,7 +12,6 @@
<string name="search_in_notes">Пошук у нотатках</string>
<string name="user_interface">Інтерфейс</string>
<string name="dynamic_colors">Динамічні кольори</string>
<string name="sort_type">Тип сортування</string>
<string name="sort_order">Порядок сортування</string>
<string name="minimal_note_width">Мінімальна ширина нотатки</string>
<string name="show_long_notes">Показувати довгі нотатки повністю</string>
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -157,13 +157,14 @@
<string name="loading">Loading…</string>
<string name="logs">Logs</string>
<string name="extension">Extension: %1$s</string>
<string name="parent_path">Parent: %1$s</string>
<string name="parent_path">Parent folder: %1$s</string>
<string name="pick_folder">Pick this folder</string>
<string name="public_key">Public key</string>
<string name="load_from_file">Load from file</string>
<string name="private_key">Private key</string>
<string name="private_key_password">Private key password</string>
<string name="cancel">Cancel</string>
<string name="go_back">Go back</string>
<string name="confirmation_quit_edit_dialog">Are you sure you want to quit ? You will lose all changes.</string>

</resources>