This commit is contained in:
@ -14,6 +14,7 @@ class MediaController extends GetxController {
|
||||
RxBool loading = false.obs;
|
||||
RxBool atEnd = false.obs;
|
||||
RxBool atStart = false.obs;
|
||||
Rxn<String> errorMessage = Rxn<String>();
|
||||
|
||||
RxInt typeIndex = 0.obs;
|
||||
RxInt modeIndex = 0.obs;
|
||||
@ -22,12 +23,10 @@ class MediaController extends GetxController {
|
||||
|
||||
void setTypeIndex(int idx) {
|
||||
typeIndex.value = idx;
|
||||
fetchInitial();
|
||||
}
|
||||
|
||||
void setModeIndex(int idx) {
|
||||
modeIndex.value = idx;
|
||||
fetchInitial();
|
||||
}
|
||||
|
||||
void setTag(String? newTag, {bool reload = true}) {
|
||||
@ -37,6 +36,10 @@ class MediaController extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
void toggleRandom() {
|
||||
random.value = random.value == 0 ? 1 : 0;
|
||||
}
|
||||
|
||||
Future<List<Favorite>?> toggleFavorite(
|
||||
MediaItem item,
|
||||
bool isFavorite,
|
||||
@ -51,6 +54,7 @@ class MediaController extends GetxController {
|
||||
Future<Feed?> _fetchItems({int? older, int? newer}) async {
|
||||
if (loading.value) return null;
|
||||
loading.value = true;
|
||||
errorMessage.value = null;
|
||||
try {
|
||||
return await _api.fetchItems(
|
||||
older: older,
|
||||
@ -61,11 +65,10 @@ class MediaController extends GetxController {
|
||||
tag: tag.value,
|
||||
);
|
||||
} catch (e) {
|
||||
Get.snackbar(
|
||||
'Fehler beim Laden',
|
||||
'Die Daten konnten nicht abgerufen werden. Wo Internet?',
|
||||
snackPosition: SnackPosition.BOTTOM,
|
||||
);
|
||||
final String errorText =
|
||||
'Die Daten konnten nicht abgerufen werden. Wo Internet?';
|
||||
errorMessage.value = errorText;
|
||||
Get.snackbar('Fehler beim Laden', errorText);
|
||||
return null;
|
||||
} finally {
|
||||
loading.value = false;
|
||||
@ -73,7 +76,7 @@ class MediaController extends GetxController {
|
||||
}
|
||||
|
||||
Future<void> fetchInitial({int? id}) async {
|
||||
final result = await _fetchItems(older: id);
|
||||
final Feed? result = await _fetchItems(older: id);
|
||||
if (result != null) {
|
||||
items.assignAll(result.items);
|
||||
atEnd.value = result.atEnd;
|
||||
@ -83,7 +86,7 @@ class MediaController extends GetxController {
|
||||
|
||||
Future<void> fetchMore() async {
|
||||
if (items.isEmpty || atEnd.value) return;
|
||||
final result = await _fetchItems(older: items.last.id);
|
||||
final Feed? result = await _fetchItems(older: items.last.id);
|
||||
if (result != null) {
|
||||
final Set<int> existingIds = items.map((e) => e.id).toSet();
|
||||
final List<MediaItem> newItems = result.items
|
||||
@ -95,10 +98,9 @@ class MediaController extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
Future<int> fetchNewer() async {
|
||||
if (items.isEmpty || atStart.value) return 0;
|
||||
final oldLength = items.length;
|
||||
final result = await _fetchItems(newer: items.first.id);
|
||||
Future<void> fetchNewer() async {
|
||||
if (items.isEmpty || atStart.value) return;
|
||||
final Feed? result = await _fetchItems(newer: items.first.id);
|
||||
if (result != null) {
|
||||
final Set<int> existingIds = items.map((e) => e.id).toSet();
|
||||
final List<MediaItem> newItems = result.items
|
||||
@ -107,9 +109,8 @@ class MediaController extends GetxController {
|
||||
items.insertAll(0, newItems);
|
||||
items.refresh();
|
||||
atStart.value = result.atStart;
|
||||
return items.length - oldLength;
|
||||
}
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
Future<void> handleRefresh() async {
|
||||
@ -122,15 +123,11 @@ class MediaController extends GetxController {
|
||||
}
|
||||
|
||||
Future<void> handleLoading() async {
|
||||
if (loading.value) return;
|
||||
if (!loading.value && !atEnd.value) {
|
||||
await fetchMore();
|
||||
}
|
||||
}
|
||||
|
||||
void toggleRandom() {
|
||||
random.value = random.value == 1 ? 0 : 1;
|
||||
fetchInitial();
|
||||
}
|
||||
|
||||
bool get isRandomEnabled => random.value == 1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user