mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-31 16:18:22 +08:00
fix: parse whisper data
mod: load more pm Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -372,8 +372,7 @@ class MemberHttp {
|
|||||||
queryParameters: params,
|
queryParameters: params,
|
||||||
options: Options(headers: {
|
options: Options(headers: {
|
||||||
HttpHeaders.userAgentHeader: Request.headerUa(type: 'pc'),
|
HttpHeaders.userAgentHeader: Request.headerUa(type: 'pc'),
|
||||||
HttpHeaders.refererHeader:
|
HttpHeaders.refererHeader: '${HttpString.spaceBaseUrl}/$mid',
|
||||||
'${HttpString.spaceBaseUrl}/$mid/search?keyword=$keyword',
|
|
||||||
'origin': HttpString.spaceBaseUrl,
|
'origin': HttpString.spaceBaseUrl,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -455,8 +455,11 @@ class MsgHttp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<LoadingState<SessionMsgDataModel>> sessionMsg(
|
static Future<LoadingState<SessionMsgDataModel>> sessionMsg({
|
||||||
{int? talkerId}) async {
|
int? talkerId,
|
||||||
|
beginSeqno,
|
||||||
|
endSeqno,
|
||||||
|
}) async {
|
||||||
Map params = await WbiSign.makSign({
|
Map params = await WbiSign.makSign({
|
||||||
'talker_id': talkerId,
|
'talker_id': talkerId,
|
||||||
'session_type': 1,
|
'session_type': 1,
|
||||||
@@ -464,6 +467,8 @@ class MsgHttp {
|
|||||||
'sender_device_id': 1,
|
'sender_device_id': 1,
|
||||||
'build': 0,
|
'build': 0,
|
||||||
'mobi_app': 'web',
|
'mobi_app': 'web',
|
||||||
|
if (beginSeqno != null) 'begin_seqno': beginSeqno,
|
||||||
|
if (endSeqno != null) 'end_seqno': endSeqno,
|
||||||
});
|
});
|
||||||
var res = await Request().get(Api.sessionMsg, queryParameters: params);
|
var res = await Request().get(Api.sessionMsg, queryParameters: params);
|
||||||
if (res.data['code'] == 0) {
|
if (res.data['code'] == 0) {
|
||||||
|
|||||||
@@ -170,8 +170,8 @@ class SessionMsgDataModel {
|
|||||||
|
|
||||||
List<MessageItem>? messages;
|
List<MessageItem>? messages;
|
||||||
int? hasMore;
|
int? hasMore;
|
||||||
int? minSeqno;
|
num? minSeqno;
|
||||||
int? maxSeqno;
|
num? maxSeqno;
|
||||||
List<dynamic>? eInfos;
|
List<dynamic>? eInfos;
|
||||||
|
|
||||||
SessionMsgDataModel.fromJson(Map<String, dynamic> json) {
|
SessionMsgDataModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'dart:convert';
|
|||||||
|
|
||||||
import 'package:PiliPlus/http/loading_state.dart';
|
import 'package:PiliPlus/http/loading_state.dart';
|
||||||
import 'package:PiliPlus/pages/common/common_list_controller.dart';
|
import 'package:PiliPlus/pages/common/common_list_controller.dart';
|
||||||
|
import 'package:PiliPlus/utils/extension.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -19,6 +20,8 @@ class WhisperDetailController
|
|||||||
late String face;
|
late String face;
|
||||||
String? mid;
|
String? mid;
|
||||||
|
|
||||||
|
int? msgSeqno;
|
||||||
|
|
||||||
//表情转换图片规则
|
//表情转换图片规则
|
||||||
List<dynamic>? eInfos;
|
List<dynamic>? eInfos;
|
||||||
|
|
||||||
@@ -38,7 +41,8 @@ class WhisperDetailController
|
|||||||
bool isRefresh, Success<SessionMsgDataModel> response) {
|
bool isRefresh, Success<SessionMsgDataModel> response) {
|
||||||
List<MessageItem>? messageList = response.response.messages;
|
List<MessageItem>? messageList = response.response.messages;
|
||||||
if (messageList?.isNotEmpty == true) {
|
if (messageList?.isNotEmpty == true) {
|
||||||
if (messageList!.length == 1 &&
|
msgSeqno = messageList!.last.msgSeqno;
|
||||||
|
if (messageList.length == 1 &&
|
||||||
messageList.last.msgType == 18 &&
|
messageList.last.msgType == 18 &&
|
||||||
messageList.last.msgSource == 18) {
|
messageList.last.msgSource == 18) {
|
||||||
// debugPrint(messageList.last);
|
// debugPrint(messageList.last);
|
||||||
@@ -103,7 +107,7 @@ class WhisperDetailController
|
|||||||
loadingState.refresh();
|
loadingState.refresh();
|
||||||
SmartDialog.showToast('撤回成功');
|
SmartDialog.showToast('撤回成功');
|
||||||
} else {
|
} else {
|
||||||
queryData();
|
onRefresh();
|
||||||
onClearText();
|
onClearText();
|
||||||
SmartDialog.showToast('发送成功');
|
SmartDialog.showToast('发送成功');
|
||||||
}
|
}
|
||||||
@@ -114,10 +118,24 @@ class WhisperDetailController
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
List<MessageItem>? getDataList(SessionMsgDataModel response) {
|
List<MessageItem>? getDataList(SessionMsgDataModel response) {
|
||||||
|
if (response.hasMore == 0) {
|
||||||
|
isEnd = true;
|
||||||
|
}
|
||||||
return response.messages;
|
return response.messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<void> onRefresh() {
|
||||||
|
msgSeqno = null;
|
||||||
|
scrollController.jumpToTop();
|
||||||
|
return super.onRefresh();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<LoadingState<SessionMsgDataModel>> customGetData() =>
|
Future<LoadingState<SessionMsgDataModel>> customGetData() =>
|
||||||
MsgHttp.sessionMsg(talkerId: talkerId);
|
MsgHttp.sessionMsg(
|
||||||
|
talkerId: talkerId,
|
||||||
|
beginSeqno: msgSeqno != null ? 0 : null,
|
||||||
|
endSeqno: msgSeqno,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,7 +130,12 @@ class _WhisperDetailPageState
|
|||||||
reverse: true,
|
reverse: true,
|
||||||
itemCount: loadingState.response!.length,
|
itemCount: loadingState.response!.length,
|
||||||
padding: const EdgeInsets.only(bottom: 12),
|
padding: const EdgeInsets.only(bottom: 12),
|
||||||
|
physics: const AlwaysScrollableScrollPhysics(),
|
||||||
|
controller: _whisperDetailController.scrollController,
|
||||||
itemBuilder: (context, int index) {
|
itemBuilder: (context, int index) {
|
||||||
|
if (index == loadingState.response!.length - 1) {
|
||||||
|
_whisperDetailController.onLoadMore();
|
||||||
|
}
|
||||||
final item = loadingState.response![index];
|
final item = loadingState.response![index];
|
||||||
return ChatItem(
|
return ChatItem(
|
||||||
item: item,
|
item: item,
|
||||||
|
|||||||
Reference in New Issue
Block a user