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(),
      ]);
}