import 'package:get/get.dart'; import 'package:loopin/IM/im_message.dart'; import 'package:loopin/IM/im_service.dart'; import 'package:loopin/utils/index.dart'; import 'package:tencent_cloud_chat_sdk/models/v2_tim_message.dart'; class ChatDetailController extends GetxController { final String userID; ChatDetailController({required this.userID}); final RxList chatList = [].obs; void updateChatListWithTimeLabels(List originMessages) async { final idRes = await ImService.instance.selfUserId(); if (idRes.success) { final selfUserId = idRes.data; List displayMessages = []; for (int i = 0; i < originMessages.length; i++) { final current = originMessages[i]; final currentTimestamp = current.timestamp ?? 0; // 判断是否需要给当前这条消息加时间标签 bool needInsertLabel = false; if (i == originMessages.length - 1) { // 最后一条消息,加时间标签 needInsertLabel = true; } else { final next = originMessages[i + 1]; final nextTimestamp = next.timestamp ?? 0; final diff = currentTimestamp - nextTimestamp; if (diff > 180) { needInsertLabel = true; } } // 把当前消息先插入后插入标签 displayMessages.add(current); if (needInsertLabel) { final labelTime = Utils().formatChatTime(currentTimestamp); final timeLabel = await IMMessage().insertTimeLabel(labelTime, selfUserId); displayMessages.add(timeLabel.data); } } chatList.addAll(displayMessages); } } }