deleteMessages method

void deleteMessages(
  1. BuildContext context
)

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);
}