Skip to content

Commit e2bdc54

Browse files
author
OverPoweredDev
committed
implemented automated exporting
1 parent e5d3460 commit e2bdc54

File tree

5 files changed

+63
-5
lines changed

5 files changed

+63
-5
lines changed

src/lib/homepage/body.dart

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:Junior/homepage/components/title.dart';
66
import 'package:Junior/model/novel.dart';
77
import 'package:Junior/model/preferences.dart';
88
import 'package:flutter/material.dart';
9+
import 'package:shared_preferences/shared_preferences.dart';
910

1011
import '../theme.dart';
1112

@@ -27,6 +28,7 @@ class _HomePageState extends State<HomePage> {
2728
@override
2829
void initState() {
2930
super.initState();
31+
showChangelog(context);
3032
loadData();
3133
}
3234

@@ -42,6 +44,26 @@ class _HomePageState extends State<HomePage> {
4244
sortBy(preferences.sortBy);
4345
}
4446

47+
showChangelog(BuildContext context) async {
48+
SharedPreferences prefs = await SharedPreferences.getInstance();
49+
String changelogVersion = prefs.getString('currVersion') ?? '1.0.0';
50+
51+
bool showChangelog = true;
52+
53+
if(showChangelog) {
54+
showDialog(
55+
context: context,
56+
builder: (BuildContext context) => AlertDialog(
57+
title: Text(
58+
'',
59+
style: TextStyle(color: textColor),
60+
),
61+
backgroundColor: tileColor.withAlpha(255),
62+
),
63+
);
64+
}
65+
}
66+
4567
@override
4668
Widget build(BuildContext context) {
4769
return Scaffold(

src/lib/model/novel.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import 'dart:convert';
22
import 'dart:io';
33

4+
import 'package:Junior/model/preferences.dart';
5+
import 'package:Junior/settings_page/components/export_data.dart';
46
import 'package:flutter/material.dart';
57
import 'package:path_provider/path_provider.dart';
68

@@ -51,8 +53,9 @@ class Novel {
5153
isComplete = getFromJson(json, 'isComplete', false),
5254
novelLink = getFromJson(json, 'novelLink', '');
5355

54-
static dynamic getFromJson(Map<String, dynamic> json, String key, dynamic defaultValue){
55-
if(json.containsKey(key)){
56+
static dynamic getFromJson(
57+
Map<String, dynamic> json, String key, dynamic defaultValue) {
58+
if (json.containsKey(key)) {
5659
return json[key];
5760
} else {
5861
return defaultValue;
@@ -99,6 +102,9 @@ Future<File> saveNovelList(novelList) async {
99102
final file = await _localFile;
100103
final novelListJSON = jsonEncode(novelList);
101104

105+
final prefs = await loadPreferences();
106+
if (prefs.exportAutomatically) exportData();
107+
102108
return file.writeAsString(novelListJSON);
103109
}
104110

src/lib/model/preferences.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,24 @@ import 'package:shared_preferences/shared_preferences.dart';
33

44
class Preferences {
55
bool darkMode;
6+
bool exportAutomatically;
67
String sortBy;
78

8-
Preferences({this.darkMode = true, this.sortBy = 'Ongoing'});
9+
Preferences({this.darkMode = true, this.sortBy = 'Ongoing', this.exportAutomatically = true});
910
}
1011

1112
Future<Preferences> loadPreferences() async {
1213
SharedPreferences preferences = await SharedPreferences.getInstance();
1314
bool darkMode = preferences.get('darkMode') ?? true;
15+
bool exportReminder = preferences.get('exportAutomatically') ?? true;
1416
String sortBy = preferences.get('sortBy') ?? 'Ongoing';
1517

1618
if (darkMode)
1719
setDarkMode();
1820
else
1921
setLightMode();
2022

21-
return Preferences(darkMode: darkMode, sortBy: sortBy);
23+
return Preferences(darkMode: darkMode, sortBy: sortBy, exportAutomatically: exportReminder);
2224
}
2325

2426
Future<bool> saveDarkModeOption(bool isDarkMode) async {
@@ -31,4 +33,10 @@ Future<bool> saveSortOption(String sortBy) async {
3133
SharedPreferences preferences = await SharedPreferences.getInstance();
3234
preferences.setString('sortBy', sortBy);
3335
return true;
36+
}
37+
38+
Future<bool> saveExportReminder(bool export) async {
39+
SharedPreferences preferences = await SharedPreferences.getInstance();
40+
preferences.setBool('exportAutomatically', export);
41+
return true;
3442
}

src/lib/settings_page/body.dart

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,28 @@ class _SettingsPageState extends State<SettingsPage> {
126126
fontWeight: FontWeight.w700,
127127
),
128128
tiles: [
129+
SettingsTile.switchTile(
130+
title: 'Automatic Exporting',
131+
subtitle: 'Highly Recommended',
132+
titleTextStyle: TextStyle(color: textColor),
133+
subtitleTextStyle: TextStyle(
134+
color: textColor,
135+
fontSize: 12,
136+
),
137+
leading: Padding(
138+
padding: EdgeInsets.only(top: 8),
139+
child: Icon(
140+
Icons.alarm,
141+
color: linkColor,
142+
),
143+
),
144+
switchValue: preferences.exportAutomatically,
145+
onToggle: (bool toggle) {
146+
preferences.exportAutomatically = toggle;
147+
saveExportReminder(toggle);
148+
setState(() {});
149+
},
150+
),
129151
SettingsTile(
130152
title: 'Export Data',
131153
titleTextStyle: TextStyle(color: textColor),

src/lib/theme.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ void setDarkMode(){
1111
tileColor = Color.fromRGBO(64, 75, 96, 0.9);
1212
textColor = Color.fromRGBO(255, 255, 255, 1.0);
1313
iconColor = Color.fromRGBO(255, 255, 255, 1.0);
14-
linkColor = Color.fromRGBO(250, 250, 255, 1.0);
14+
linkColor = Color.fromRGBO(234, 234, 234, 1.0);
1515
}
1616

1717
void setLightMode(){

0 commit comments

Comments
 (0)