mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-14 23:40:30 +08:00

The accounts setup is taking way way too long. And some ios users have paid for pro and haven't gotten it. This way, they will at least get it ASAP. I should have done this weeks ago.
153 lines
4.9 KiB
Dart
153 lines
4.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:uuid/uuid.dart';
|
|
|
|
import 'package:gitjournal/features.dart';
|
|
|
|
class AppSettings extends ChangeNotifier {
|
|
// singleton
|
|
static final AppSettings _singleton = AppSettings._internal();
|
|
factory AppSettings() => _singleton;
|
|
AppSettings._internal();
|
|
static AppSettings get instance => _singleton;
|
|
|
|
//
|
|
// Properties
|
|
//
|
|
var onBoardingCompleted = false;
|
|
var collectUsageStatistics = true;
|
|
var collectCrashReports = true;
|
|
|
|
int version = 0;
|
|
|
|
var proMode = Features.alwaysPro;
|
|
var proExpirationDate = "";
|
|
var validateProMode = true;
|
|
|
|
String _pseudoId;
|
|
String get pseudoId => _pseudoId;
|
|
|
|
var debugLogLevel = 'v';
|
|
|
|
var experimentalFs = false;
|
|
var experimentalMarkdownToolbar = false;
|
|
var experimentalGraphView = false;
|
|
var experimentalZeroConf = false;
|
|
var experimentalAccounts = false;
|
|
|
|
var appVersion = "";
|
|
|
|
void load(SharedPreferences pref) {
|
|
onBoardingCompleted = pref.getBool("onBoardingCompleted") ?? false;
|
|
|
|
collectUsageStatistics =
|
|
pref.getBool("collectUsageStatistics") ?? collectUsageStatistics;
|
|
collectCrashReports =
|
|
pref.getBool("collectCrashReports") ?? collectCrashReports;
|
|
|
|
version = pref.getInt("appSettingsVersion") ?? version;
|
|
proMode = pref.getBool("proMode") ?? proMode;
|
|
proExpirationDate =
|
|
pref.getString("proExpirationDate") ?? proExpirationDate;
|
|
validateProMode = pref.getBool("validateProMode") ?? validateProMode;
|
|
|
|
_pseudoId = pref.getString("pseudoId");
|
|
if (_pseudoId == null) {
|
|
_pseudoId = Uuid().v4();
|
|
pref.setString("pseudoId", _pseudoId);
|
|
}
|
|
|
|
debugLogLevel = pref.getString("debugLogLevel") ?? debugLogLevel;
|
|
experimentalFs = pref.getBool("experimentalFs") ?? experimentalFs;
|
|
experimentalMarkdownToolbar = pref.getBool("experimentalMarkdownToolbar") ??
|
|
experimentalMarkdownToolbar;
|
|
experimentalGraphView =
|
|
pref.getBool("experimentalGraphView") ?? experimentalGraphView;
|
|
experimentalZeroConf =
|
|
pref.getBool("experimentalZeroConf") ?? experimentalZeroConf;
|
|
experimentalAccounts =
|
|
pref.getBool("experimentalAccounts") ?? experimentalAccounts;
|
|
|
|
appVersion = pref.getString("appVersion") ?? "";
|
|
}
|
|
|
|
Future<void> save() async {
|
|
var pref = await SharedPreferences.getInstance();
|
|
var defaultSet = AppSettings._internal();
|
|
|
|
pref.setBool("onBoardingCompleted", onBoardingCompleted);
|
|
|
|
_setBool(pref, "collectUsageStatistics", collectUsageStatistics,
|
|
defaultSet.collectUsageStatistics);
|
|
_setBool(pref, "collectCrashReports", collectCrashReports,
|
|
defaultSet.collectCrashReports);
|
|
|
|
_setString(pref, "proExpirationDate", proExpirationDate,
|
|
defaultSet.proExpirationDate);
|
|
_setBool(pref, "proMode", proMode, defaultSet.proMode);
|
|
_setBool(
|
|
pref, "validateProMode", validateProMode, defaultSet.validateProMode);
|
|
_setString(pref, "debugLogLevel", debugLogLevel, defaultSet.debugLogLevel);
|
|
_setBool(pref, "experimentalFs", experimentalFs, defaultSet.experimentalFs);
|
|
_setBool(pref, "experimentalMarkdownToolbar", experimentalMarkdownToolbar,
|
|
defaultSet.experimentalMarkdownToolbar);
|
|
_setBool(pref, "experimentalGraphView", experimentalGraphView,
|
|
defaultSet.experimentalGraphView);
|
|
_setBool(pref, "experimentalZeroConf", experimentalZeroConf,
|
|
defaultSet.experimentalZeroConf);
|
|
_setBool(pref, "experimentalAccounts", experimentalAccounts,
|
|
defaultSet.experimentalAccounts);
|
|
|
|
pref.setInt("appSettingsVersion", version);
|
|
pref.setString("appVersion", appVersion);
|
|
|
|
notifyListeners();
|
|
}
|
|
|
|
Map<String, String> toMap() {
|
|
return {
|
|
"onBoardingCompleted": onBoardingCompleted.toString(),
|
|
"collectUsageStatistics": collectUsageStatistics.toString(),
|
|
"collectCrashReports": collectCrashReports.toString(),
|
|
"version": version.toString(),
|
|
"proMode": proMode.toString(),
|
|
'validateProMode': validateProMode.toString(),
|
|
'proExpirationDate': proExpirationDate,
|
|
'pseudoId': pseudoId,
|
|
'debugLogLevel': debugLogLevel,
|
|
'experimentalFs': experimentalFs.toString(),
|
|
'experimentalMarkdownToolbar': experimentalMarkdownToolbar.toString(),
|
|
'experimentalGraphView': experimentalGraphView.toString(),
|
|
'experimentalZeroConf': experimentalZeroConf.toString(),
|
|
'experimentalAccounts': experimentalAccounts.toString(),
|
|
};
|
|
}
|
|
|
|
Future<void> _setString(
|
|
SharedPreferences pref,
|
|
String key,
|
|
String value,
|
|
String defaultValue,
|
|
) async {
|
|
if (value == defaultValue) {
|
|
await pref.remove(key);
|
|
} else {
|
|
await pref.setString(key, value);
|
|
}
|
|
}
|
|
|
|
Future<void> _setBool(
|
|
SharedPreferences pref,
|
|
String key,
|
|
bool value,
|
|
bool defaultValue,
|
|
) async {
|
|
if (value == defaultValue) {
|
|
await pref.remove(key);
|
|
} else {
|
|
await pref.setBool(key, value);
|
|
}
|
|
}
|
|
}
|