mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 15:57:25 +00:00
Make sure the follow updates is initialized correctly.
This commit is contained in:
@@ -4,9 +4,10 @@ import 'package:flutter/foundation.dart';
|
|||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:venera/foundation/app.dart';
|
import 'package:venera/foundation/app.dart';
|
||||||
import 'package:venera/utils/data_sync.dart';
|
import 'package:venera/utils/data_sync.dart';
|
||||||
|
import 'package:venera/utils/init.dart';
|
||||||
import 'package:venera/utils/io.dart';
|
import 'package:venera/utils/io.dart';
|
||||||
|
|
||||||
class Appdata {
|
class Appdata with Init {
|
||||||
Appdata._create();
|
Appdata._create();
|
||||||
|
|
||||||
final Settings settings = Settings._create();
|
final Settings settings = Settings._create();
|
||||||
@@ -53,28 +54,6 @@ class Appdata {
|
|||||||
saveData();
|
saveData();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> init() async {
|
|
||||||
var dataPath = (await getApplicationSupportDirectory()).path;
|
|
||||||
var file = File(FilePath.join(
|
|
||||||
dataPath,
|
|
||||||
'appdata.json',
|
|
||||||
));
|
|
||||||
if (!await file.exists()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var json = jsonDecode(await file.readAsString());
|
|
||||||
for (var key in (json['settings'] as Map<String, dynamic>).keys) {
|
|
||||||
if (json['settings'][key] != null) {
|
|
||||||
settings[key] = json['settings'][key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
searchHistory = List.from(json['searchHistory']);
|
|
||||||
var implicitDataFile = File(FilePath.join(dataPath, 'implicitData.json'));
|
|
||||||
if (await implicitDataFile.exists()) {
|
|
||||||
implicitData = jsonDecode(await implicitDataFile.readAsString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
return {
|
return {
|
||||||
'settings': settings._data,
|
'settings': settings._data,
|
||||||
@@ -110,6 +89,29 @@ class Appdata {
|
|||||||
var file = File(FilePath.join(App.dataPath, 'implicitData.json'));
|
var file = File(FilePath.join(App.dataPath, 'implicitData.json'));
|
||||||
file.writeAsString(jsonEncode(implicitData));
|
file.writeAsString(jsonEncode(implicitData));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> doInit() async {
|
||||||
|
var dataPath = (await getApplicationSupportDirectory()).path;
|
||||||
|
var file = File(FilePath.join(
|
||||||
|
dataPath,
|
||||||
|
'appdata.json',
|
||||||
|
));
|
||||||
|
if (!await file.exists()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var json = jsonDecode(await file.readAsString());
|
||||||
|
for (var key in (json['settings'] as Map<String, dynamic>).keys) {
|
||||||
|
if (json['settings'][key] != null) {
|
||||||
|
settings[key] = json['settings'][key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
searchHistory = List.from(json['searchHistory']);
|
||||||
|
var implicitDataFile = File(FilePath.join(dataPath, 'implicitData.json'));
|
||||||
|
if (await implicitDataFile.exists()) {
|
||||||
|
implicitData = jsonDecode(await implicitDataFile.readAsString());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final appdata = Appdata._create();
|
final appdata = Appdata._create();
|
||||||
@@ -160,7 +162,8 @@ class Settings with ChangeNotifier {
|
|||||||
'customImageProcessing': defaultCustomImageProcessing,
|
'customImageProcessing': defaultCustomImageProcessing,
|
||||||
'sni': true,
|
'sni': true,
|
||||||
'autoAddLanguageFilter': 'none', // none, chinese, english, japanese
|
'autoAddLanguageFilter': 'none', // none, chinese, english, japanese
|
||||||
'comicSourceListUrl': "https://cdn.jsdelivr.net/gh/venera-app/venera-configs@latest/index.json",
|
'comicSourceListUrl':
|
||||||
|
"https://cdn.jsdelivr.net/gh/venera-app/venera-configs@latest/index.json",
|
||||||
'preloadImageCount': 4,
|
'preloadImageCount': 4,
|
||||||
'followUpdatesFolder': null,
|
'followUpdatesFolder': null,
|
||||||
'initialPage': '0',
|
'initialPage': '0',
|
||||||
|
@@ -224,7 +224,8 @@ class LocalFavoritesManager with ChangeNotifier {
|
|||||||
source_folder text
|
source_folder text
|
||||||
);
|
);
|
||||||
""");
|
""");
|
||||||
for (var folder in _getFolderNamesWithDB()) {
|
var folderNames = _getFolderNamesWithDB();
|
||||||
|
for (var folder in folderNames) {
|
||||||
var columns = _db.select("""
|
var columns = _db.select("""
|
||||||
pragma table_info("$folder");
|
pragma table_info("$folder");
|
||||||
""");
|
""");
|
||||||
@@ -246,6 +247,15 @@ class LocalFavoritesManager with ChangeNotifier {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
await appdata.ensureInit();
|
||||||
|
// Make sure the follow updates folder is ready
|
||||||
|
var followUpdateFolder = appdata.settings['followUpdatesFolder'];
|
||||||
|
if (followUpdateFolder is String &&
|
||||||
|
folderNames.contains(followUpdateFolder)) {
|
||||||
|
prepareTableForFollowUpdates(followUpdateFolder, false);
|
||||||
|
} else {
|
||||||
|
appdata.settings['followUpdatesFolder'] = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> find(String id, ComicType type) {
|
List<String> find(String id, ComicType type) {
|
||||||
@@ -849,7 +859,7 @@ class LocalFavoritesManager with ChangeNotifier {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void prepareTableForFollowUpdates(String table) {
|
void prepareTableForFollowUpdates(String table, [bool clearData = true]) {
|
||||||
// check if the table has the column "last_update_time" "has_new_update" "last_check_time"
|
// check if the table has the column "last_update_time" "has_new_update" "last_check_time"
|
||||||
var columns = _db.select("""
|
var columns = _db.select("""
|
||||||
pragma table_info("$table");
|
pragma table_info("$table");
|
||||||
@@ -866,10 +876,12 @@ class LocalFavoritesManager with ChangeNotifier {
|
|||||||
add column has_new_update int;
|
add column has_new_update int;
|
||||||
""");
|
""");
|
||||||
}
|
}
|
||||||
|
if (clearData) {
|
||||||
_db.execute("""
|
_db.execute("""
|
||||||
update "$table"
|
update "$table"
|
||||||
set has_new_update = 0;
|
set has_new_update = 0;
|
||||||
""");
|
""");
|
||||||
|
}
|
||||||
if (!columns.any((element) => element["name"] == "last_check_time")) {
|
if (!columns.any((element) => element["name"] == "last_check_time")) {
|
||||||
_db.execute("""
|
_db.execute("""
|
||||||
alter table "$table"
|
alter table "$table"
|
||||||
|
Reference in New Issue
Block a user