deleteMessages method
Implementation
void deleteMessages(BuildContext context) {
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";
Helper.showAlert(
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
selectedChatList.length > 1
? AppConstants.deleteSelectedMessages
: AppConstants.deleteSelectedMessage,
// "Are you sure you want to delete selected Message${selectedChatList.length > 1 ? "s" : Constants.emptyString}?",
style:
TextStyle(color: MirrorflyUikit.getTheme?.textSecondaryColor),
),
isCheckBoxShown
? Column(
mainAxisSize: MainAxisSize.min,
children: [
InkWell(
onTap: () {
isMediaDelete(!isMediaDelete.value);
mirrorFlyLog(
"isMediaDelete", isMediaDelete.value.toString());
},
child: Row(
children: [
Obx(() {
return Theme(
data: ThemeData(
unselectedWidgetColor: Colors.grey,
),
child: Checkbox(
value: isMediaDelete.value,
activeColor: MirrorflyUikit
.getTheme!.primaryColor, //Colors.white,
checkColor:
MirrorflyUikit.getTheme?.colorOnPrimary,
onChanged: (value) {
isMediaDelete(!isMediaDelete.value);
mirrorFlyLog(
"isMediaDelete", value.toString());
}),
);
}),
Expanded(
child: Text(
AppConstants.deleteMediaFromPhone,
style: TextStyle(
color: MirrorflyUikit
.getTheme?.textSecondaryColor),
),
),
],
),
)
],
)
: const SizedBox(),
],
),
message: Constants.emptyString,
actions: [
TextButton(
onPressed: () {
// Get.back();
Navigator.pop(context);
},
child: Text(
AppConstants.cancel.toUpperCase(),
style: TextStyle(color: MirrorflyUikit.getTheme?.primaryColor),
)),
TextButton(
onPressed: () {
// Get.back();
Navigator.pop(context);
if (!availableFeatures.value.isDeleteMessageAvailable
.checkNull()) {
Helper.showFeatureUnavailable(context);
return;
}
//Helper.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());
//Helper.hideLoading();
/*if (value!=null && value) {
removeChatList(selectedChatList);
}
isSelected(false);
selectedChatList.clear();*/
onMessageDeleteNotifyUI(chatJid: chatJid);
});
removeChatList(selectedChatList);
isSelected(false);
selectedChatList.clear();
},
child: Text(
AppConstants.deleteForMe.toUpperCase(),
style: TextStyle(color: MirrorflyUikit.getTheme?.primaryColor),
)),
isRecallAvailable
? TextButton(
onPressed: () {
// Get.back();
Navigator.pop(context);
if (!availableFeatures.value.isDeleteMessageAvailable
.checkNull()) {
Helper.showFeatureUnavailable(context);
return;
}
//Helper.showLoading(message: 'Deleting Message for Everyone');
Mirrorfly.deleteMessagesForEveryone(
jid: profile.jid!,
chatType: chatType,
messageIds: deleteChatListID,
isMediaDelete: isMediaDelete.value,
flyCallBack: (FlyResponse response) {
debugPrint(response.toString());
//Helper.hideLoading();
if (response.isSuccess) {
// removeChatList(selectedChatList);//
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("Unable to delete the selected Messages");
}
isSelected(false);
selectedChatList.clear();
});
},
child: Text(
AppConstants.deleteForEveryone,
style:
TextStyle(color: MirrorflyUikit.getTheme?.primaryColor),
))
: const Offstage(),
],
context: context);
}