Skip to content

Commit d0e8189

Browse files
committed
rewrite: Changed aniyomibridge to new simplified api.
1 parent 739449b commit d0e8189

2 files changed

Lines changed: 28 additions & 55 deletions

File tree

lib/application/cubits/extensions_cubit.dart

Lines changed: 16 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -73,72 +73,45 @@ class ExtensionsCubit extends Cubit<ExtensionsState> with EffectMixin<Extensions
7373
return;
7474
}
7575
try {
76-
if (extension.type == ExtensionType.ANIYOMI) {
77-
emit(state.copyWith(
78-
availableAnimeExtensions: List.from(state.availableAnimeExtensions)..remove(extension)
79-
));
80-
} else {
81-
emit(state.copyWith(
82-
availableMangaExtensions: List.from(state.availableMangaExtensions)..remove(extension)
83-
));
84-
}
8576
await _extensionRepositoryAniyomi.addExtension(extension);
8677
if (extension.type == ExtensionType.ANIYOMI) {
87-
emit(state.copyWith(
88-
installedAnimeExtensions: [extension, ...state.installedAnimeExtensions]
89-
));
90-
78+
_fetchInstaledAnimeExtensions(state.loggedUser);
79+
_fetchAvailableAnimeExtensions(state.loggedUser);
9180
} else {
92-
emit(state.copyWith(
93-
installedMangaExtensions: [extension, ...state.installedMangaExtensions]
94-
));
81+
_fetchInstaledMangaExtensions(state.loggedUser);
82+
_fetchAvailableMangaExtensions(state.loggedUser);
9583
}
9684
showSnackBarEffect("${extension.name} Installed!", message: "${extension.name} was installed successfully", contentType: ContentType.success);
9785
} catch (e, stackTrace) {
9886
if (extension.type == ExtensionType.ANIYOMI) {
99-
emit(state.copyWith(
100-
availableAnimeExtensions: [extension, ...state.availableAnimeExtensions]
101-
));
87+
_fetchAvailableAnimeExtensions(state.loggedUser);
10288
} else {
103-
emit(state.copyWith(
104-
availableMangaExtensions: [extension, ...state.availableMangaExtensions]
105-
));
89+
_fetchAvailableMangaExtensions(state.loggedUser);
10690
}
10791
handleError("Failed to download extension ${extension.pkg}: $e", stackTrace: stackTrace);
10892
}
10993
}
11094

11195
Future<void> removeExtension(Extension extension) async {
96+
if (!state.installedAnimeExtensions.contains(extension) && !state.installedMangaExtensions.contains(extension)) {
97+
handleError("This version of ${extension.name} is already uninstalled.");
98+
return;
99+
}
112100
try {
113-
if (extension.type == ExtensionType.ANIYOMI) {
114-
emit(state.copyWith(
115-
installedAnimeExtensions: List.from(state.installedAnimeExtensions)..remove(extension)
116-
));
117-
} else {
118-
emit(state.copyWith(
119-
installedMangaExtensions: List.from(state.installedMangaExtensions)..remove(extension)
120-
));
121-
}
122101
await _extensionRepositoryAniyomi.removeExtension(extension);
123102
if (extension.type == ExtensionType.ANIYOMI) {
124-
emit(state.copyWith(
125-
availableAnimeExtensions: [extension, ...state.availableAnimeExtensions]
126-
));
103+
_fetchInstaledAnimeExtensions(state.loggedUser);
104+
_fetchAvailableAnimeExtensions(state.loggedUser);
127105
} else {
128-
emit(state.copyWith(
129-
availableMangaExtensions: [extension, ...state.availableMangaExtensions]
130-
));
106+
_fetchInstaledMangaExtensions(state.loggedUser);
107+
_fetchAvailableMangaExtensions(state.loggedUser);
131108
}
132109
showSnackBarEffect("${extension.name} Removed!", message: "${extension.name} was removed successfully", contentType: ContentType.success);
133110
} catch (e, stackTrace) {
134111
if (extension.type == ExtensionType.ANIYOMI) {
135-
emit(state.copyWith(
136-
installedAnimeExtensions: [extension, ...state.installedAnimeExtensions]
137-
));
112+
_fetchInstaledAnimeExtensions(state.loggedUser);
138113
} else {
139-
emit(state.copyWith(
140-
installedMangaExtensions: [extension, ...state.installedMangaExtensions]
141-
));
114+
_fetchInstaledMangaExtensions(state.loggedUser);
142115
}
143116
handleError("Failed to remove extension ${extension.pkg}: $e", stackTrace: stackTrace);
144117
}

lib/data/repositories/extension_repository_aniyomi.dart

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,9 @@ class ExtensionRepositoryAniyomi implements ExtensionRepository {
146146
_aniyomiExtensionsBox = await Hive.openBox<Extension>('aniyomiExtensions');
147147
await _aniyomiExtensionsBox.put('${extension.name}-${extension.version}', extension);
148148
if (extension.type == ExtensionType.ANIYOMI) {
149-
_aniyomiBridge.loadAnimeExtension(extension.apk);
149+
_aniyomiBridge.loadAnimeExtension(extension.apk, extension.pkg);
150150
} else if (extension.type == ExtensionType.TACHIYOMI) {
151-
_aniyomiBridge.loadMangaExtension(extension.apk);
151+
_aniyomiBridge.loadMangaExtension(extension.apk, extension.pkg);
152152
} else {
153153
_logger.w("Unknown extension type: ${extension.type}");
154154
throw Exception("Unknown extension type: ${extension.type}");
@@ -160,37 +160,37 @@ class ExtensionRepositoryAniyomi implements ExtensionRepository {
160160
_aniyomiExtensionsBox = await Hive.openBox<Extension>('aniyomiExtensions');
161161
await _aniyomiExtensionsBox.delete('${extension.name}-${extension.version}');
162162
if (extension.type == ExtensionType.ANIYOMI) {
163-
_aniyomiBridge.unloadAnimeExtension(extension.pkg.substring(extension.pkg.lastIndexOf(".") + 1), "v${extension.version}");
163+
_aniyomiBridge.unloadAnimeExtension(extension.pkg);
164164
} else if (extension.type == ExtensionType.TACHIYOMI) {
165-
_aniyomiBridge.unloadMangaExtension(extension.pkg.substring(extension.pkg.lastIndexOf(".") + 1), "v${extension.version}");
165+
_aniyomiBridge.unloadMangaExtension(extension.pkg);
166166
} else {
167167
_logger.w("Unknown extension type: ${extension.type}");
168168
throw Exception("Unknown extension type: ${extension.type}");
169169
}
170170
}
171171

172172
Future<List<JSAnime>> getAnimeSearchResults(String query, Extension extension) async {
173-
return _aniyomiBridge.getAnimeSearchResults(query, 1, extension.pkg.substring(extension.pkg.lastIndexOf(".") + 1));
173+
return _aniyomiBridge.getAnimeSearchResults(query, 1, extension.pkg);
174174
}
175175

176176
Future<List<JSEpisode>> getAnimeEpisodeList(JSAnime anime, Extension extension) async {
177-
return _aniyomiBridge.getEpisodeList(anime, extension.pkg.substring(extension.pkg.lastIndexOf(".") + 1));
177+
return _aniyomiBridge.getEpisodeList(anime, extension.pkg);
178178
}
179179

180180
Future<List<JVideo>> getAnimeVideoList(JSEpisode episode, Extension extension) async {
181-
return _aniyomiBridge.getVideoList(episode, extension.pkg.substring(extension.pkg.lastIndexOf(".") + 1));
181+
return _aniyomiBridge.getVideoList(episode, extension.pkg);
182182
}
183183

184184
Future<List<JSManga>> getMangaSearchResults(String query, Extension extension) async {
185-
return _aniyomiBridge.getMangaSearchResults(query, 1, extension.pkg.substring(extension.pkg.lastIndexOf(".") + 1));
185+
return _aniyomiBridge.getMangaSearchResults(query, 1, extension.pkg);
186186
}
187187

188188
Future<List<JSChapter>> getMangaChapterList(JSManga manga, Extension extension) async {
189-
return _aniyomiBridge.getChapterList(manga, extension.pkg.substring(extension.pkg.lastIndexOf(".") + 1));
189+
return _aniyomiBridge.getChapterList(manga, extension.pkg);
190190
}
191191

192192
Future<List<JPage>> getMangaPageList(JSChapter chapter, Extension extension) async {
193-
return _aniyomiBridge.getPageList(chapter, extension.pkg.substring(extension.pkg.lastIndexOf(".") + 1));
193+
return _aniyomiBridge.getPageList(chapter, extension.pkg);
194194
}
195195

196196
List<AniyomiRepoJsonEntity> _parseAniyomiRepoJsonList(Map<String, dynamic> json) {
@@ -214,7 +214,7 @@ class ExtensionRepositoryAniyomi implements ExtensionRepository {
214214
return;
215215
}
216216
for (Extension extension in installedExtensions) {
217-
_aniyomiBridge.loadAnimeExtension(extension.apk);
217+
_aniyomiBridge.loadAnimeExtension(extension.apk, extension.pkg);
218218
}
219219
}
220220

@@ -227,7 +227,7 @@ class ExtensionRepositoryAniyomi implements ExtensionRepository {
227227
return;
228228
}
229229
for (Extension extension in installedExtensions) {
230-
_aniyomiBridge.loadMangaExtension(extension.apk);
230+
_aniyomiBridge.loadMangaExtension(extension.apk, extension.pkg);
231231
}
232232
}
233233

0 commit comments

Comments
 (0)