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);
//Helper.showLoading(message: 'Deleting Message');
Mirrorfly.deleteMessagesForMe(profile.jid!, chatType,
deleteChatListID, isMediaDelete.value)
.then((value) {
debugPrint(value.toString());
//Helper.hideLoading();
/*if (value!=null && value) {
removeChatList(selectedChatList);
}
isSelected(false);
selectedChatList.clear();*/
});
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);
//Helper.showLoading(message: 'Deleting Message for Everyone');
Mirrorfly.deleteMessagesForEveryone(profile.jid!, chatType,
deleteChatListID, isMediaDelete.value)
.then((value) {
debugPrint("delete for everyone ==>${value.toString()}");
//Helper.hideLoading();
if (value != null && value) {
// removeChatList(selectedChatList);//
for (var chatList in selectedChatList) {
chatList.isMessageRecalled(true);
chatList.isSelected(false);
// this.chatList.refresh();
}
}
if (!value) {
toToast(AppConstants.unableToDelete);
for (var chatList in selectedChatList) {
chatList.isSelected(false);
// this.chatList.refresh();
}
}
isSelected(false);
selectedChatList.clear();
});
},
child: Text(
AppConstants.deleteForEveryone,
style:
TextStyle(color: MirrorflyUikit.getTheme?.primaryColor),
))
: const SizedBox.shrink(),
],
context: context);
}