Make sure the follow updates is initialized correctly.

This commit is contained in:
2025-03-13 16:09:17 +08:00
parent 8e964468ea
commit 309df2143b
2 changed files with 42 additions and 27 deletions

View File

@@ -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',

View File

@@ -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;
"""); """);
} }
_db.execute(""" if (clearData) {
_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"