deleteMessages method
void
deleteMessages()
Implementation
void deleteMessages() {
var isRecallAvailable = isMessageCanbeRecalled().keys.first;
var isCheckBoxShown = isMessageCanbeRecalled().values.first;
var deleteChatListID = List<String>.empty(growable: true);
for (var element in selectedChatList) {
deleteChatListID.add(element.messageId);
}
/*for (var chatList in selectedChatList) {
deleteChatListID.add(chatList.messageId);
if ((chatList.messageSentTime > (DateTime.now().millisecondsSinceEpoch - 30000) * 1000) && chatList.isMessageSentByMe) {
isRecallAvailable = true;
} else {
isRecallAvailable = false;
break;
}
}*/
if (deleteChatListID.isEmpty) {
return;
}
var isMediaDelete = false.obs;
var chatType = profile.isGroupProfile ?? false ? "groupchat" : "chat";
DialogUtils.showAlert(
dialogStyle: AppStyleConfig.dialogStyle,
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
selectedChatList.length > 1
? getTranslated("deleteSelectedMessages")
: getTranslated("deleteSelectedMessage"),
style: const TextStyle(fontSize: 18, color: textColor),
),
isCheckBoxShown
? Column(
mainAxisSize: MainAxisSize.min,
children: [
InkWell(
onTap: () {
isMediaDelete(!isMediaDelete.value);
LogMessage.d(
"isMediaDelete", isMediaDelete.value.toString());
},
child: Row(
children: [
Obx(() {
return Checkbox(
value: isMediaDelete.value,
onChanged: (value) {
isMediaDelete(!isMediaDelete.value);
LogMessage.d(
"isMediaDelete", value.toString());
});
}),
Expanded(
child:
Text(getTranslated("deleteMediaFromPhone")),
),
],
),
)
],
)
: const SizedBox(),
],
),
message: "",
actions: [
TextButton(
style: AppStyleConfig.dialogStyle.buttonStyle,
onPressed: () {
NavUtils.back();
},
child: Text(
getTranslated("cancel").toUpperCase(),
)),
TextButton(
style: AppStyleConfig.dialogStyle.buttonStyle,
onPressed: () {
NavUtils.back();
if (!availableFeatures.value.isDeleteMessageAvailable
.checkNull()) {
DialogUtils.showFeatureUnavailable();
return;
}
//DialogUtils.showLoading(message: 'Deleting Message');
var chatJid = selectedChatList.last.chatUserJid;
Mirrorfly.deleteMessagesForMe(
jid: profile.jid!,
chatType: chatType,
messageIds: deleteChatListID,
isMediaDelete: isMediaDelete.value,
flyCallBack: (FlyResponse response) {
debugPrint(response.toString());
onMessageDeleteNotifyUI(chatJid: chatJid);
});
removeChatList(selectedChatList);
isSelected(false);
selectedChatList.clear();
},
child: Text(
getTranslated("deleteForMe").toUpperCase(),
)),
isRecallAvailable
? TextButton(
style: AppStyleConfig.dialogStyle.buttonStyle,
onPressed: () {
NavUtils.back();
if (!availableFeatures.value.isDeleteMessageAvailable
.checkNull()) {
DialogUtils.showFeatureUnavailable();
return;
}
//DialogUtils.showLoading(message: 'Deleting Message for Everyone');
Mirrorfly.deleteMessagesForEveryone(
jid: profile.jid!,
chatType: chatType,
messageIds: deleteChatListID,
isMediaDelete: isMediaDelete.value,
flyCallBack: (FlyResponse response) {
debugPrint(response.toString());
if (response.isSuccess) {
for (var chatList in selectedChatList) {
chatList.isMessageRecalled(true);
chatList.isSelected(false);
// this.chatList.refresh();
if (selectedChatList.last.messageId ==
chatList.messageId) {
onMessageDeleteNotifyUI(
chatJid: chatList.chatUserJid);
}
}
} else {
toToast(getTranslated("unableToDeleteMessages"));
}
isSelected(false);
selectedChatList.clear();
});
},
child: Text(
getTranslated("deleteForEveryone").toUpperCase(),
))
: const SizedBox.shrink(),
]);
}