mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-31 16:18:22 +08:00
refa: whisper detail page
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/pages/common/common_list_controller.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -8,12 +10,15 @@ import 'package:PiliPlus/models/msg/session.dart';
|
||||
import '../../utils/feed_back.dart';
|
||||
import '../../utils/storage.dart';
|
||||
|
||||
class WhisperDetailController extends GetxController {
|
||||
class WhisperDetailController
|
||||
extends CommonListController<SessionMsgDataModel, MessageItem> {
|
||||
late final ownerMid = Accounts.main.mid;
|
||||
|
||||
late int talkerId;
|
||||
late String name;
|
||||
late String face;
|
||||
String? mid;
|
||||
RxList<MessageItem> messageList = <MessageItem>[].obs;
|
||||
|
||||
//表情转换图片规则
|
||||
List<dynamic>? eInfos;
|
||||
|
||||
@@ -25,48 +30,41 @@ class WhisperDetailController extends GetxController {
|
||||
face = Get.parameters['face']!;
|
||||
mid = Get.parameters['mid'];
|
||||
|
||||
querySessionMsg();
|
||||
queryData();
|
||||
}
|
||||
|
||||
Future querySessionMsg() async {
|
||||
var res = await MsgHttp.sessionMsg(talkerId: talkerId);
|
||||
if (res['status']) {
|
||||
messageList.value = res['data'].messages;
|
||||
if (messageList.isNotEmpty) {
|
||||
if (messageList.length == 1 &&
|
||||
messageList.last.msgType == 18 &&
|
||||
messageList.last.msgSource == 18) {
|
||||
// debugPrint(messageList.last);
|
||||
// debugPrint(messageList.last.content);
|
||||
//{content: [{"text":"对方主动回复或关注你前,最多发送1条消息","color_day":"#9499A0","color_nig":"#9499A0"}]}
|
||||
} else {
|
||||
ackSessionMsg();
|
||||
}
|
||||
if (res['data'].eInfos != null) {
|
||||
eInfos = res['data'].eInfos;
|
||||
}
|
||||
@override
|
||||
bool customHandleResponse(
|
||||
bool isRefresh, Success<SessionMsgDataModel> response) {
|
||||
List<MessageItem>? messageList = response.response.messages;
|
||||
if (messageList?.isNotEmpty == true) {
|
||||
if (messageList!.length == 1 &&
|
||||
messageList.last.msgType == 18 &&
|
||||
messageList.last.msgSource == 18) {
|
||||
// debugPrint(messageList.last);
|
||||
// debugPrint(messageList.last.content);
|
||||
//{content: [{"text":"对方主动回复或关注你前,最多发送1条消息","color_day":"#9499A0","color_nig":"#9499A0"}]}
|
||||
} else {
|
||||
ackSessionMsg(messageList.last.msgSeqno);
|
||||
}
|
||||
if (response.response.eInfos != null) {
|
||||
eInfos = response.response.eInfos;
|
||||
}
|
||||
} else {
|
||||
SmartDialog.showToast(res['msg']);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 消息标记已读
|
||||
Future ackSessionMsg() async {
|
||||
if (messageList.isEmpty) {
|
||||
return;
|
||||
}
|
||||
Future ackSessionMsg(int? msgSeqno) async {
|
||||
var res = await MsgHttp.ackSessionMsg(
|
||||
talkerId: talkerId,
|
||||
ackSeqno: messageList.last.msgSeqno,
|
||||
ackSeqno: msgSeqno,
|
||||
);
|
||||
if (!res['status']) {
|
||||
SmartDialog.showToast(res['msg']);
|
||||
}
|
||||
}
|
||||
|
||||
late final ownerMid = Accounts.main.mid;
|
||||
|
||||
Future sendMsg({
|
||||
required String message,
|
||||
dynamic picMsg,
|
||||
@@ -80,16 +78,16 @@ class WhisperDetailController extends GetxController {
|
||||
SmartDialog.showToast('请先登录');
|
||||
return;
|
||||
}
|
||||
if (picMsg == null && message == '') {
|
||||
SmartDialog.dismiss();
|
||||
SmartDialog.showToast('请输入内容');
|
||||
return;
|
||||
}
|
||||
if (mid == null) {
|
||||
SmartDialog.dismiss();
|
||||
SmartDialog.showToast('这里不能发');
|
||||
return;
|
||||
}
|
||||
if (picMsg == null && message == '') {
|
||||
SmartDialog.dismiss();
|
||||
SmartDialog.showToast('请输入内容');
|
||||
return;
|
||||
}
|
||||
var result = await MsgHttp.sendMsg(
|
||||
senderUid: ownerMid,
|
||||
receiverId: int.parse(mid!),
|
||||
@@ -99,13 +97,13 @@ class WhisperDetailController extends GetxController {
|
||||
);
|
||||
SmartDialog.dismiss();
|
||||
if (result['status']) {
|
||||
// debugPrint(result['data']);
|
||||
if (msgType == 5) {
|
||||
messageList[index!].msgStatus = 1;
|
||||
messageList.refresh();
|
||||
List<MessageItem> list = (loadingState.value as Success).response;
|
||||
list[index!].msgStatus = 1;
|
||||
loadingState.refresh();
|
||||
SmartDialog.showToast('撤回成功');
|
||||
} else {
|
||||
querySessionMsg();
|
||||
queryData();
|
||||
onClearText();
|
||||
SmartDialog.showToast('发送成功');
|
||||
}
|
||||
@@ -113,4 +111,13 @@ class WhisperDetailController extends GetxController {
|
||||
SmartDialog.showToast(result['msg']);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
List<MessageItem>? getDataList(SessionMsgDataModel response) {
|
||||
return response.messages;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<LoadingState<SessionMsgDataModel>> customGetData() =>
|
||||
MsgHttp.sessionMsg(talkerId: talkerId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user