Stop caching the gitBaseDir

It makes the entire code base far more complicated and the round trip to
get the directory really isn't that much. This is a massive
micro-optimization for very little benefit.
This commit is contained in:
Vishesh Handa
2020-09-26 18:52:28 +02:00
parent a422b09fce
commit 4b3f1669f5
6 changed files with 9 additions and 30 deletions

View File

@ -54,25 +54,14 @@ class JournalApp extends StatefulWidget {
_enableAnalyticsIfPossible(settings); _enableAnalyticsIfPossible(settings);
} }
if (appSettings.gitBaseDirectory.isEmpty) {
var dir = await getApplicationDocumentsDirectory(); var dir = await getApplicationDocumentsDirectory();
appSettings.gitBaseDirectory = dir.path; appState.gitBaseDirectory = dir.path;
appSettings.save();
}
if (!Directory(appSettings.gitBaseDirectory).existsSync()) {
Log.w("Applications Documents Directory no longer exists");
var dir = await getApplicationDocumentsDirectory();
appSettings.gitBaseDirectory = dir.path;
appSettings.save();
Log.i("New Documents Directory Path ${dir.path}");
}
if (settings.localGitRepoConfigured == false) { if (settings.localGitRepoConfigured == false) {
// FIXME: What about exceptions! // FIXME: What about exceptions!
settings.localGitRepoFolderName = "journal_local"; settings.localGitRepoFolderName = "journal_local";
var repoPath = p.join( var repoPath = p.join(
appSettings.gitBaseDirectory, appState.gitBaseDirectory,
settings.localGitRepoFolderName, settings.localGitRepoFolderName,
); );
await GitRepository.init(repoPath); await GitRepository.init(repoPath);
@ -88,7 +77,7 @@ class JournalApp extends StatefulWidget {
return StateContainer( return StateContainer(
appState: appState, appState: appState,
settings: settings, settings: settings,
gitBaseDirectory: appSettings.gitBaseDirectory, gitBaseDirectory: appState.gitBaseDirectory,
); );
}, },
child: ChangeNotifierProvider( child: ChangeNotifierProvider(

View File

@ -34,8 +34,6 @@ class AppSettings extends ChangeNotifier {
var experimentalMarkdownToolbar = false; var experimentalMarkdownToolbar = false;
var experimentalGraphView = false; var experimentalGraphView = false;
var gitBaseDirectory = "";
void load(SharedPreferences pref) { void load(SharedPreferences pref) {
onBoardingCompleted = pref.getBool("onBoardingCompleted") ?? false; onBoardingCompleted = pref.getBool("onBoardingCompleted") ?? false;
@ -63,8 +61,6 @@ class AppSettings extends ChangeNotifier {
experimentalMarkdownToolbar; experimentalMarkdownToolbar;
experimentalGraphView = experimentalGraphView =
pref.getBool("experimentalGraphView") ?? experimentalGraphView; pref.getBool("experimentalGraphView") ?? experimentalGraphView;
gitBaseDirectory = pref.getString("gitBaseDirectory") ?? "";
} }
Future<void> save() async { Future<void> save() async {
@ -91,7 +87,6 @@ class AppSettings extends ChangeNotifier {
defaultSet.experimentalGraphView); defaultSet.experimentalGraphView);
pref.setInt("appSettingsVersion", version); pref.setInt("appSettingsVersion", version);
pref.setString("gitBaseDirectory", gitBaseDirectory);
notifyListeners(); notifyListeners();
} }
@ -110,7 +105,6 @@ class AppSettings extends ChangeNotifier {
'experimentalFs': experimentalFs.toString(), 'experimentalFs': experimentalFs.toString(),
'experimentalMarkdownToolbar': experimentalMarkdownToolbar.toString(), 'experimentalMarkdownToolbar': experimentalMarkdownToolbar.toString(),
'experimentalGraphView': experimentalGraphView.toString(), 'experimentalGraphView': experimentalGraphView.toString(),
'gitBaseDirectory': gitBaseDirectory.toString(),
}; };
} }

View File

@ -17,4 +17,5 @@ class AppState {
} }
NotesFolderFS notesFolder; NotesFolderFS notesFolder;
var gitBaseDirectory = "";
} }

View File

@ -8,7 +8,6 @@ import 'package:git_bindings/git_bindings.dart';
import 'package:path/path.dart' as p; import 'package:path/path.dart' as p;
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:gitjournal/app_settings.dart';
import 'package:gitjournal/screens/settings_widgets.dart'; import 'package:gitjournal/screens/settings_widgets.dart';
import 'package:gitjournal/settings.dart'; import 'package:gitjournal/settings.dart';
import 'package:gitjournal/setup/screens.dart'; import 'package:gitjournal/setup/screens.dart';
@ -133,8 +132,7 @@ class _GitRemoteSettingsScreenState extends State<GitRemoteSettingsScreen> {
} }
var stateContainer = Provider.of<StateContainer>(context); var stateContainer = Provider.of<StateContainer>(context);
var appSettings = Provider.of<AppSettings>(context); var gitDir = stateContainer.appState.gitBaseDirectory;
var gitDir = appSettings.gitBaseDirectory;
// Figure out the next available folder // Figure out the next available folder
String repoFolderName = "journal_"; String repoFolderName = "journal_";

View File

@ -13,7 +13,6 @@ import 'package:url_launcher/url_launcher.dart';
import 'package:gitjournal/analytics.dart'; import 'package:gitjournal/analytics.dart';
import 'package:gitjournal/apis/githost_factory.dart'; import 'package:gitjournal/apis/githost_factory.dart';
import 'package:gitjournal/app_settings.dart';
import 'package:gitjournal/error_reporting.dart'; import 'package:gitjournal/error_reporting.dart';
import 'package:gitjournal/settings.dart'; import 'package:gitjournal/settings.dart';
import 'package:gitjournal/setup/autoconfigure.dart'; import 'package:gitjournal/setup/autoconfigure.dart';
@ -22,6 +21,7 @@ import 'package:gitjournal/setup/clone_url.dart';
import 'package:gitjournal/setup/loading_error.dart'; import 'package:gitjournal/setup/loading_error.dart';
import 'package:gitjournal/setup/repo_selector.dart'; import 'package:gitjournal/setup/repo_selector.dart';
import 'package:gitjournal/setup/sshkey.dart'; import 'package:gitjournal/setup/sshkey.dart';
import 'package:gitjournal/state_container.dart';
import 'package:gitjournal/utils.dart'; import 'package:gitjournal/utils.dart';
import 'package:gitjournal/utils/logger.dart'; import 'package:gitjournal/utils/logger.dart';
@ -468,8 +468,8 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
gitCloneErrorMessage = ""; gitCloneErrorMessage = "";
}); });
final appSettings = Provider.of<AppSettings>(context); var stateContainer = Provider.of<StateContainer>(context);
var basePath = appSettings.gitBaseDirectory; var basePath = stateContainer.appState.gitBaseDirectory;
// Just in case it was half cloned because of an error // Just in case it was half cloned because of an error
String repoPath = p.join(basePath, widget.repoFolderName); String repoPath = p.join(basePath, widget.repoFolderName);

View File

@ -27,9 +27,6 @@ void main() async {
Future<void> populateWithData(SharedPreferences pref) async { Future<void> populateWithData(SharedPreferences pref) async {
var dir = await getApplicationDocumentsDirectory(); var dir = await getApplicationDocumentsDirectory();
var appSettings = AppSettings.instance;
appSettings.gitBaseDirectory = dir.path;
var settings = Settings.instance; var settings = Settings.instance;
settings.localGitRepoConfigured = true; settings.localGitRepoConfigured = true;
settings.localGitRepoFolderName = "journal_local"; settings.localGitRepoFolderName = "journal_local";