From ad779619f4420496239b9c8e054cc8a83c6ae532 Mon Sep 17 00:00:00 2001 From: LoneWeeb <73281112+Tharki-God@users.noreply.github.com> Date: Sat, 20 Jan 2024 01:02:42 +0530 Subject: [PATCH] progresssssssss uwu (#4) * progresssssssss uwu * fix: remove ts-expect-error --------- Co-authored-by: Federico <38290480+FedeIlLeone@users.noreply.github.com> --- src/index.tsx | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/src/index.tsx b/src/index.tsx index 1d82052..fe083f2 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -16,7 +16,7 @@ import UploaderUtils from "@utils/UploaderUtils"; import type React from "react"; import { Injector, Logger, common, i18n, webpack } from "replugged"; -const { constants, messages } = common; +const { constants, fluxDispatcher: Dispatcher, messages } = common; let stopped = false; @@ -26,7 +26,6 @@ export const inject = new Injector(); export function _renderEditComposerAttachments(props: MessageEditorProps): React.ReactNode { const { channel, message } = props; - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!channel || !message) return null; return stopped ? null : ; @@ -86,9 +85,42 @@ export async function _patchEditMessageAction( if (originalFunction) originalFunction(patchedResponse); } - // TODO: CloudUploader has a "progress" event; maybe can add a progress bar or a spinner? - cloudUploader.on("error", (_, __, response) => runOriginalFunction(response)); - cloudUploader.on("complete", (_, response) => runOriginalFunction(response)); + cloudUploader.on("start", (file) => { + Dispatcher.dispatch({ + type: "UPLOAD_START", + channelId, + file, + message, + uploader: cloudUploader, + }); + }); + cloudUploader.on("progress", (file) => { + Dispatcher.dispatch({ + type: "UPLOAD_PROGRESS", + channelId, + file, + }); + }); + cloudUploader.on("error", (file, __, response) => { + Dispatcher.dispatch({ + type: "UPLOAD_FAIL", + channelId, + file, + messageRecord: message, + }); + + runOriginalFunction(response); + }); + cloudUploader.on("complete", (file, response) => { + Dispatcher.dispatch({ + type: "UPLOAD_COMPLETE", + channelId, + file, + aborted: cloudUploader._aborted, + }); + + runOriginalFunction(response); + }); void cloudUploader.uploadFiles( files,