From c6665fa63e25d3a13aedcf94ea05423b200ff12f Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Thu, 29 Jul 2021 12:22:50 +0200 Subject: [PATCH] Simplify Settings/Config classes --- lib/app.dart | 4 +- lib/core/file.dart | 0 lib/core/notes_folder_config.dart | 103 ++++++++---------- lib/core/virtual_notes_folder.dart | 10 +- lib/repository.dart | 16 +-- lib/settings/git_config.dart | 33 +++--- lib/settings/markdown_renderer_config.dart | 103 ++++++++---------- lib/settings/screens_stories.dart | 8 ++ lib/settings/settings.dart | 86 +++++++-------- lib/settings/settings_sharedpref.dart | 51 +++------ lib/settings/storage_config.dart | 24 ++-- lib/widgets/note_search_delegate.dart | 6 +- test/checklist_test.dart | 37 +++---- test/flattened_notes_folder_large_test.dart | 16 ++- test/flattened_notes_folder_test.dart | 18 +-- test/link_resolver_test.dart | 6 +- test/note_serializer_test.dart | 10 +- test/note_storage_test.dart | 8 +- test/note_test.dart | 31 +++--- test/notes_cache_test.dart | 8 +- test/processors/wiki_links_auto_add_test.dart | 7 +- test/sorted_notes_folder_test.dart | 8 +- test/sorting_mode_test.dart | 14 ++- 23 files changed, 298 insertions(+), 309 deletions(-) create mode 100644 lib/core/file.dart create mode 100644 lib/settings/screens_stories.dart diff --git a/lib/app.dart b/lib/app.dart index 968550b3..8974491f 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -414,8 +414,8 @@ class GitJournalChangeNotifiers extends StatelessWidget { Widget buildMarkdownSettings({required Widget child}) { return Consumer( builder: (_, repoManager, __) { - var markdown = MarkdownRendererConfig(repoManager.currentId); - markdown.load(pref); + var markdown = MarkdownRendererConfig(repoManager.currentId, pref); + markdown.load(); return ChangeNotifierProvider.value(value: markdown, child: child); }, diff --git a/lib/core/file.dart b/lib/core/file.dart new file mode 100644 index 00000000..e69de29b diff --git a/lib/core/notes_folder_config.dart b/lib/core/notes_folder_config.dart index 374a8f32..bf2536e4 100644 --- a/lib/core/notes_folder_config.dart +++ b/lib/core/notes_folder_config.dart @@ -8,11 +8,14 @@ import 'package:gitjournal/settings/settings.dart'; import 'package:gitjournal/settings/settings_sharedpref.dart'; class NotesFolderConfig extends ChangeNotifier with SettingsSharedPref { - NotesFolderConfig(this.id); + NotesFolderConfig(this.id, this.pref); @override final String id; + @override + final SharedPreferences pref; + var sortingField = SortingField.Default; var sortingOrder = SortingOrder.Default; @@ -34,83 +37,71 @@ class NotesFolderConfig extends ChangeNotifier with SettingsSharedPref { var inlineTagPrefixes = {'#'}; var imageLocationSpec = "."; // . means the same folder - void load(SharedPreferences pref) { - fileNameFormat = NoteFileNameFormat.fromInternalString( - getString(pref, "noteFileNameFormat")); + void load() { + fileNameFormat = + NoteFileNameFormat.fromInternalString(getString("noteFileNameFormat")); journalFileNameFormat = NoteFileNameFormat.fromInternalString( - getString(pref, "journalNoteFileNameFormat")); + getString("journalNoteFileNameFormat")); - yamlModifiedKey = getString(pref, "yamlModifiedKey") ?? yamlModifiedKey; - yamlCreatedKey = getString(pref, "yamlCreatedKey") ?? yamlCreatedKey; - yamlTagsKey = getString(pref, "yamlTagsKey") ?? yamlTagsKey; + yamlModifiedKey = getString("yamlModifiedKey") ?? yamlModifiedKey; + yamlCreatedKey = getString("yamlCreatedKey") ?? yamlCreatedKey; + yamlTagsKey = getString("yamlTagsKey") ?? yamlTagsKey; - yamlHeaderEnabled = getBool(pref, "yamlHeaderEnabled") ?? yamlHeaderEnabled; + yamlHeaderEnabled = getBool("yamlHeaderEnabled") ?? yamlHeaderEnabled; - sortingField = - SortingField.fromInternalString(getString(pref, "sortingField")); - sortingOrder = - SortingOrder.fromInternalString(getString(pref, "sortingOrder")); + sortingField = SortingField.fromInternalString(getString("sortingField")); + sortingOrder = SortingOrder.fromInternalString(getString("sortingOrder")); defaultEditor = - SettingsEditorType.fromInternalString(getString(pref, "defaultEditor")); - defaultView = SettingsFolderViewType.fromInternalString( - getString(pref, "defaultView")); + SettingsEditorType.fromInternalString(getString("defaultEditor")); + defaultView = + SettingsFolderViewType.fromInternalString(getString("defaultView")); - showNoteSummary = getBool(pref, "showNoteSummary") ?? showNoteSummary; + showNoteSummary = getBool("showNoteSummary") ?? showNoteSummary; folderViewHeaderType = - getString(pref, "folderViewHeaderType") ?? folderViewHeaderType; + getString("folderViewHeaderType") ?? folderViewHeaderType; - imageLocationSpec = - getString(pref, "imageLocationSpec") ?? imageLocationSpec; + imageLocationSpec = getString("imageLocationSpec") ?? imageLocationSpec; titleSettings = - SettingsTitle.fromInternalString(getString(pref, "titleSettings")); + SettingsTitle.fromInternalString(getString("titleSettings")); - inlineTagPrefixes = - getStringSet(pref, "inlineTagPrefixes") ?? inlineTagPrefixes; + inlineTagPrefixes = getStringSet("inlineTagPrefixes") ?? inlineTagPrefixes; } Future save() async { - var pref = await SharedPreferences.getInstance(); - var defaultSet = NotesFolderConfig(id); + var def = NotesFolderConfig(id, pref); + await setString("noteFileNameFormat", fileNameFormat.toInternalString(), + def.fileNameFormat.toInternalString()); await setString( - pref, - "noteFileNameFormat", - fileNameFormat.toInternalString(), - defaultSet.fileNameFormat.toInternalString()); - await setString( - pref, "journalNoteFileNameFormat", journalFileNameFormat.toInternalString(), - defaultSet.journalFileNameFormat.toInternalString()); + def.journalFileNameFormat.toInternalString()); + + await setString("sortingField", sortingField.toInternalString(), + def.sortingField.toInternalString()); + await setString("sortingOrder", sortingOrder.toInternalString(), + def.sortingOrder.toInternalString()); + await setString("defaultEditor", defaultEditor.toInternalString(), + def.defaultEditor.toInternalString()); + await setString("defaultView", defaultView.toInternalString(), + def.defaultView.toInternalString()); + await setBool("showNoteSummary", showNoteSummary, def.showNoteSummary); + await setString( + "folderViewHeaderType", folderViewHeaderType, def.folderViewHeaderType); - await setString(pref, "sortingField", sortingField.toInternalString(), - defaultSet.sortingField.toInternalString()); - await setString(pref, "sortingOrder", sortingOrder.toInternalString(), - defaultSet.sortingOrder.toInternalString()); - await setString(pref, "defaultEditor", defaultEditor.toInternalString(), - defaultSet.defaultEditor.toInternalString()); - await setString(pref, "defaultView", defaultView.toInternalString(), - defaultSet.defaultView.toInternalString()); await setBool( - pref, "showNoteSummary", showNoteSummary, defaultSet.showNoteSummary); - await setString(pref, "folderViewHeaderType", folderViewHeaderType, - defaultSet.folderViewHeaderType); + "yamlHeaderEnabled", yamlHeaderEnabled, def.yamlHeaderEnabled); + await setString("yamlModifiedKey", yamlModifiedKey, def.yamlModifiedKey); + await setString("yamlCreatedKey", yamlCreatedKey, def.yamlCreatedKey); + await setString("yamlTagsKey", yamlTagsKey, def.yamlTagsKey); + await setString("titleSettings", titleSettings.toInternalString(), + def.titleSettings.toInternalString()); - await setBool(pref, "yamlHeaderEnabled", yamlHeaderEnabled, - defaultSet.yamlHeaderEnabled); + await setStringSet( + "inlineTagPrefixes", inlineTagPrefixes, def.inlineTagPrefixes); await setString( - pref, "yamlModifiedKey", yamlModifiedKey, defaultSet.yamlModifiedKey); - await setString( - pref, "yamlCreatedKey", yamlCreatedKey, defaultSet.yamlCreatedKey); - await setString(pref, "yamlTagsKey", yamlTagsKey, defaultSet.yamlTagsKey); - await setString(pref, "titleSettings", titleSettings.toInternalString(), - defaultSet.titleSettings.toInternalString()); - - await setStringSet(pref, "inlineTagPrefixes", inlineTagPrefixes, - defaultSet.inlineTagPrefixes); - await setString(pref, "imageLocationSpec", imageLocationSpec, - defaultSet.imageLocationSpec); + "imageLocationSpec", imageLocationSpec, def.imageLocationSpec); notifyListeners(); } diff --git a/lib/core/virtual_notes_folder.dart b/lib/core/virtual_notes_folder.dart index 0d96efaa..a3e3d5b5 100644 --- a/lib/core/virtual_notes_folder.dart +++ b/lib/core/virtual_notes_folder.dart @@ -1,13 +1,12 @@ -import 'package:gitjournal/settings/settings.dart'; import 'note.dart'; import 'notes_folder.dart'; import 'notes_folder_notifier.dart'; class VirtualNotesFolder with NotesFolderNotifier implements NotesFolder { final List _notes; - final Settings settings; + final NotesFolderConfig _config; - VirtualNotesFolder(this._notes, this.settings); + VirtualNotesFolder(this._notes, this._config); @override List get notes => _notes; @@ -39,8 +38,5 @@ class VirtualNotesFolder with NotesFolderNotifier implements NotesFolder { } @override - NotesFolderConfig get config { - // FIXME: This isn't expecting null! - return NotesFolderConfig('_'); - } + NotesFolderConfig get config => _config; } diff --git a/lib/repository.dart b/lib/repository.dart index 412344e4..77547a99 100644 --- a/lib/repository.dart +++ b/lib/repository.dart @@ -75,17 +75,17 @@ class GitJournalRepo with ChangeNotifier { }) async { await migrateSettings(id, pref, gitBaseDir); - var storageConfig = StorageConfig(id); - storageConfig.load(pref); + var storageConfig = StorageConfig(id, pref); + storageConfig.load(); - var folderConfig = NotesFolderConfig(id); - folderConfig.load(pref); + var folderConfig = NotesFolderConfig(id, pref); + folderConfig.load(); - var gitConfig = GitConfig(id); - gitConfig.load(pref); + var gitConfig = GitConfig(id, pref); + gitConfig.load(); - var settings = Settings(id); - settings.load(pref); + var settings = Settings(id, pref); + settings.load(); // logEvent(Event.Settings, parameters: settings.toLoggableMap()); diff --git a/lib/settings/git_config.dart b/lib/settings/git_config.dart index 3f38caa1..b51ab9f0 100644 --- a/lib/settings/git_config.dart +++ b/lib/settings/git_config.dart @@ -5,37 +5,36 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:gitjournal/settings/settings_sharedpref.dart'; class GitConfig extends ChangeNotifier with SettingsSharedPref { - GitConfig(this.id); + GitConfig(this.id, this.pref); @override final String id; + @override + final SharedPreferences pref; + var gitAuthor = "GitJournal"; var gitAuthorEmail = "app@gitjournal.io"; var sshPublicKey = ""; var sshPrivateKey = ""; var sshPassword = ""; - void load(SharedPreferences pref) { - gitAuthor = getString(pref, "gitAuthor") ?? gitAuthor; - gitAuthorEmail = getString(pref, "gitAuthorEmail") ?? gitAuthorEmail; - sshPublicKey = getString(pref, "sshPublicKey") ?? sshPublicKey; - sshPrivateKey = getString(pref, "sshPrivateKey") ?? sshPrivateKey; - sshPassword = getString(pref, "sshPassword") ?? sshPassword; + void load() { + gitAuthor = getString("gitAuthor") ?? gitAuthor; + gitAuthorEmail = getString("gitAuthorEmail") ?? gitAuthorEmail; + sshPublicKey = getString("sshPublicKey") ?? sshPublicKey; + sshPrivateKey = getString("sshPrivateKey") ?? sshPrivateKey; + sshPassword = getString("sshPassword") ?? sshPassword; } Future save() async { - var pref = await SharedPreferences.getInstance(); - var defaultSet = GitConfig(id); + var def = GitConfig(id, pref); - await setString(pref, "gitAuthor", gitAuthor, defaultSet.gitAuthor); - await setString( - pref, "gitAuthorEmail", gitAuthorEmail, defaultSet.gitAuthorEmail); - await setString( - pref, "sshPublicKey", sshPublicKey, defaultSet.sshPublicKey); - await setString( - pref, "sshPrivateKey", sshPrivateKey, defaultSet.sshPrivateKey); - await setString(pref, "sshPassword", sshPassword, defaultSet.sshPassword); + await setString("gitAuthor", gitAuthor, def.gitAuthor); + await setString("gitAuthorEmail", gitAuthorEmail, def.gitAuthorEmail); + await setString("sshPublicKey", sshPublicKey, def.sshPublicKey); + await setString("sshPrivateKey", sshPrivateKey, def.sshPrivateKey); + await setString("sshPassword", sshPassword, def.sshPassword); notifyListeners(); } diff --git a/lib/settings/markdown_renderer_config.dart b/lib/settings/markdown_renderer_config.dart index b18bbb85..47ddd5a9 100644 --- a/lib/settings/markdown_renderer_config.dart +++ b/lib/settings/markdown_renderer_config.dart @@ -23,11 +23,14 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:gitjournal/settings/settings_sharedpref.dart'; class MarkdownRendererConfig extends ChangeNotifier with SettingsSharedPref { - MarkdownRendererConfig(this.id); + MarkdownRendererConfig(this.id, this.pref); @override final String id; + @override + final SharedPreferences pref; + // Display - Image bool rotateImageGestures = false; double maxImageZoom = 10; @@ -51,92 +54,78 @@ class MarkdownRendererConfig extends ChangeNotifier with SettingsSharedPref { var doNotCaptionTags = {"nocaption", "!nc"}; var doCaptionTags = {"docaption", "!dc"}; - void load(SharedPreferences pref) { + void load() { // Display - Image - rotateImageGestures = - getBool(pref, "rotateImageGestures") ?? rotateImageGestures; - maxImageZoom = getDouble(pref, "maxImageZoom") ?? maxImageZoom; + rotateImageGestures = getBool("rotateImageGestures") ?? rotateImageGestures; + maxImageZoom = getDouble("maxImageZoom") ?? maxImageZoom; // Display - Image - Theming - themeRasterGraphics = - getBool(pref, "themeRasterGraphics") ?? themeRasterGraphics; + themeRasterGraphics = getBool("themeRasterGraphics") ?? themeRasterGraphics; themeOverrideTagLocation = SettingsImageTextType.fromInternalString( - getString(pref, "themeOverrideTagLocation")); - doNotThemeTags = getStringSet(pref, "doNotThemeTags") ?? doNotThemeTags; - doThemeTags = getStringSet(pref, "doThemeTags") ?? doThemeTags; + getString("themeOverrideTagLocation")); + doNotThemeTags = getStringSet("doNotThemeTags") ?? doNotThemeTags; + doThemeTags = getStringSet("doThemeTags") ?? doThemeTags; themeVectorGraphics = SettingsThemeVectorGraphics.fromInternalString( - getString(pref, "themeVectorGraphics")); + getString("themeVectorGraphics")); themeSvgWithBackground = - getBool(pref, "themeSvgWithBackground") ?? themeSvgWithBackground; - matchCanvasColor = getBool(pref, "matchCanvasColor") ?? matchCanvasColor; + getBool("themeSvgWithBackground") ?? themeSvgWithBackground; + matchCanvasColor = getBool("matchCanvasColor") ?? matchCanvasColor; vectorGraphicsAdjustColors = SettingsVectorGraphicsAdjustColors.fromInternalString( - getString(pref, "vectorGraphicsAdjustColors")); + getString("vectorGraphicsAdjustColors")); // Display - Image - Caption - overlayCaption = getBool(pref, "overlayCaption") ?? overlayCaption; - transparentCaption = - getBool(pref, "transparentCaption") ?? transparentCaption; - blurBehindCaption = getBool(pref, "blurBehindCaption") ?? blurBehindCaption; - tooltipFirst = getBool(pref, "tooltipFirst") ?? tooltipFirst; - useAsCaption = SettingsImageTextType.fromInternalString( - getString(pref, "useAsCaption")); - doNotCaptionTags = - getStringSet(pref, "doNotCaptionTag") ?? doNotCaptionTags; - doCaptionTags = getStringSet(pref, "doCaptionTag") ?? doCaptionTags; + overlayCaption = getBool("overlayCaption") ?? overlayCaption; + transparentCaption = getBool("transparentCaption") ?? transparentCaption; + blurBehindCaption = getBool("blurBehindCaption") ?? blurBehindCaption; + tooltipFirst = getBool("tooltipFirst") ?? tooltipFirst; + useAsCaption = + SettingsImageTextType.fromInternalString(getString("useAsCaption")); + doNotCaptionTags = getStringSet("doNotCaptionTag") ?? doNotCaptionTags; + doCaptionTags = getStringSet("doCaptionTag") ?? doCaptionTags; } Future save() async { - var pref = await SharedPreferences.getInstance(); - var defaultSet = MarkdownRendererConfig(id); + var def = MarkdownRendererConfig(id, pref); // Display - Image - await setBool(pref, "rotateImageGestures", rotateImageGestures, - defaultSet.rotateImageGestures); - await setDouble( - pref, "maxImageZoom", maxImageZoom, defaultSet.maxImageZoom); + await setBool( + "rotateImageGestures", rotateImageGestures, def.rotateImageGestures); + await setDouble("maxImageZoom", maxImageZoom, def.maxImageZoom); // Display - Image - Theme - await setBool(pref, "themeRasterGraphics", themeRasterGraphics, - defaultSet.themeRasterGraphics); + await setBool( + "themeRasterGraphics", themeRasterGraphics, def.themeRasterGraphics); await setString( - pref, "themeOverrideTagLocation", themeOverrideTagLocation.toInternalString(), - defaultSet.themeOverrideTagLocation.toInternalString()); - await setStringSet( - pref, "doNotThemeTags", doNotThemeTags, defaultSet.doNotThemeTags); - await setStringSet( - pref, "doThemeTags", doThemeTags, defaultSet.doThemeTags); + def.themeOverrideTagLocation.toInternalString()); + await setStringSet("doNotThemeTags", doNotThemeTags, def.doNotThemeTags); + await setStringSet("doThemeTags", doThemeTags, def.doThemeTags); await setString( - pref, "themeVectorGraphics", themeVectorGraphics.toInternalString(), - defaultSet.themeVectorGraphics.toInternalString()); - await setBool(pref, "themeSvgWithBackground", themeSvgWithBackground, - defaultSet.themeSvgWithBackground); - await setBool(pref, "matchCanvasColor", matchCanvasColor, - defaultSet.matchCanvasColor); + def.themeVectorGraphics.toInternalString()); + await setBool("themeSvgWithBackground", themeSvgWithBackground, + def.themeSvgWithBackground); + await setBool("matchCanvasColor", matchCanvasColor, def.matchCanvasColor); await setString( - pref, "vectorGraphicsAdjustColors", vectorGraphicsAdjustColors.toInternalString(), - defaultSet.vectorGraphicsAdjustColors.toInternalString()); + def.vectorGraphicsAdjustColors.toInternalString()); // Display - Image - Caption + await setBool("overlayCaption", overlayCaption, def.overlayCaption); await setBool( - pref, "overlayCaption", overlayCaption, defaultSet.overlayCaption); - await setBool(pref, "transparentCaption", transparentCaption, - defaultSet.transparentCaption); - await setBool(pref, "blurBehindCaption", blurBehindCaption, - defaultSet.blurBehindCaption); - await setBool(pref, "tooltipFirst", tooltipFirst, defaultSet.tooltipFirst); - await setString(pref, "useAsCaption", useAsCaption.toInternalString(), - defaultSet.useAsCaption.toInternalString()); + "transparentCaption", transparentCaption, def.transparentCaption); + await setBool( + "blurBehindCaption", blurBehindCaption, def.blurBehindCaption); + await setBool("tooltipFirst", tooltipFirst, def.tooltipFirst); + await setString("useAsCaption", useAsCaption.toInternalString(), + def.useAsCaption.toInternalString()); await setStringSet( - pref, "doNotCaptionTag", doNotCaptionTags, defaultSet.doNotCaptionTags); - await setStringSet( - pref, "doCaptionTag", doCaptionTags, defaultSet.doCaptionTags); + "doNotCaptionTag", doNotCaptionTags, def.doNotCaptionTags); + await setStringSet("doCaptionTag", doCaptionTags, def.doCaptionTags); notifyListeners(); } diff --git a/lib/settings/screens_stories.dart b/lib/settings/screens_stories.dart new file mode 100644 index 00000000..445f863b --- /dev/null +++ b/lib/settings/screens_stories.dart @@ -0,0 +1,8 @@ +import 'package:flutter/material.dart'; + +import 'package:gitjournal/settings/settings_screen.dart'; + +// Need - Settings, AppSettings, Repo, RepoManager +// It won't work otherwise! +// +Widget settingsScreen() => SettingsScreen(); diff --git a/lib/settings/settings.dart b/lib/settings/settings.dart index 22124f23..078b8633 100644 --- a/lib/settings/settings.dart +++ b/lib/settings/settings.dart @@ -29,10 +29,14 @@ const DEFAULT_ID = "0"; const SETTINGS_VERSION = 3; class Settings extends ChangeNotifier with SettingsSharedPref { - Settings(this.id); + Settings(this.id, this.pref); @override final String id; + + @override + final SharedPreferences pref; + String customMetaData = ""; String defaultNewNoteFolderSpec = ""; @@ -60,88 +64,80 @@ class Settings extends ChangeNotifier with SettingsSharedPref { bool confirmDelete = true; bool hardWrap = false; - void load(SharedPreferences pref) { + void load() { defaultNewNoteFolderSpec = - getString(pref, "defaultNewNoteFolderSpec") ?? defaultNewNoteFolderSpec; + getString("defaultNewNoteFolderSpec") ?? defaultNewNoteFolderSpec; journalEditordefaultNewNoteFolderSpec = - getString(pref, "journalEditordefaultNewNoteFolderSpec") ?? + getString("journalEditordefaultNewNoteFolderSpec") ?? journalEditordefaultNewNoteFolderSpec; journalEditorSingleNote = - getBool(pref, "journalEditorSingleNote") ?? journalEditorSingleNote; + getBool("journalEditorSingleNote") ?? journalEditorSingleNote; remoteSyncFrequency = RemoteSyncFrequency.fromInternalString( - getString(pref, "remoteSyncFrequency")); + getString("remoteSyncFrequency")); markdownDefaultView = SettingsMarkdownDefaultView.fromInternalString( - getString(pref, "markdownDefaultView")); + getString("markdownDefaultView")); markdownLastUsedView = SettingsMarkdownDefaultView.fromInternalString( - getString(pref, "markdownLastUsedView")); + getString("markdownLastUsedView")); if (markdownLastUsedView == SettingsMarkdownDefaultView.LastUsed) { markdownLastUsedView = SettingsMarkdownDefaultView.Edit; } - version = getInt(pref, "settingsVersion") ?? version; - emojiParser = getBool(pref, "emojiParser") ?? emojiParser; + version = getInt("settingsVersion") ?? version; + emojiParser = getBool("emojiParser") ?? emojiParser; - homeScreen = - SettingsHomeScreen.fromInternalString(getString(pref, "homeScreen")); - theme = SettingsTheme.fromInternalString(getString(pref, "theme")); + homeScreen = SettingsHomeScreen.fromInternalString(getString("homeScreen")); + theme = SettingsTheme.fromInternalString(getString("theme")); - zenMode = getBool(pref, "zenMode") ?? zenMode; - swipeToDelete = getBool(pref, "swipeToDelete") ?? swipeToDelete; + zenMode = getBool("zenMode") ?? zenMode; + swipeToDelete = getBool("swipeToDelete") ?? swipeToDelete; // From AppState - bottomMenuBar = getBool(pref, "bottomMenuBar") ?? bottomMenuBar; - confirmDelete = getBool(pref, "confirmDelete") ?? confirmDelete; + bottomMenuBar = getBool("bottomMenuBar") ?? bottomMenuBar; + confirmDelete = getBool("confirmDelete") ?? confirmDelete; - hardWrap = getBool(pref, "hardWrap") ?? hardWrap; + hardWrap = getBool("hardWrap") ?? hardWrap; } Future save() async { var pref = await SharedPreferences.getInstance(); - var defaultSet = Settings(id); + var def = Settings(id, pref); - await setString(pref, "defaultNewNoteFolderSpec", defaultNewNoteFolderSpec, - defaultSet.defaultNewNoteFolderSpec); + await setString("defaultNewNoteFolderSpec", defaultNewNoteFolderSpec, + def.defaultNewNoteFolderSpec); await setString( - pref, "journalEditordefaultNewNoteFolderSpec", journalEditordefaultNewNoteFolderSpec, - defaultSet.journalEditordefaultNewNoteFolderSpec); - await setBool(pref, "journalEditorSingleNote", journalEditorSingleNote, - defaultSet.journalEditorSingleNote); + def.journalEditordefaultNewNoteFolderSpec); + await setBool("journalEditorSingleNote", journalEditorSingleNote, + def.journalEditorSingleNote); await setString( - pref, "remoteSyncFrequency", remoteSyncFrequency.toInternalString(), - defaultSet.remoteSyncFrequency.toInternalString()); + def.remoteSyncFrequency.toInternalString()); await setString( - pref, "markdownDefaultView", markdownDefaultView.toInternalString(), - defaultSet.markdownDefaultView.toInternalString()); + def.markdownDefaultView.toInternalString()); await setString( - pref, "markdownLastUsedView", markdownLastUsedView.toInternalString(), - defaultSet.markdownLastUsedView.toInternalString()); - await setBool(pref, "emojiParser", emojiParser, defaultSet.emojiParser); - await setString(pref, "homeScreen", homeScreen.toInternalString(), - defaultSet.homeScreen.toInternalString()); - await setString(pref, "theme", theme.toInternalString(), - defaultSet.theme.toInternalString()); + def.markdownLastUsedView.toInternalString()); + await setBool("emojiParser", emojiParser, def.emojiParser); + await setString("homeScreen", homeScreen.toInternalString(), + def.homeScreen.toInternalString()); + await setString( + "theme", theme.toInternalString(), def.theme.toInternalString()); - await setBool(pref, "zenMode", zenMode, defaultSet.zenMode); - await setBool( - pref, "swipeToDelete", swipeToDelete, defaultSet.swipeToDelete); - await setBool( - pref, "bottomMenuBar", bottomMenuBar, defaultSet.bottomMenuBar); - await setBool( - pref, "confirmDelete", confirmDelete, defaultSet.confirmDelete); + await setBool("zenMode", zenMode, def.zenMode); + await setBool("swipeToDelete", swipeToDelete, def.swipeToDelete); + await setBool("bottomMenuBar", bottomMenuBar, def.bottomMenuBar); + await setBool("confirmDelete", confirmDelete, def.confirmDelete); - await setInt(pref, "settingsVersion", version, defaultSet.version); + await setInt("settingsVersion", version, def.version); - await setBool(pref, "hardWrap", hardWrap, defaultSet.hardWrap); + await setBool("hardWrap", hardWrap, def.hardWrap); notifyListeners(); } diff --git a/lib/settings/settings_sharedpref.dart b/lib/settings/settings_sharedpref.dart index 01cb6aa0..7e2f6a5f 100644 --- a/lib/settings/settings_sharedpref.dart +++ b/lib/settings/settings_sharedpref.dart @@ -7,42 +7,40 @@ abstract class SettingsSharedPref { String get id; @protected - String? getString(SharedPreferences pref, String key) { + SharedPreferences get pref; + + @protected + String? getString(String key) { return pref.getString(id + '_' + key); } @protected - bool? getBool(SharedPreferences pref, String key) { + bool? getBool(String key) { return pref.getBool(id + '_' + key); } @protected - List? getStringList(SharedPreferences pref, String key) { + List? getStringList(String key) { return pref.getStringList(id + '_' + key); } @protected - Set? getStringSet(SharedPreferences pref, String key) { - return getStringList(pref, key)?.toSet(); + Set? getStringSet(String key) { + return getStringList(key)?.toSet(); } @protected - int? getInt(SharedPreferences pref, String key) { + int? getInt(String key) { return pref.getInt(id + '_' + key); } @protected - double? getDouble(SharedPreferences pref, String key) { + double? getDouble(String key) { return pref.getDouble(id + '_' + key); } @protected - Future setString( - SharedPreferences pref, - String key, - String value, - String? defaultValue, - ) async { + Future setString(String key, String value, String? defaultValue) async { key = id + '_' + key; if (value == defaultValue) { await pref.remove(key); @@ -52,12 +50,7 @@ abstract class SettingsSharedPref { } @protected - Future setBool( - SharedPreferences pref, - String key, - bool value, - bool defaultValue, - ) async { + Future setBool(String key, bool value, bool defaultValue) async { key = id + '_' + key; if (value == defaultValue) { await pref.remove(key); @@ -67,12 +60,7 @@ abstract class SettingsSharedPref { } @protected - Future setInt( - SharedPreferences pref, - String key, - int value, - int defaultValue, - ) async { + Future setInt(String key, int value, int defaultValue) async { key = id + '_' + key; if (value == defaultValue) { await pref.remove(key); @@ -82,12 +70,7 @@ abstract class SettingsSharedPref { } @protected - Future setDouble( - SharedPreferences pref, - String key, - double value, - double defaultValue, - ) async { + Future setDouble(String key, double value, double defaultValue) async { key = id + '_' + key; if (value == defaultValue) { await pref.remove(key); @@ -98,11 +81,7 @@ abstract class SettingsSharedPref { @protected Future setStringSet( - SharedPreferences pref, - String key, - Set value, - Set defaultValue, - ) async { + String key, Set value, Set defaultValue) async { key = id + '_' + key; final bool Function(Set, Set) eq = diff --git a/lib/settings/storage_config.dart b/lib/settings/storage_config.dart index dd54c6a5..ec45fb84 100644 --- a/lib/settings/storage_config.dart +++ b/lib/settings/storage_config.dart @@ -11,30 +11,30 @@ import 'package:gitjournal/settings/settings_sharedpref.dart'; const FOLDER_NAME_KEY = "remoteGitRepoPath"; class StorageConfig extends ChangeNotifier with SettingsSharedPref { - StorageConfig(this.id); + StorageConfig(this.id, this.pref); @override final String id; + @override + final SharedPreferences pref; + var folderName = "journal"; var storeInternally = true; var storageLocation = ""; - void load(SharedPreferences pref) { - folderName = getString(pref, FOLDER_NAME_KEY) ?? folderName; - storeInternally = getBool(pref, "storeInternally") ?? storeInternally; - storageLocation = getString(pref, "storageLocation") ?? ""; + void load() { + folderName = getString(FOLDER_NAME_KEY) ?? folderName; + storeInternally = getBool("storeInternally") ?? storeInternally; + storageLocation = getString("storageLocation") ?? ""; } Future save() async { - var pref = await SharedPreferences.getInstance(); - var defaultSet = StorageConfig(id); + var def = StorageConfig(id, pref); - await setString(pref, FOLDER_NAME_KEY, folderName, defaultSet.folderName); - await setBool( - pref, "storeInternally", storeInternally, defaultSet.storeInternally); - await setString( - pref, "storageLocation", storageLocation, defaultSet.storageLocation); + await setString(FOLDER_NAME_KEY, folderName, def.folderName); + await setBool("storeInternally", storeInternally, def.storeInternally); + await setString("storageLocation", storageLocation, def.storageLocation); notifyListeners(); } diff --git a/lib/widgets/note_search_delegate.dart b/lib/widgets/note_search_delegate.dart index 6dab53c6..565189bd 100644 --- a/lib/widgets/note_search_delegate.dart +++ b/lib/widgets/note_search_delegate.dart @@ -4,10 +4,10 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:provider/provider.dart'; import 'package:gitjournal/core/note.dart'; +import 'package:gitjournal/core/notes_folder.dart'; import 'package:gitjournal/core/virtual_notes_folder.dart'; import 'package:gitjournal/folder_views/common.dart'; import 'package:gitjournal/folder_views/standard_view.dart'; -import 'package:gitjournal/settings/settings.dart'; import 'package:gitjournal/themes.dart'; class NoteSearchDelegate extends SearchDelegate { @@ -86,8 +86,8 @@ class NoteSearchDelegate extends SearchDelegate { return note.body.toLowerCase().contains(q); }).toList(); - var settings = Provider.of(context); - var folder = VirtualNotesFolder(filteredNotes, settings); + var folderConfig = Provider.of(context); + var folder = VirtualNotesFolder(filteredNotes, folderConfig); var emptyText = tr('widgets.FolderView.searchFailed'); return buildFolderView( diff --git a/test/checklist_test.dart b/test/checklist_test.dart index 2d8d5993..b55bddf9 100644 --- a/test/checklist_test.dart +++ b/test/checklist_test.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:path/path.dart' as p; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; import 'package:gitjournal/core/checklist.dart'; @@ -11,9 +12,12 @@ import 'package:gitjournal/core/notes_folder_fs.dart'; void main() { group('Note', () { late Directory tempDir; + late NotesFolderConfig config; setUpAll(() async { tempDir = await Directory.systemTemp.createTemp('__notes_test__'); + SharedPreferences.setMockInitialValues({}); + config = NotesFolderConfig('', await SharedPreferences.getInstance()); }); tearDownAll(() async { @@ -41,8 +45,7 @@ Booga Wooga var notePath = p.join(tempDir.path, "note.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -106,8 +109,7 @@ Booga Wooga var notePath = p.join(tempDir.path, "note2.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -122,8 +124,7 @@ Booga Wooga var notePath = p.join(tempDir.path, "note3.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -144,8 +145,7 @@ Booga Wooga var notePath = p.join(tempDir.path, "note13.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -165,8 +165,7 @@ Booga Wooga var notePath = p.join(tempDir.path, "note4.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -186,8 +185,7 @@ Booga Wooga var notePath = p.join(tempDir.path, "note4.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -203,8 +201,7 @@ Booga Wooga var notePath = p.join(tempDir.path, "note449.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -222,8 +219,7 @@ Booga Wooga var notePath = p.join(tempDir.path, "note448.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -239,8 +235,7 @@ Booga Wooga var notePath = p.join(tempDir.path, "note448.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -256,8 +251,7 @@ Booga Wooga var notePath = p.join(tempDir.path, "note449.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -274,8 +268,7 @@ Booga Wooga var notePath = p.join(tempDir.path, "note429.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); diff --git a/test/flattened_notes_folder_large_test.dart b/test/flattened_notes_folder_large_test.dart index c24d8e02..f930adc6 100644 --- a/test/flattened_notes_folder_large_test.dart +++ b/test/flattened_notes_folder_large_test.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'dart:math'; import 'package:path/path.dart' as p; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; import 'package:gitjournal/core/flattened_notes_folder.dart'; @@ -13,18 +14,20 @@ void main() { group('Flattened Notes Folder Large Test', () { late Directory tempDir; late NotesFolderFS rootFolder; + late NotesFolderConfig config; setUp(() async { tempDir = await Directory.systemTemp.createTemp('__flat_folder_test__'); - // print("TempDir: ${tempDir.path}"); + SharedPreferences.setMockInitialValues({}); + config = NotesFolderConfig('', await SharedPreferences.getInstance()); var random = Random(); for (var i = 0; i < 300; i++) { // print("Building Note $i"); - await _writeRandomNote(random, tempDir.path); + await _writeRandomNote(random, tempDir.path, config); } - rootFolder = NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + rootFolder = NotesFolderFS(null, tempDir.path, config); await rootFolder.loadRecursively(); }); @@ -38,7 +41,7 @@ void main() { expect(f.notes.length, 300); var tempDir = await Directory.systemTemp.createTemp('_test_'); - await _writeRandomNote(Random(), tempDir.path); + await _writeRandomNote(Random(), tempDir.path, config); rootFolder.reset(tempDir.path); await rootFolder.loadRecursively(); @@ -47,7 +50,8 @@ void main() { }); } -Future _writeRandomNote(Random random, String dirPath) async { +Future _writeRandomNote( + Random random, String dirPath, NotesFolderConfig config) async { String path; while (true) { path = p.join(dirPath, "${random.nextInt(10000)}.md"); @@ -56,7 +60,7 @@ Future _writeRandomNote(Random random, String dirPath) async { } } - var note = Note(NotesFolderFS(null, dirPath, NotesFolderConfig('')), path); + var note = Note(NotesFolderFS(null, dirPath, config), path); note.modified = DateTime(2014, 1, 1 + (random.nextInt(2000))); note.body = "p1"; await note.save(); diff --git a/test/flattened_notes_folder_test.dart b/test/flattened_notes_folder_test.dart index 00eeafae..95a58385 100644 --- a/test/flattened_notes_folder_test.dart +++ b/test/flattened_notes_folder_test.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'dart:math'; import 'package:path/path.dart' as p; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; import 'package:gitjournal/core/flattened_notes_folder.dart'; @@ -26,11 +27,14 @@ void main() { group('Flattened Notes Folder Test', () { late Directory tempDir; late NotesFolderFS rootFolder; + late NotesFolderConfig config; setUp(() async { tempDir = await Directory.systemTemp.createTemp('__sorted_folder_test__'); + SharedPreferences.setMockInitialValues({}); + config = NotesFolderConfig('', await SharedPreferences.getInstance()); - rootFolder = NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + rootFolder = NotesFolderFS(null, tempDir.path, config); for (var i = 0; i < 3; i++) { var note = Note(rootFolder, _getRandomFilePath(rootFolder.folderPath)); @@ -43,8 +47,8 @@ void main() { Directory(p.join(tempDir.path, "sub1", "p1")).createSync(); Directory(p.join(tempDir.path, "sub2")).createSync(); - var sub1Folder = NotesFolderFS( - rootFolder, p.join(tempDir.path, "sub1"), NotesFolderConfig('')); + var sub1Folder = + NotesFolderFS(rootFolder, p.join(tempDir.path, "sub1"), config); for (var i = 0; i < 2; i++) { var note = Note( sub1Folder, @@ -55,8 +59,8 @@ void main() { await note.save(); } - var sub2Folder = NotesFolderFS( - rootFolder, p.join(tempDir.path, "sub2"), NotesFolderConfig('')); + var sub2Folder = + NotesFolderFS(rootFolder, p.join(tempDir.path, "sub2"), config); for (var i = 0; i < 2; i++) { var note = Note( sub2Folder, @@ -67,8 +71,8 @@ void main() { await note.save(); } - var p1Folder = NotesFolderFS(sub1Folder, - p.join(tempDir.path, "sub1", "p1"), NotesFolderConfig('')); + var p1Folder = + NotesFolderFS(sub1Folder, p.join(tempDir.path, "sub1", "p1"), config); for (var i = 0; i < 2; i++) { var note = Note( p1Folder, diff --git a/test/link_resolver_test.dart b/test/link_resolver_test.dart index c47fc476..2899a749 100644 --- a/test/link_resolver_test.dart +++ b/test/link_resolver_test.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:path/path.dart' as p; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; import 'package:gitjournal/core/link.dart'; @@ -11,11 +12,14 @@ import 'package:gitjournal/utils/link_resolver.dart'; void main() { late Directory tempDir; late NotesFolderFS rootFolder; + late NotesFolderConfig config; setUpAll(() async { tempDir = await Directory.systemTemp.createTemp('__link_resolver__'); + SharedPreferences.setMockInitialValues({}); + config = NotesFolderConfig('', await SharedPreferences.getInstance()); - rootFolder = NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + rootFolder = NotesFolderFS(null, tempDir.path, config); await generateNote(tempDir.path, "Hello.md"); await generateNote(tempDir.path, "Fire.md"); diff --git a/test/note_serializer_test.dart b/test/note_serializer_test.dart index 969363f3..fea48623 100644 --- a/test/note_serializer_test.dart +++ b/test/note_serializer_test.dart @@ -1,5 +1,6 @@ import 'dart:collection'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; import 'package:gitjournal/core/md_yaml_doc.dart'; @@ -11,7 +12,14 @@ import 'package:gitjournal/settings/settings.dart'; void main() { group('Note Serializer Test', () { - var parent = NotesFolderFS(null, '/tmp', NotesFolderConfig('')); + late NotesFolderConfig config; + late NotesFolderFS parent; + + setUpAll(() async { + SharedPreferences.setMockInitialValues({}); + config = NotesFolderConfig('', await SharedPreferences.getInstance()); + parent = NotesFolderFS(null, '/tmp', config); + }); test('Test emojis', () { var props = LinkedHashMap.from( diff --git a/test/note_storage_test.dart b/test/note_storage_test.dart index 121fd504..6a603eac 100644 --- a/test/note_storage_test.dart +++ b/test/note_storage_test.dart @@ -2,6 +2,7 @@ import 'dart:collection'; import 'dart:io'; import 'package:path/path.dart' as p; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; import 'package:gitjournal/core/md_yaml_doc.dart'; @@ -16,9 +17,12 @@ void main() { late String n1Path; late String n2Path; late Directory tempDir; + late NotesFolderConfig config; setUpAll(() async { tempDir = await Directory.systemTemp.createTemp('__storage_test__'); + SharedPreferences.setMockInitialValues({}); + config = NotesFolderConfig('', await SharedPreferences.getInstance()); var dt = DateTime(2019, 12, 2, 5, 4, 2); // ignore: prefer_collection_literals @@ -28,7 +32,7 @@ void main() { n1Path = p.join(tempDir.path, "1.md"); n2Path = p.join(tempDir.path, "2.md"); - var parent = NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parent = NotesFolderFS(null, tempDir.path, config); var n1 = Note(parent, n1Path); n1.body = "test\n"; n1.created = dt; @@ -52,7 +56,7 @@ void main() { expect(File(n2Path).existsSync(), isTrue); var loadedNotes = []; - var parent = NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parent = NotesFolderFS(null, tempDir.path, config); await Future.forEach(notes, (Note origNote) async { var note = Note(parent, origNote.filePath); diff --git a/test/note_test.dart b/test/note_test.dart index 3e063faa..1c5237f6 100644 --- a/test/note_test.dart +++ b/test/note_test.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:path/path.dart' as p; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; import 'package:gitjournal/core/note.dart'; @@ -10,9 +11,12 @@ import 'package:gitjournal/core/notes_folder_fs.dart'; void main() { group('Note', () { late Directory tempDir; + late NotesFolderConfig config; setUpAll(() async { tempDir = await Directory.systemTemp.createTemp('__notes_test__'); + SharedPreferences.setMockInitialValues({}); + config = NotesFolderConfig('', await SharedPreferences.getInstance()); }); tearDownAll(() async { @@ -31,8 +35,7 @@ Hello var notePath = p.join(tempDir.path, "note.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -64,8 +67,7 @@ Hello var notePath = p.join(tempDir.path, "note.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -97,8 +99,7 @@ Hello var notePath = p.join(tempDir.path, "note5.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -137,8 +138,7 @@ bar: Foo var notePath = p.join(tempDir.path, "note6.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -159,8 +159,7 @@ bar: Foo var notePath = p.join(tempDir.path, "note63.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -186,8 +185,7 @@ Gee var notePath = p.join(tempDir.path, "note16.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); @@ -209,8 +207,7 @@ Gee }); test('New Notes have a file extension', () async { - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note.newNote(parentFolder); var path = note.filePath; expect(path.endsWith('.md'), true); @@ -224,8 +221,7 @@ Gee var txtNotePath = p.join(tempDir.path, "note163.txt"); await File(txtNotePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var txtNote = Note(parentFolder, txtNotePath); await txtNote.load(); @@ -248,8 +244,7 @@ Hello var notePath = p.join(tempDir.path, "note.md"); await File(notePath).writeAsString(content); - var parentFolder = - NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var parentFolder = NotesFolderFS(null, tempDir.path, config); var note = Note(parentFolder, notePath); await note.load(); diff --git a/test/notes_cache_test.dart b/test/notes_cache_test.dart index d53a31a5..c4c169c8 100644 --- a/test/notes_cache_test.dart +++ b/test/notes_cache_test.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:path/path.dart' as p; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; import 'package:gitjournal/core/notes_cache.dart'; @@ -18,14 +19,17 @@ void main() { '/base/d1/file.md', ]; late NotesCache cache; + late NotesFolderConfig config; setUp(() async { tempDir = await Directory.systemTemp.createTemp('__notes_test__'); + SharedPreferences.setMockInitialValues({}); + config = NotesFolderConfig('', await SharedPreferences.getInstance()); cacheFilePath = p.join(tempDir.path, "cache.raw"); cache = NotesCache( filePath: cacheFilePath, notesBasePath: '/base', - folderConfig: NotesFolderConfig(''), + folderConfig: config, ); }); @@ -45,7 +49,7 @@ void main() { test('Should create directory structure accurately', () async { await cache.saveToDisk(fileList); - var rootFolder = NotesFolderFS(null, '/base', NotesFolderConfig('')); + var rootFolder = NotesFolderFS(null, '/base', config); await cache.load(rootFolder); expect(rootFolder.subFolders.length, 2); diff --git a/test/processors/wiki_links_auto_add_test.dart b/test/processors/wiki_links_auto_add_test.dart index 3e715c80..3a4d59fe 100644 --- a/test/processors/wiki_links_auto_add_test.dart +++ b/test/processors/wiki_links_auto_add_test.dart @@ -1,3 +1,4 @@ +import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; import 'package:gitjournal/core/notes_folder_config.dart'; @@ -5,11 +6,13 @@ import 'package:gitjournal/core/notes_folder_fs.dart'; import 'package:gitjournal/core/processors/wiki_links_auto_add.dart'; void main() { - test('Should process body', () { + test('Should process body', () async { var body = "GitJournal is the best? And it works quite well with Foam, Foam and Obsidian."; - var folder = NotesFolderFS(null, '/', NotesFolderConfig('')); + SharedPreferences.setMockInitialValues({}); + var config = NotesFolderConfig('', await SharedPreferences.getInstance()); + var folder = NotesFolderFS(null, '/', config); var p = WikiLinksAutoAddProcessor(folder); var newBody = p.processBody(body, ['GitJournal', 'Foam', 'Obsidian']); var expectedBody = diff --git a/test/sorted_notes_folder_test.dart b/test/sorted_notes_folder_test.dart index e29ea0a4..0ce7173b 100644 --- a/test/sorted_notes_folder_test.dart +++ b/test/sorted_notes_folder_test.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'dart:math'; import 'package:path/path.dart' as p; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; import 'package:gitjournal/core/note.dart'; @@ -14,11 +15,14 @@ void main() { group('Sorted Notes Folder Test', () { late Directory tempDir; late NotesFolderFS folder; + late NotesFolderConfig config; setUp(() async { tempDir = await Directory.systemTemp.createTemp('__sorted_folder_test__'); + SharedPreferences.setMockInitialValues({}); + config = NotesFolderConfig('', await SharedPreferences.getInstance()); - folder = NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + folder = NotesFolderFS(null, tempDir.path, config); var random = Random(); for (var i = 0; i < 5; i++) { @@ -122,7 +126,7 @@ void main() { }); test('If still sorted while loading the notes', () async { - var folder = NotesFolderFS(null, tempDir.path, NotesFolderConfig('')); + var folder = NotesFolderFS(null, tempDir.path, config); var sf = SortedNotesFolder( folder: folder, sortingMode: diff --git a/test/sorting_mode_test.dart b/test/sorting_mode_test.dart index 4dc47ec9..644abeb1 100644 --- a/test/sorting_mode_test.dart +++ b/test/sorting_mode_test.dart @@ -1,3 +1,4 @@ +import 'package:shared_preferences/shared_preferences.dart'; import 'package:test/test.dart'; import 'package:gitjournal/core/note.dart'; @@ -7,8 +8,15 @@ import 'package:gitjournal/core/sorting_mode.dart'; void main() { group('Sorting Mode', () { + late NotesFolderConfig config; + + setUpAll(() async { + SharedPreferences.setMockInitialValues({}); + config = NotesFolderConfig('', await SharedPreferences.getInstance()); + }); + test('Created', () async { - var folder = NotesFolderFS(null, '/tmp/', NotesFolderConfig('')); + var folder = NotesFolderFS(null, '/tmp/', config); var n1 = Note(folder, '/tmp/1.md'); n1.created = DateTime(2020, 10, 01); @@ -33,7 +41,7 @@ void main() { }); test('Modified', () async { - var folder = NotesFolderFS(null, '/tmp/', NotesFolderConfig('')); + var folder = NotesFolderFS(null, '/tmp/', config); var n1 = Note(folder, '/tmp/1.md'); n1.modified = DateTime(2020, 10, 01); @@ -58,7 +66,7 @@ void main() { }); test('Title', () async { - var folder = NotesFolderFS(null, '/tmp/', NotesFolderConfig('')); + var folder = NotesFolderFS(null, '/tmp/', config); var n1 = Note(folder, '/tmp/1.md'); n1.title = "alpha";