mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-07-17 14:50:12 +08:00
opt multi del
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -270,7 +270,7 @@ abstract class CommonIntroController extends GetxController {
|
||||
|
||||
Future<void> viewLater() async {
|
||||
var res = await (hasLater.value
|
||||
? UserHttp.toViewDel(aids: [IdUtils.bv2av(bvid)])
|
||||
? UserHttp.toViewDel(aids: IdUtils.bv2av(bvid).toString())
|
||||
: await UserHttp.toViewLater(bvid: bvid));
|
||||
if (res['status']) hasLater.value = !hasLater.value;
|
||||
SmartDialog.showToast(res['msg']);
|
||||
|
||||
@@ -14,13 +14,9 @@ abstract class MultiSelectBase<T> {
|
||||
|
||||
void onSelect(T item, [bool disableSelect = true]);
|
||||
void handleSelect([bool checked = false, bool disableSelect = true]);
|
||||
void onConfirm();
|
||||
void onRemove();
|
||||
}
|
||||
|
||||
abstract class MultiSelectController<R, T extends MultiSelectData>
|
||||
extends CommonListController<R, T>
|
||||
with CommonMultiSelectMixin<T>, DeleteItemMixin {}
|
||||
|
||||
mixin CommonMultiSelectMixin<T extends MultiSelectData>
|
||||
implements MultiSelectBase<T> {
|
||||
@override
|
||||
@@ -76,15 +72,16 @@ mixin CommonMultiSelectMixin<T extends MultiSelectData>
|
||||
|
||||
mixin DeleteItemMixin<R, T extends MultiSelectData>
|
||||
on CommonListController<R, T>, CommonMultiSelectMixin<T> {
|
||||
Future<void> afterDelete(Set<T> result) async {
|
||||
// TODO: result require hash
|
||||
final remainList = loadingState.value.data!;
|
||||
if (result.length == 1) {
|
||||
remainList.remove(result.single);
|
||||
Future<void> afterDelete(Iterable<T> removeList) async {
|
||||
final list = loadingState.value.data!;
|
||||
if (removeList.length == list.length) {
|
||||
list.clear();
|
||||
} else if (removeList.length == 1) {
|
||||
list.remove(removeList.single);
|
||||
} else {
|
||||
remainList.removeWhere(result.contains);
|
||||
list.removeWhere(removeList.contains);
|
||||
}
|
||||
if (remainList.isNotEmpty) {
|
||||
if (list.isNotEmpty) {
|
||||
loadingState.refresh();
|
||||
} else if (!isEnd) {
|
||||
onReload();
|
||||
@@ -0,0 +1,6 @@
|
||||
import 'package:PiliPlus/pages/common/common_list_controller.dart';
|
||||
import 'package:PiliPlus/pages/common/multi_select/base.dart';
|
||||
|
||||
abstract class MultiSelectController<R, T extends MultiSelectData>
|
||||
extends CommonListController<R, T>
|
||||
with CommonMultiSelectMixin<T>, DeleteItemMixin {}
|
||||
@@ -1,8 +1,8 @@
|
||||
import 'package:PiliPlus/common/widgets/appbar/appbar.dart';
|
||||
import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/pages/common/common_search_controller.dart';
|
||||
import 'package:PiliPlus/pages/common/multi_select_controller.dart';
|
||||
import 'package:PiliPlus/pages/common/search/common_search_controller.dart';
|
||||
import 'package:PiliPlus/pages/common/multi_select/base.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import 'package:PiliPlus/pages/common/common_slide_page.dart';
|
||||
import 'package:PiliPlus/pages/common/slide/common_slide_page.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
abstract class CommonCollapseSlidePage extends CommonSlidePage {
|
||||
Reference in New Issue
Block a user