opt: up panel

Closes #513

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-03-25 16:47:56 +08:00
parent 6ab8e5925e
commit 4879701008
2 changed files with 29 additions and 20 deletions

View File

@@ -10,8 +10,9 @@ class FollowDataModel {
FollowDataModel.fromJson(Map<String, dynamic> json) { FollowDataModel.fromJson(Map<String, dynamic> json) {
total = json['total'] ?? 0; total = json['total'] ?? 0;
list = (json['list'] as List?) list = (json['list'] as List?)
?.map<FollowItemModel>((e) => FollowItemModel.fromJson(e)) ?.map<FollowItemModel>((e) => FollowItemModel.fromJson(e))
.toList(); .toList() ??
[];
} }
} }

View File

@@ -33,7 +33,6 @@ class DynamicsController extends GetxController
dynamic face; dynamic face;
RxBool isLoadingDynamic = false.obs; RxBool isLoadingDynamic = false.obs;
List<UpItem> hasUpdatedUps = <UpItem>[]; List<UpItem> hasUpdatedUps = <UpItem>[];
List<UpItem> allFollowedUps = <UpItem>[];
int allFollowedUpsPage = 1; int allFollowedUpsPage = 1;
int allFollowedUpsTotal = 0; int allFollowedUpsTotal = 0;
@@ -69,8 +68,9 @@ class DynamicsController extends GetxController
} }
Future queryFollowing2() async { Future queryFollowing2() async {
if (allFollowedUps.length >= allFollowedUpsTotal) { if (upData.value.upList != null &&
SmartDialog.showToast('没有更多了'); upData.value.upList!.length >= allFollowedUpsTotal) {
// SmartDialog.showToast('没有更多了');
return; return;
} }
var res = await FollowHttp.followings( var res = await FollowHttp.followings(
@@ -80,16 +80,22 @@ class DynamicsController extends GetxController
orderType: 'attention', orderType: 'attention',
); );
if (res['status']) { if (res['status']) {
allFollowedUps.addAll(res['data'].list.map<UpItem>((FollowItemModel e) => upData.value.upList ??= <UpItem>[];
UpItem( upData.value.upList!.addAll(
face: e.face, res['data']
mid: e.mid, .list
uname: e.uname, .where((e) => hasUpdatedUps.every((e1) => e.mid != e1.mid))
hasUpdate: hasUpdatedUps.any((element) => .map<UpItem>(
(element.mid == e.mid) && (element.hasUpdate == true))))); (FollowItemModel e) => UpItem(
face: e.face,
mid: e.mid,
uname: e.uname,
hasUpdate: false,
),
),
);
allFollowedUpsPage += 1; allFollowedUpsPage += 1;
allFollowedUpsTotal = res['data'].total; allFollowedUpsTotal = res['data'].total;
upData.value.upList = allFollowedUps;
upData.refresh(); upData.refresh();
} else { } else {
SmartDialog.showToast(res['msg']); SmartDialog.showToast(res['msg']);
@@ -129,23 +135,25 @@ class DynamicsController extends GetxController
upData.refresh(); upData.refresh();
hasUpdatedUps = ress[0]['data'].upList!; hasUpdatedUps = ress[0]['data'].upList!;
} }
List<UpItem> allFollowedUps = <UpItem>[];
if (!ress[1]['status']) { if (!ress[1]['status']) {
SmartDialog.showToast("获取关注列表失败:${ress[1]['msg']}"); SmartDialog.showToast("获取关注列表失败:${ress[1]['msg']}");
} else { } else {
allFollowedUps = ress[1]['data'] allFollowedUps = (ress[1]['data'].list as List)
.list .where((e) => hasUpdatedUps.every((e1) => e.mid != e1.mid))
.map<UpItem>((FollowItemModel e) => UpItem( .map<UpItem>(
(e) => UpItem(
face: e.face, face: e.face,
mid: e.mid, mid: e.mid,
uname: e.uname, uname: e.uname,
hasUpdate: hasUpdatedUps.any((element) => hasUpdate: false,
(element.mid == e.mid) && (element.hasUpdate == true)))) ),
)
.toList(); .toList();
allFollowedUpsPage += 1; allFollowedUpsPage += 1;
allFollowedUpsTotal = ress[1]['data'].total; allFollowedUpsTotal = ress[1]['data'].total;
} }
upData.value.upList = upData.value.upList = hasUpdatedUps + allFollowedUps;
allFollowedUpsTotal > 0 ? allFollowedUps : hasUpdatedUps;
upData.refresh(); upData.refresh();
} else { } else {
var res = await DynamicsHttp.followUp(); var res = await DynamicsHttp.followUp();