diff --git a/lib/screens/onboarding_screens.dart b/lib/screens/onboarding_screens.dart index 485ece3c..8c49a281 100644 --- a/lib/screens/onboarding_screens.dart +++ b/lib/screens/onboarding_screens.dart @@ -1,7 +1,12 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:path/path.dart' as p; + +import 'package:journal/state_container.dart'; import 'package:journal/storage/git.dart'; class OnBoardingScreen extends StatefulWidget { @@ -272,6 +277,9 @@ class OnBoardingGitCloneState extends State { var pref = await SharedPreferences.getInstance(); String sshCloneUrl = pref.getString("sshCloneUrl"); + // Just in case it was half cloned because of an error + await _removeExistingClone(); + String error = await gitClone(sshCloneUrl, "journal"); if (error != null && error.isNotEmpty) { setState(() { @@ -282,6 +290,16 @@ class OnBoardingGitCloneState extends State { } } + Future _removeExistingClone() async { + var baseDir = await getNotesDir(); + var dotGitDir = new Directory(p.join(baseDir.path, ".git")); + bool exists = await dotGitDir.exists(); + if (exists) { + await baseDir.delete(recursive: true); + await baseDir.create(); + } + } + @override Widget build(BuildContext context) { var children = []; diff --git a/lib/state_container.dart b/lib/state_container.dart index ca5c28c1..96fa6a07 100644 --- a/lib/state_container.dart +++ b/lib/state_container.dart @@ -63,11 +63,11 @@ class StateContainerState extends State { _loadNotesFromDisk(); _syncNotes(); } else { - _removeExistingClone(); + removeExistingClone(); } } - void _removeExistingClone() async { + void removeExistingClone() async { var baseDir = await getNotesDir(); var dotGitDir = new Directory(p.join(baseDir.path, ".git")); bool exists = await dotGitDir.exists();