mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 18:38:36 +08:00
Remove the whole local/remoteConfigured settings
We now infer this by checking if the directory exists, and by reading the git config. It's a bit slower, but it's a far better method. I can add a cache later, if it turns out to be too slow.
This commit is contained in:
14
lib/app.dart
14
lib/app.dart
@ -69,11 +69,13 @@ class JournalApp extends StatefulWidget {
|
||||
|
||||
await settings.migrate(pref, appState.gitBaseDirectory);
|
||||
|
||||
// FIXME: This can be replaced with a fs stat
|
||||
if (settings.localGitRepoConfigured == false) {
|
||||
var gitRepoDir =
|
||||
p.join(appState.gitBaseDirectory, settings.internalRepoFolderName);
|
||||
|
||||
var repoDirStat = File(gitRepoDir).statSync();
|
||||
if (repoDirStat.type != FileSystemEntityType.directory) {
|
||||
settings.internalRepoFolderName = "journal";
|
||||
|
||||
// FIXME: What about exceptions!
|
||||
var repoPath = p.join(
|
||||
appState.gitBaseDirectory,
|
||||
settings.internalRepoFolderName,
|
||||
@ -82,9 +84,13 @@ class JournalApp extends StatefulWidget {
|
||||
Log.i("Calling GitInit at: $repoPath");
|
||||
await GitRepository.init(repoPath);
|
||||
|
||||
settings.localGitRepoConfigured = true;
|
||||
settings.save();
|
||||
} else {
|
||||
var gitRepo = await GitRepository.load(gitRepoDir);
|
||||
var remotes = gitRepo.config.remotes;
|
||||
appState.remoteGitRepoConfigured = remotes.isNotEmpty;
|
||||
}
|
||||
|
||||
final cacheDir = await getApplicationSupportDirectory();
|
||||
|
||||
Widget app = ChangeNotifierProvider.value(
|
||||
|
@ -18,4 +18,6 @@ class AppState {
|
||||
|
||||
NotesFolderFS notesFolder;
|
||||
var gitBaseDirectory = "";
|
||||
|
||||
bool remoteGitRepoConfigured = false;
|
||||
}
|
||||
|
@ -407,7 +407,7 @@ class _FolderViewState extends State<FolderView> {
|
||||
}
|
||||
|
||||
List<Widget> _buildNoteActions() {
|
||||
final settings = Provider.of<Settings>(context);
|
||||
final appState = Provider.of<StateContainer>(context).appState;
|
||||
|
||||
var extraActions = PopupMenuButton<DropDownChoices>(
|
||||
key: const ValueKey("PopupMenu"),
|
||||
@ -443,7 +443,7 @@ class _FolderViewState extends State<FolderView> {
|
||||
onPressed: _folderViewChooserSelected,
|
||||
key: const ValueKey("FolderViewSelector"),
|
||||
),
|
||||
if (settings.remoteGitRepoConfigured) SyncButton(),
|
||||
if (appState.remoteGitRepoConfigured) SyncButton(),
|
||||
IconButton(
|
||||
icon: const Icon(Icons.search),
|
||||
onPressed: () {
|
||||
|
@ -26,6 +26,7 @@ import 'package:gitjournal/screens/settings_note_metadata.dart';
|
||||
import 'package:gitjournal/screens/settings_tags.dart';
|
||||
import 'package:gitjournal/screens/settings_widgets.dart';
|
||||
import 'package:gitjournal/settings.dart';
|
||||
import 'package:gitjournal/state_container.dart';
|
||||
import 'package:gitjournal/utils.dart';
|
||||
import 'package:gitjournal/widgets/folder_selection_dialog.dart';
|
||||
import 'package:gitjournal/widgets/pro_overlay.dart';
|
||||
@ -64,7 +65,7 @@ class SettingsListState extends State<SettingsList> {
|
||||
Widget build(BuildContext context) {
|
||||
var settings = Provider.of<Settings>(context);
|
||||
var appSettings = Provider.of<AppSettings>(context);
|
||||
var remoteGitConfigured = settings.remoteGitRepoConfigured;
|
||||
final appState = Provider.of<StateContainer>(context).appState;
|
||||
|
||||
var saveGitAuthor = (String gitAuthor) {
|
||||
settings.gitAuthor = gitAuthor;
|
||||
@ -225,7 +226,7 @@ class SettingsListState extends State<SettingsList> {
|
||||
);
|
||||
Navigator.of(context).push(route);
|
||||
},
|
||||
enabled: remoteGitConfigured,
|
||||
enabled: appState.remoteGitRepoConfigured,
|
||||
),
|
||||
const SizedBox(height: 16.0),
|
||||
ListTile(
|
||||
|
@ -59,11 +59,7 @@ class Settings extends ChangeNotifier {
|
||||
|
||||
bool bottomMenuBar = true;
|
||||
|
||||
// From AppState
|
||||
String internalRepoFolderName = "";
|
||||
bool localGitRepoConfigured = false;
|
||||
|
||||
bool remoteGitRepoConfigured = false;
|
||||
String internalRepoFolderName = "journal";
|
||||
|
||||
bool storeInternally = true;
|
||||
String storageLocation = "";
|
||||
@ -132,9 +128,8 @@ class Settings extends ChangeNotifier {
|
||||
pref.getStringList("inlineTagPrefixes")?.toSet() ?? inlineTagPrefixes;
|
||||
|
||||
// From AppState
|
||||
localGitRepoConfigured = pref.getBool("localGitRepoConfigured") ?? false;
|
||||
remoteGitRepoConfigured = pref.getBool("remoteGitRepoConfigured") ?? false;
|
||||
internalRepoFolderName = pref.getString("remoteGitRepoPath") ?? "";
|
||||
internalRepoFolderName =
|
||||
pref.getString("remoteGitRepoPath") ?? internalRepoFolderName;
|
||||
|
||||
bottomMenuBar = pref.getBool("bottomMenuBar") ?? bottomMenuBar;
|
||||
storeInternally = pref.getBool("storeInternally") ?? storeInternally;
|
||||
@ -221,8 +216,6 @@ class Settings extends ChangeNotifier {
|
||||
|
||||
pref.setInt("settingsVersion", version);
|
||||
|
||||
pref.setBool("localGitRepoConfigured", localGitRepoConfigured);
|
||||
pref.setBool("remoteGitRepoConfigured", remoteGitRepoConfigured);
|
||||
pref.setString("remoteGitRepoPath", internalRepoFolderName);
|
||||
|
||||
notifyListeners();
|
||||
@ -301,8 +294,6 @@ class Settings extends ChangeNotifier {
|
||||
'swipeToDelete': swipeToDelete.toString(),
|
||||
'inlineTagPrefixes': inlineTagPrefixes.join(' '),
|
||||
'emojiParser': emojiParser.toString(),
|
||||
'localGitRepoConfigured': localGitRepoConfigured.toString(),
|
||||
'remoteGitRepoConfigured': remoteGitRepoConfigured.toString(),
|
||||
'remoteGitRepoPath': internalRepoFolderName.toString(),
|
||||
'bottomMenuBar': bottomMenuBar.toString(),
|
||||
'storeInternally': storeInternally.toString(),
|
||||
@ -323,6 +314,11 @@ class Settings extends ChangeNotifier {
|
||||
var cache = p.join(gitBaseDir, "cache.json");
|
||||
await File(cache).delete(recursive: true);
|
||||
|
||||
var localGitRepoConfigured =
|
||||
pref.getBool("localGitRepoConfigured") ?? false;
|
||||
var remoteGitRepoConfigured =
|
||||
pref.getBool("remoteGitRepoConfigured") ?? false;
|
||||
|
||||
if (localGitRepoConfigured && !remoteGitRepoConfigured) {
|
||||
Log.i("Migrating from local and remote repos to a single one");
|
||||
var oldName = p.join(gitBaseDir, "journal_local");
|
||||
|
@ -41,7 +41,6 @@ class StateContainer with ChangeNotifier {
|
||||
@required this.gitBaseDirectory,
|
||||
@required this.cacheDirectory,
|
||||
}) {
|
||||
assert(settings.localGitRepoConfigured);
|
||||
var repoPath = p.join(gitBaseDirectory, settings.internalRepoFolderName);
|
||||
|
||||
_gitRepo = GitNoteRepository(gitDirPath: repoPath, settings: settings);
|
||||
@ -50,7 +49,7 @@ class StateContainer with ChangeNotifier {
|
||||
// Makes it easier to filter the analytics
|
||||
getAnalytics().firebase.setUserProperty(
|
||||
name: 'onboarded',
|
||||
value: settings.remoteGitRepoConfigured.toString(),
|
||||
value: appState.remoteGitRepoConfigured.toString(),
|
||||
);
|
||||
|
||||
var cachePath = p.join(cacheDirectory, "cache.json");
|
||||
@ -84,7 +83,7 @@ class StateContainer with ChangeNotifier {
|
||||
}
|
||||
|
||||
Future<void> syncNotes({bool doNotThrow = false}) async {
|
||||
if (!settings.remoteGitRepoConfigured) {
|
||||
if (!appState.remoteGitRepoConfigured) {
|
||||
Log.d("Not syncing because RemoteRepo not configured");
|
||||
return true;
|
||||
}
|
||||
@ -340,7 +339,6 @@ class StateContainer with ChangeNotifier {
|
||||
await repo.setUpstreamTo(remote, remoteBranchName);
|
||||
|
||||
await _gitRepo.merge();
|
||||
settings.remoteGitRepoConfigured = true;
|
||||
|
||||
await _persistConfig();
|
||||
_loadNotes();
|
||||
|
@ -13,7 +13,7 @@ import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
import 'package:gitjournal/analytics.dart';
|
||||
import 'package:gitjournal/app_settings.dart';
|
||||
import 'package:gitjournal/settings.dart';
|
||||
import 'package:gitjournal/state_container.dart';
|
||||
import 'package:gitjournal/utils.dart';
|
||||
import 'package:gitjournal/utils/logger.dart';
|
||||
|
||||
@ -21,12 +21,12 @@ class AppDrawer extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Widget setupGitButton;
|
||||
var settings = Provider.of<Settings>(context);
|
||||
var appState = Provider.of<StateContainer>(context).appState;
|
||||
var appSettings = Provider.of<AppSettings>(context);
|
||||
var textStyle = Theme.of(context).textTheme.bodyText1;
|
||||
var currentRoute = ModalRoute.of(context).settings.name;
|
||||
|
||||
if (!settings.remoteGitRepoConfigured) {
|
||||
if (!appState.remoteGitRepoConfigured) {
|
||||
setupGitButton = ListTile(
|
||||
leading: Icon(Icons.sync, color: textStyle.color),
|
||||
title: Text(tr('drawer.setup'), style: textStyle),
|
||||
|
Reference in New Issue
Block a user