getImageOverlay function

Widget getImageOverlay(
  1. BuildContext context,
  2. ChatMessageModel chatMessage, {
  3. dynamic onAudio()?,
  4. dynamic onVideo()?,
})

Implementation

Widget getImageOverlay(BuildContext context, ChatMessageModel chatMessage,
    {Function()? onAudio, Function()? onVideo}) {
  // debugPrint(
  //     "getImageOverlay checkFile ${checkFile(chatMessage.mediaChatMessage!.mediaLocalStoragePath)}");
  // debugPrint("getImageOverlay messageStatus ${chatMessage.messageStatus}");
  // debugPrint(
  //     "getImageOverlay ${(checkFile(chatMessage.mediaChatMessage!.mediaLocalStoragePath) && chatMessage.messageStatus != 'N')}");
  if (AppUtils.isMediaExists(
          chatMessage.mediaChatMessage!.mediaLocalStoragePath.value) &&
      (!chatMessage.isMediaDownloading() &&
          !chatMessage.isMediaUploading() &&
          !chatMessage.isUploadFailed())) {
    if (chatMessage.messageType.toUpperCase() == Constants.mVideo) {
      return FloatingActionButton.small(
        onPressed: onVideo,
        backgroundColor: MirrorflyUikit.getTheme?.primaryColor,
        child: Icon(
          Icons.play_arrow_rounded,
          color: MirrorflyUikit.getTheme?.colorOnPrimary,
        ),
      );
    } else if (chatMessage.messageType.toUpperCase() == Constants.mAudio) {
      return InkWell(
        onTap: onAudio,
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: chatMessage.mediaChatMessage!.isPlaying
              ? SvgPicture.asset(
                  package: package,
                  pauseIcon,
                  colorFilter: ColorFilter.mode(
                      chatMessage.isMessageSentByMe
                          ? MirrorflyUikit.getTheme!.chatBubblePrimaryColor
                              .textSecondaryColor
                          : MirrorflyUikit.getTheme!.chatBubbleSecondaryColor
                              .textSecondaryColor,
                      BlendMode.srcIn),
                  height: 17,
                ) //const Icon(Icons.pause)
              : SvgPicture.asset(
                  package: package,
                  playIcon,
                  colorFilter: ColorFilter.mode(
                      chatMessage.isMessageSentByMe
                          ? MirrorflyUikit.getTheme!.chatBubblePrimaryColor
                              .textSecondaryColor
                          : MirrorflyUikit.getTheme!.chatBubbleSecondaryColor
                              .textSecondaryColor,
                      BlendMode.srcIn),
                  height: 17,
                ),
        ),
      ); //const Icon(Icons.play_arrow_sharp);
    } else {
      return const SizedBox.shrink();
    }
  } else {
    var status = 0;
    if (chatMessage.isMessageSentByMe) {
      if (chatMessage.mediaChatMessage!.mediaUploadStatus.value ==
              Constants.mediaUploading ||
          chatMessage.mediaChatMessage!.mediaDownloadStatus.value ==
              Constants.mediaDownloading) {
        status = (chatMessage.mediaChatMessage!.mediaUploadStatus.value ==
                Constants.mediaUploading)
            ? Constants.mediaUploading
            : Constants.mediaDownloading;
      } else {
        if (chatMessage.mediaChatMessage!.mediaLocalStoragePath.value
            .checkNull()
            .isNotEmpty) {
          if (!AppUtils.isMediaExists(chatMessage
              .mediaChatMessage!.mediaLocalStoragePath.value
              .checkNull())) {
            if (chatMessage.mediaChatMessage!.mediaUploadStatus.value ==
                Constants.mediaUploaded) {
              status = Constants
                  .mediaNotDownloaded; // for uploaded and deleted in local
            } else {
              status = -1;
              //status = Constants.mediaNotDownloaded;
            }
          } else {
            status = chatMessage.mediaChatMessage!.mediaUploadStatus.value;
          }
        } else {
          status = chatMessage.mediaChatMessage!.mediaUploadStatus.value;
        }
      }
    } else {
      status = chatMessage.mediaChatMessage!.mediaDownloadStatus.value;
    }
    debugPrint("mediaStatus : $status  messageId ${chatMessage.messageId}");
    // debugPrint(
    //     "overlay status-->${chatMessage.isMessageSentByMe ? chatMessage.mediaChatMessage!.mediaUploadStatus : chatMessage.mediaChatMessage!.mediaDownloadStatus}");
    switch (status) {
      case Constants.mediaDownloaded:
      case Constants.mediaUploaded:
      case Constants.storageNotEnough:
        if (!AppUtils.isMediaExists(chatMessage
            .mediaChatMessage!.mediaLocalStoragePath.value
            .checkNull())) {
          return InkWell(
            child: downloadView(
                chatMessage.mediaChatMessage!.mediaFileSize,
                chatMessage.messageType.toUpperCase(),
                chatMessage.isMessageSentByMe),
            onTap: () {
              downloadMedia(context, chatMessage.messageId);
            },
          );
        } else {
          return const Offstage();
        }
      case Constants.mediaDownloadedNotAvailable:
      case Constants.mediaUploadedNotAvailable:
        return InkWell(
          child: downloadView(
              chatMessage.mediaChatMessage!.mediaFileSize,
              chatMessage.messageType.toUpperCase(),
              chatMessage.isMessageSentByMe),
          onTap: () {
            downloadMedia(context, chatMessage.messageId);
          },
        );
      case Constants.mediaNotDownloaded:
        return InkWell(
          child: downloadView(
              chatMessage.mediaChatMessage!.mediaFileSize,
              chatMessage.messageType.toUpperCase(),
              chatMessage.isMessageSentByMe),
          onTap: () {
            downloadMedia(context, chatMessage.messageId);
          },
        );
      case Constants.mediaNotUploaded:
        return InkWell(
            onTap: () {
              debugPrint("upload Media ==> ${chatMessage.messageId}");
              uploadMedia(chatMessage.messageId);
            },
            child: uploadView(chatMessage.messageType.toUpperCase(),
                chatMessage.isMessageSentByMe));
      case Constants.mediaDownloading:
      case Constants.mediaUploading:
        return Obx(() {
          return InkWell(
              onTap: () {
                cancelMediaUploadOrDownload(chatMessage.messageId);
              },
              child: downloadingOrUploadingView(
                  chatMessage.messageType,
                  chatMessage.mediaChatMessage!.mediaProgressStatus.value,
                  chatMessage.isMessageSentByMe));
        });
      default:
        return InkWell(
            onTap: () {
              toToast(Constants.mediaDoesNotExist);
            },
            child: uploadView(chatMessage.messageType.toUpperCase(),
                chatMessage.isMessageSentByMe));
    }
  }
}