mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 02:07:39 +08:00
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:
17
lib/app.dart
17
lib/app.dart
@ -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}");
|
||||
}
|
||||
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(
|
||||
|
@ -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(),
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -17,4 +17,5 @@ class AppState {
|
||||
}
|
||||
|
||||
NotesFolderFS notesFolder;
|
||||
var gitBaseDirectory = "";
|
||||
}
|
||||
|
@ -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_";
|
||||
|
@ -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);
|
||||
|
@ -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";
|
||||
|
Reference in New Issue
Block a user