mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 07:47:24 +00:00
Convert network folder to local
This commit is contained in:
@@ -346,6 +346,32 @@ class LocalFavoritesManager with ChangeNotifier {
|
||||
return name;
|
||||
}
|
||||
|
||||
void linkFolderToNetwork(String folder, String source, String networkFolder) {
|
||||
_db.execute("""
|
||||
insert or replace into folder_sync (folder_name, source_key, source_folder)
|
||||
values (?, ?, ?);
|
||||
""", [folder, source, networkFolder]);
|
||||
}
|
||||
|
||||
bool isLinkedToNetworkFolder(String folder, String source, String networkFolder) {
|
||||
var res = _db.select("""
|
||||
select * from folder_sync
|
||||
where folder_name == ? and source_key == ? and source_folder == ?;
|
||||
""", [folder, source, networkFolder]);
|
||||
return res.isNotEmpty;
|
||||
}
|
||||
|
||||
(String?, String?) findLinked(String folder) {
|
||||
var res = _db.select("""
|
||||
select * from folder_sync
|
||||
where folder_name == ?;
|
||||
""", [folder]);
|
||||
if (res.isEmpty) {
|
||||
return (null, null);
|
||||
}
|
||||
return (res.first["source_key"], res.first["source_folder"]);
|
||||
}
|
||||
|
||||
bool comicExists(String folder, String id, ComicType type) {
|
||||
var res = _db.select("""
|
||||
select * from "$folder"
|
||||
@@ -365,20 +391,19 @@ class LocalFavoritesManager with ChangeNotifier {
|
||||
return FavoriteItem.fromRow(res.first);
|
||||
}
|
||||
|
||||
/// add comic to a folder
|
||||
///
|
||||
/// This method will download cover to local, to avoid problems like changing url
|
||||
void addComic(String folder, FavoriteItem comic, [int? order]) async {
|
||||
/// add comic to a folder.
|
||||
/// return true if success, false if already exists
|
||||
bool addComic(String folder, FavoriteItem comic, [int? order]) {
|
||||
_modifiedAfterLastCache = true;
|
||||
if (!existsFolder(folder)) {
|
||||
throw Exception("Folder does not exists");
|
||||
}
|
||||
var res = _db.select("""
|
||||
select * from "$folder"
|
||||
where id == '${comic.id}';
|
||||
""");
|
||||
where id == ? and type == ?;
|
||||
""", [comic.id, comic.type.value]);
|
||||
if (res.isNotEmpty) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
final params = [
|
||||
comic.id,
|
||||
@@ -406,6 +431,7 @@ class LocalFavoritesManager with ChangeNotifier {
|
||||
""", [...params, minValue(folder) - 1]);
|
||||
}
|
||||
notifyListeners();
|
||||
return true;
|
||||
}
|
||||
|
||||
/// delete a folder
|
||||
@@ -414,6 +440,10 @@ class LocalFavoritesManager with ChangeNotifier {
|
||||
_db.execute("""
|
||||
drop table "$name";
|
||||
""");
|
||||
_db.execute("""
|
||||
delete from folder_order
|
||||
where folder_name == ?;
|
||||
""", [name]);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
@@ -461,6 +491,16 @@ class LocalFavoritesManager with ChangeNotifier {
|
||||
ALTER TABLE "$before"
|
||||
RENAME TO "$after";
|
||||
""");
|
||||
_db.execute("""
|
||||
update folder_order
|
||||
set folder_name = ?
|
||||
where folder_name == ?;
|
||||
""", [after, before]);
|
||||
_db.execute("""
|
||||
update folder_sync
|
||||
set folder_name = ?
|
||||
where folder_name == ?;
|
||||
""", [after, before]);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user