fix: parse whisper data

mod: load more pm

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-23 10:42:47 +08:00
parent 2f5a3d66fc
commit e212144250
5 changed files with 36 additions and 9 deletions

View File

@@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/pages/common/common_list_controller.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
@@ -19,6 +20,8 @@ class WhisperDetailController
late String face;
String? mid;
int? msgSeqno;
//表情转换图片规则
List<dynamic>? eInfos;
@@ -38,7 +41,8 @@ class WhisperDetailController
bool isRefresh, Success<SessionMsgDataModel> response) {
List<MessageItem>? messageList = response.response.messages;
if (messageList?.isNotEmpty == true) {
if (messageList!.length == 1 &&
msgSeqno = messageList!.last.msgSeqno;
if (messageList.length == 1 &&
messageList.last.msgType == 18 &&
messageList.last.msgSource == 18) {
// debugPrint(messageList.last);
@@ -103,7 +107,7 @@ class WhisperDetailController
loadingState.refresh();
SmartDialog.showToast('撤回成功');
} else {
queryData();
onRefresh();
onClearText();
SmartDialog.showToast('发送成功');
}
@@ -114,10 +118,24 @@ class WhisperDetailController
@override
List<MessageItem>? getDataList(SessionMsgDataModel response) {
if (response.hasMore == 0) {
isEnd = true;
}
return response.messages;
}
@override
Future<void> onRefresh() {
msgSeqno = null;
scrollController.jumpToTop();
return super.onRefresh();
}
@override
Future<LoadingState<SessionMsgDataModel>> customGetData() =>
MsgHttp.sessionMsg(talkerId: talkerId);
MsgHttp.sessionMsg(
talkerId: talkerId,
beginSeqno: msgSeqno != null ? 0 : null,
endSeqno: msgSeqno,
);
}

View File

@@ -130,7 +130,12 @@ class _WhisperDetailPageState
reverse: true,
itemCount: loadingState.response!.length,
padding: const EdgeInsets.only(bottom: 12),
physics: const AlwaysScrollableScrollPhysics(),
controller: _whisperDetailController.scrollController,
itemBuilder: (context, int index) {
if (index == loadingState.response!.length - 1) {
_whisperDetailController.onLoadMore();
}
final item = loadingState.response![index];
return ChatItem(
item: item,