Move onBoardingCompleted from AppState to Settings

I want to get rid of the AppState entirely. It serves exactly the same
purpose as Settings.
This commit is contained in:
Vishesh Handa
2020-08-16 15:29:49 +02:00
parent 1e0fdb9f06
commit 4bcbf8226a
5 changed files with 16 additions and 17 deletions

View File

@ -289,7 +289,7 @@ class _JournalAppState extends State<JournalApp> {
var settings = Provider.of<Settings>(context); var settings = Provider.of<Settings>(context);
var initialRoute = '/'; var initialRoute = '/';
if (!stateContainer.appState.onBoardingCompleted) { if (!settings.onBoardingCompleted) {
initialRoute = '/onBoarding'; initialRoute = '/onBoarding';
} }
if (settings.homeScreen == SettingsHomeScreen.AllFolders) { if (settings.homeScreen == SettingsHomeScreen.AllFolders) {
@ -354,7 +354,7 @@ class _JournalAppState extends State<JournalApp> {
stateContainer.completeGitHostSetup, stateContainer.completeGitHostSetup,
); );
case '/onBoarding': case '/onBoarding':
return OnBoardingScreen(stateContainer.completeOnBoarding); return OnBoardingScreen();
case '/purchase': case '/purchase':
return PurchaseScreen(); return PurchaseScreen();
case '/purchase_thank_you': case '/purchase_thank_you':

View File

@ -22,8 +22,6 @@ class AppState {
String remoteGitRepoFolderName = ""; String remoteGitRepoFolderName = "";
bool remoteGitRepoConfigured = false; bool remoteGitRepoConfigured = false;
bool onBoardingCompleted = false;
SyncStatus syncStatus = SyncStatus.Unknown; SyncStatus syncStatus = SyncStatus.Unknown;
int numChanges = 0; int numChanges = 0;
@ -44,7 +42,6 @@ class AppState {
remoteGitRepoConfigured = pref.getBool("remoteGitRepoConfigured") ?? false; remoteGitRepoConfigured = pref.getBool("remoteGitRepoConfigured") ?? false;
localGitRepoFolderName = pref.getString("localGitRepoPath") ?? ""; localGitRepoFolderName = pref.getString("localGitRepoPath") ?? "";
remoteGitRepoFolderName = pref.getString("remoteGitRepoPath") ?? ""; remoteGitRepoFolderName = pref.getString("remoteGitRepoPath") ?? "";
onBoardingCompleted = pref.getBool("onBoardingCompleted") ?? false;
gitBaseDirectory = pref.getString("gitBaseDirectory") ?? ""; gitBaseDirectory = pref.getString("gitBaseDirectory") ?? "";
} }
@ -54,7 +51,6 @@ class AppState {
Log.i("remoteGitRepoConfigured: $remoteGitRepoConfigured"); Log.i("remoteGitRepoConfigured: $remoteGitRepoConfigured");
Log.i("localGitRepoFolderName: $localGitRepoFolderName"); Log.i("localGitRepoFolderName: $localGitRepoFolderName");
Log.i("remoteGitRepoFolderName: $remoteGitRepoFolderName"); Log.i("remoteGitRepoFolderName: $remoteGitRepoFolderName");
Log.i("onBoardingCompleted: $onBoardingCompleted");
Log.i("gitBaseDirectory: $gitBaseDirectory"); Log.i("gitBaseDirectory: $gitBaseDirectory");
Log.i(" ------------------ "); Log.i(" ------------------ ");
} }
@ -64,7 +60,6 @@ class AppState {
await pref.setBool("remoteGitRepoConfigured", remoteGitRepoConfigured); await pref.setBool("remoteGitRepoConfigured", remoteGitRepoConfigured);
await pref.setString("localGitRepoPath", localGitRepoFolderName); await pref.setString("localGitRepoPath", localGitRepoFolderName);
await pref.setString("remoteGitRepoPath", remoteGitRepoFolderName); await pref.setString("remoteGitRepoPath", remoteGitRepoFolderName);
await pref.setBool("onBoardingCompleted", onBoardingCompleted);
await pref.setString("gitBaseDirectory", gitBaseDirectory); await pref.setString("gitBaseDirectory", gitBaseDirectory);
} }
} }

View File

@ -3,11 +3,12 @@ import 'package:flutter/material.dart';
import 'package:auto_size_text/auto_size_text.dart'; import 'package:auto_size_text/auto_size_text.dart';
import 'package:dots_indicator/dots_indicator.dart'; import 'package:dots_indicator/dots_indicator.dart';
import 'package:function_types/function_types.dart'; import 'package:function_types/function_types.dart';
import 'package:provider/provider.dart';
import 'package:gitjournal/settings.dart';
class OnBoardingScreen extends StatefulWidget { class OnBoardingScreen extends StatefulWidget {
final Func0<void> onCompletedFunction; OnBoardingScreen();
OnBoardingScreen(this.onCompletedFunction);
@override @override
OnBoardingScreenState createState() { OnBoardingScreenState createState() {
@ -109,7 +110,9 @@ class OnBoardingScreenState extends State<OnBoardingScreen> {
} }
void _finish() { void _finish() {
widget.onCompletedFunction(); var settings = Provider.of<Settings>(context);
settings.onBoardingCompleted = true;
settings.save();
Navigator.pop(context); Navigator.pop(context);
Navigator.pushNamed(context, "/"); Navigator.pushNamed(context, "/");

View File

@ -16,6 +16,8 @@ class Settings extends ChangeNotifier {
static Settings get instance => _singleton; static Settings get instance => _singleton;
// Properties // Properties
bool onBoardingCompleted = false;
String gitAuthor = "GitJournal"; String gitAuthor = "GitJournal";
String gitAuthorEmail = "app@gitjournal.io"; String gitAuthorEmail = "app@gitjournal.io";
NoteFileNameFormat noteFileNameFormat = NoteFileNameFormat.Default; NoteFileNameFormat noteFileNameFormat = NoteFileNameFormat.Default;
@ -64,6 +66,8 @@ class Settings extends ChangeNotifier {
bool saveTitleInH1 = true; bool saveTitleInH1 = true;
void load(SharedPreferences pref) { void load(SharedPreferences pref) {
onBoardingCompleted = pref.getBool("onBoardingCompleted") ?? false;
gitAuthor = pref.getString("gitAuthor") ?? gitAuthor; gitAuthor = pref.getString("gitAuthor") ?? gitAuthor;
gitAuthorEmail = pref.getString("gitAuthorEmail") ?? gitAuthorEmail; gitAuthorEmail = pref.getString("gitAuthorEmail") ?? gitAuthorEmail;
@ -142,6 +146,8 @@ class Settings extends ChangeNotifier {
var pref = await SharedPreferences.getInstance(); var pref = await SharedPreferences.getInstance();
var defaultSet = Settings._internal(); var defaultSet = Settings._internal();
await pref.setBool("onBoardingCompleted", onBoardingCompleted);
_setString(pref, "gitAuthor", gitAuthor, defaultSet.gitAuthor); _setString(pref, "gitAuthor", gitAuthor, defaultSet.gitAuthor);
_setString( _setString(
pref, "gitAuthorEmail", gitAuthorEmail, defaultSet.gitAuthorEmail); pref, "gitAuthorEmail", gitAuthorEmail, defaultSet.gitAuthorEmail);
@ -244,6 +250,7 @@ class Settings extends ChangeNotifier {
Map<String, String> toMap() { Map<String, String> toMap() {
return <String, String>{ return <String, String>{
"onBoardingCompleted": onBoardingCompleted.toString(),
"gitAuthor": gitAuthor, "gitAuthor": gitAuthor,
"gitAuthorEmail": gitAuthorEmail, "gitAuthorEmail": gitAuthorEmail,
"noteFileNameFormat": noteFileNameFormat.toInternalString(), "noteFileNameFormat": noteFileNameFormat.toInternalString(),

View File

@ -375,12 +375,6 @@ class StateContainer with ChangeNotifier {
}(); }();
} }
void completeOnBoarding() {
appState.onBoardingCompleted = true;
_persistConfig();
notifyListeners();
}
Future _persistConfig() async { Future _persistConfig() async {
var pref = await SharedPreferences.getInstance(); var pref = await SharedPreferences.getInstance();
await appState.save(pref); await appState.save(pref);