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