feat: 私信

This commit is contained in:
guozhigq
2024-06-15 16:03:45 +08:00
parent 21542b729d
commit e051e77856
7 changed files with 373 additions and 278 deletions

View File

@ -1,30 +1,39 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:hive/hive.dart';
import 'package:pilipala/http/msg.dart';
import 'package:pilipala/models/msg/session.dart';
import 'package:pilipala/pages/whisper/index.dart';
import '../../utils/feed_back.dart';
import '../../utils/storage.dart';
class WhisperDetailController extends GetxController {
late int talkerId;
int? talkerId;
late String name;
late String face;
late String mid;
late String heroTag;
RxList<MessageItem> messageList = <MessageItem>[].obs;
//表情转换图片规则
List<dynamic>? eInfos;
RxList<dynamic> eInfos = [].obs;
final TextEditingController replyContentController = TextEditingController();
Box userInfoCache = GStrorage.userInfo;
List emoteList = [];
@override
void onInit() {
super.onInit();
talkerId = int.parse(Get.parameters['talkerId']!);
if (Get.parameters.containsKey('talkerId')) {
talkerId = int.parse(Get.parameters['talkerId']!);
} else {
talkerId = int.parse(Get.parameters['mid']!);
}
name = Get.parameters['name']!;
face = Get.parameters['face']!;
mid = Get.parameters['mid']!;
heroTag = Get.parameters['heroTag']!;
}
Future querySessionMsg() async {
@ -34,7 +43,7 @@ class WhisperDetailController extends GetxController {
if (messageList.isNotEmpty) {
ackSessionMsg();
if (res['data'].eInfos != null) {
eInfos = res['data'].eInfos;
eInfos.value = res['data'].eInfos;
}
}
} else {
@ -73,7 +82,25 @@ class WhisperDetailController extends GetxController {
msgType: 1,
);
if (result['status']) {
SmartDialog.showToast('发送成功');
String content = jsonDecode(result['data']['msg_content'])['content'];
messageList.insert(
0,
MessageItem(
msgSeqno: result['data']['msg_key'],
senderUid: userInfo.mid,
receiverId: int.parse(mid),
content: {'content': content},
msgType: 1,
timestamp: DateTime.now().millisecondsSinceEpoch,
),
);
eInfos.addAll(emoteList);
replyContentController.clear();
try {
late final WhisperController whisperController =
Get.find<WhisperController>();
whisperController.refreshLastMsg(talkerId!, message);
} catch (_) {}
} else {
SmartDialog.showToast(result['msg']);
}