mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 10:17:16 +08:00
Settings Screen: Actually save the gitAuthor + email
There is too much code duplication over here, but - meh - I'll clean it up later.
This commit is contained in:
@ -3,7 +3,7 @@ import 'dart:io';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:journal/apis/git.dart';
|
||||
|
||||
import 'package:journal/settings.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
|
||||
//
|
||||
@ -34,8 +34,8 @@ Future migrateGitRepo({
|
||||
await gitAdd(toGitBasePath, fileName);
|
||||
await gitCommit(
|
||||
gitFolder: toGitBasePath,
|
||||
authorEmail: "app@gitjournal.io",
|
||||
authorName: "GitJournal",
|
||||
authorEmail: Settings.instance.gitAuthorEmail,
|
||||
authorName: Settings.instance.gitAuthor,
|
||||
message: "Migrated Journal Entry",
|
||||
);
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:flutter_crashlytics/flutter_crashlytics.dart';
|
||||
|
||||
import 'package:journal/app.dart';
|
||||
import 'package:journal/state_container.dart';
|
||||
import 'package:journal/apis/git.dart';
|
||||
import 'package:journal/app.dart';
|
||||
import 'package:journal/settings.dart';
|
||||
import 'package:journal/state_container.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
void main() async {
|
||||
bool isInDebugMode = true;
|
||||
@ -58,6 +58,8 @@ Future runJournalApp() async {
|
||||
|
||||
var dir = await getGitBaseDirectory();
|
||||
|
||||
await Settings.instance.load();
|
||||
|
||||
runApp(new StateContainer(
|
||||
localGitRepoConfigured: localGitRepoConfigured,
|
||||
remoteGitRepoConfigured: remoteGitRepoConfigured,
|
||||
|
@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:package_info/package_info.dart';
|
||||
|
||||
import 'package:journal/app.dart';
|
||||
import 'package:journal/settings.dart';
|
||||
import 'package:package_info/package_info.dart';
|
||||
|
||||
class SettingsScreen extends StatelessWidget {
|
||||
@override
|
||||
@ -29,10 +29,14 @@ class SettingsList extends StatefulWidget {
|
||||
}
|
||||
|
||||
class SettingsListState extends State<SettingsList> {
|
||||
final gitAuthorKey = GlobalKey<FormFieldState<String>>();
|
||||
final gitAuthorEmailKey = GlobalKey<FormFieldState<String>>();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var gitAuthorForm = Form(
|
||||
child: TextFormField(
|
||||
key: gitAuthorKey,
|
||||
style: Theme.of(context).textTheme.title,
|
||||
decoration: const InputDecoration(
|
||||
icon: Icon(Icons.person),
|
||||
@ -46,14 +50,27 @@ class SettingsListState extends State<SettingsList> {
|
||||
}
|
||||
},
|
||||
textInputAction: TextInputAction.done,
|
||||
onFieldSubmitted: (String _) {},
|
||||
initialValue:
|
||||
JournalApp.preferences.getString("gitAuthor") ?? "GitJournal",
|
||||
onFieldSubmitted: (String gitAuthor) {
|
||||
Settings.instance.gitAuthor = gitAuthor;
|
||||
Settings.instance.save();
|
||||
},
|
||||
onSaved: (String gitAuthor) {
|
||||
Settings.instance.gitAuthor = gitAuthor;
|
||||
Settings.instance.save();
|
||||
},
|
||||
initialValue: Settings.instance.gitAuthor,
|
||||
),
|
||||
onChanged: () {
|
||||
if (!gitAuthorKey.currentState.validate()) return;
|
||||
var gitAuthor = gitAuthorKey.currentState.value;
|
||||
Settings.instance.gitAuthor = gitAuthor;
|
||||
Settings.instance.save();
|
||||
},
|
||||
);
|
||||
|
||||
var gitAuthorEmailForm = Form(
|
||||
child: TextFormField(
|
||||
key: gitAuthorEmailKey,
|
||||
style: Theme.of(context).textTheme.title,
|
||||
decoration: const InputDecoration(
|
||||
icon: Icon(Icons.email),
|
||||
@ -65,12 +82,30 @@ class SettingsListState extends State<SettingsList> {
|
||||
if (value.isEmpty) {
|
||||
return 'Please enter an email';
|
||||
}
|
||||
|
||||
bool emailValid =
|
||||
RegExp(r"^[a-zA-Z0-9.]+@[a-zA-Z0-9]+\.[a-zA-Z]+").hasMatch(value);
|
||||
if (!emailValid) {
|
||||
return 'Please enter a valid email';
|
||||
}
|
||||
},
|
||||
textInputAction: TextInputAction.done,
|
||||
onFieldSubmitted: (String _) {},
|
||||
initialValue: JournalApp.preferences.getString("gitAuthorEmail") ??
|
||||
"app@gitjournal.io",
|
||||
onFieldSubmitted: (String gitAuthorEmail) {
|
||||
Settings.instance.gitAuthorEmail = gitAuthorEmail;
|
||||
Settings.instance.save();
|
||||
},
|
||||
onSaved: (String gitAuthorEmail) {
|
||||
Settings.instance.gitAuthorEmail = gitAuthorEmail;
|
||||
Settings.instance.save();
|
||||
},
|
||||
initialValue: Settings.instance.gitAuthorEmail,
|
||||
),
|
||||
onChanged: () {
|
||||
if (!gitAuthorEmailKey.currentState.validate()) return;
|
||||
var gitAuthorEmail = gitAuthorEmailKey.currentState.value;
|
||||
Settings.instance.gitAuthorEmail = gitAuthorEmail;
|
||||
Settings.instance.save();
|
||||
},
|
||||
);
|
||||
|
||||
var listView = ListView(children: <Widget>[
|
||||
|
24
lib/settings.dart
Normal file
24
lib/settings.dart
Normal file
@ -0,0 +1,24 @@
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
class Settings {
|
||||
// singleton
|
||||
static final Settings _singleton = Settings._internal();
|
||||
factory Settings() => _singleton;
|
||||
Settings._internal();
|
||||
static Settings get instance => _singleton;
|
||||
|
||||
Future load() async {
|
||||
var pref = await SharedPreferences.getInstance();
|
||||
gitAuthor = pref.getString("gitAuthor") ?? gitAuthor;
|
||||
gitAuthorEmail = pref.getString("gitAuthorEmail") ?? gitAuthorEmail;
|
||||
}
|
||||
|
||||
Future save() async {
|
||||
var pref = await SharedPreferences.getInstance();
|
||||
pref.setString("gitAuthor", gitAuthor);
|
||||
pref.setString("gitAuthorEmail", gitAuthorEmail);
|
||||
}
|
||||
|
||||
String gitAuthor = "GitJournal";
|
||||
String gitAuthorEmail = "app@gitjournal.io";
|
||||
}
|
@ -1,17 +1,16 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
|
||||
import 'package:journal/note.dart';
|
||||
import 'package:journal/apis/git.dart';
|
||||
import 'package:journal/storage/serializers.dart';
|
||||
import 'package:journal/note.dart';
|
||||
import 'package:journal/settings.dart';
|
||||
import 'package:journal/storage/file_storage.dart';
|
||||
import 'package:journal/storage/notes_repository.dart';
|
||||
import 'package:journal/storage/serializers.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
|
||||
class GitNoteRepository implements NoteRepository {
|
||||
final FileStorage _fileStorage;
|
||||
//final String gitCloneUrl = "";
|
||||
final String dirName;
|
||||
|
||||
bool cloned = false;
|
||||
@ -42,8 +41,8 @@ class GitNoteRepository implements NoteRepository {
|
||||
await gitAdd(this.dirName, filePath);
|
||||
await gitCommit(
|
||||
gitFolder: this.dirName,
|
||||
authorEmail: "app@gitjournal.io",
|
||||
authorName: "GitJournal",
|
||||
authorEmail: Settings.instance.gitAuthorEmail,
|
||||
authorName: Settings.instance.gitAuthor,
|
||||
message: commitMessage,
|
||||
);
|
||||
|
||||
@ -64,8 +63,8 @@ class GitNoteRepository implements NoteRepository {
|
||||
await gitRm(this.dirName, filePath);
|
||||
await gitCommit(
|
||||
gitFolder: this.dirName,
|
||||
authorEmail: "app@gitjournal.io",
|
||||
authorName: "GitJournal",
|
||||
authorEmail: Settings.instance.gitAuthorEmail,
|
||||
authorName: Settings.instance.gitAuthor,
|
||||
message: "Removed Journal entry",
|
||||
);
|
||||
|
||||
|
Reference in New Issue
Block a user