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);
}
if (appSettings.gitBaseDirectory.isEmpty) {
var dir = await getApplicationDocumentsDirectory();
appSettings.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}");
}
var dir = await getApplicationDocumentsDirectory();
appState.gitBaseDirectory = dir.path;
if (settings.localGitRepoConfigured == false) {
// FIXME: What about exceptions!
settings.localGitRepoFolderName = "journal_local";
var repoPath = p.join(
appSettings.gitBaseDirectory,
appState.gitBaseDirectory,
settings.localGitRepoFolderName,
);
await GitRepository.init(repoPath);
@ -88,7 +77,7 @@ class JournalApp extends StatefulWidget {
return StateContainer(
appState: appState,
settings: settings,
gitBaseDirectory: appSettings.gitBaseDirectory,
gitBaseDirectory: appState.gitBaseDirectory,
);
},
child: ChangeNotifierProvider(

View File

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

View File

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

View File

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

View File

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