mod: 系统消息

This commit is contained in:
guozhigq
2024-09-28 23:16:00 +08:00
parent 7d5ce08bfc
commit 005c518b82
5 changed files with 78 additions and 14 deletions

View File

@ -1,3 +1,4 @@
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:pilipala/http/msg.dart';
import 'package:pilipala/models/msg/system.dart';
@ -5,18 +6,44 @@ import 'package:pilipala/models/msg/system.dart';
class MessageSystemController extends GetxController {
RxList<MessageSystemModel> systemItems = <MessageSystemModel>[].obs;
Future queryMessageSystem({String type = 'init'}) async {
var res = await MsgHttp.messageSystem();
if (res['status']) {
if (type == 'init') {
systemItems.value = res['data'];
} else {
systemItems.addAll(res['data']);
}
Future<void> queryAndProcessMessages({String type = 'init'}) async {
// 并行调用两个接口
var results = await Future.wait([
queryMessageSystem(type: type),
queryMessageSystemAccount(type: type),
]);
// 对返回的数据进行处理
var systemRes = results[0];
var accountRes = results[1];
if (systemRes['status'] || accountRes['status']) {
// 处理返回的数据
List<MessageSystemModel> combinedData = [
...systemRes['data'],
...accountRes['data']
];
combinedData.sort((a, b) => b.cursor!.compareTo(a.cursor!));
systemItems.addAll(combinedData);
systemItems.refresh();
if (systemItems.isNotEmpty) {
systemMarkRead(systemItems.first.cursor!);
}
} else {
SmartDialog.showToast(systemRes['msg'] ?? accountRes['msg']);
}
return systemRes;
}
// 获取系统消息
Future queryMessageSystem({String type = 'init'}) async {
var res = await MsgHttp.messageSystem();
return res;
}
// 获取系统消息 个人
Future queryMessageSystemAccount({String type = 'init'}) async {
var res = await MsgHttp.messageSystemAccount();
return res;
}

View File

@ -20,7 +20,7 @@ class _MessageSystemPageState extends State<MessageSystemPage> {
@override
void initState() {
super.initState();
_futureBuilderFuture = _messageSystemCtr.queryMessageSystem();
_futureBuilderFuture = _messageSystemCtr.queryAndProcessMessages();
}
@override
@ -31,7 +31,7 @@ class _MessageSystemPageState extends State<MessageSystemPage> {
),
body: RefreshIndicator(
onRefresh: () async {
await _messageSystemCtr.queryMessageSystem();
await _messageSystemCtr.queryAndProcessMessages();
},
child: FutureBuilder(
future: _futureBuilderFuture,
@ -42,7 +42,6 @@ class _MessageSystemPageState extends State<MessageSystemPage> {
}
if (snapshot.data['status']) {
final systemItems = _messageSystemCtr.systemItems;
print(systemItems.length);
return Obx(
() => ListView.separated(
controller: scrollController,
@ -115,7 +114,7 @@ class SystemItem extends StatelessWidget {
style: TextStyle(color: Theme.of(context).colorScheme.outline),
),
const SizedBox(height: 6),
Text(item.content!['web']),
Text(item.content is String ? item.content : item.content!['web']),
],
),
);