From e5ae6e4a3217bc0dbfcd9a1c20bf1371132f9953 Mon Sep 17 00:00:00 2001 From: balzack Date: Tue, 31 Dec 2024 09:28:24 -0800 Subject: [PATCH] abort transfer on close --- app/client/mobile/src/MediaFiles.ts | 2 +- app/client/mobile/src/message/Message.tsx | 4 ++-- .../mobile/src/message/imageAsset/ImageAsset.tsx | 2 +- .../src/message/imageAsset/useImageAsset.hook.ts | 12 +++++++----- app/sdk/src/focus.ts | 2 -- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/client/mobile/src/MediaFiles.ts b/app/client/mobile/src/MediaFiles.ts index 0fc7a6f1..8e820125 100644 --- a/app/client/mobile/src/MediaFiles.ts +++ b/app/client/mobile/src/MediaFiles.ts @@ -25,7 +25,7 @@ export class MediaFiles implements Media { const close = async () => { await RNFS.unlink(path); } - return { setData, getUrl }; + return { setData, getUrl, close }; } } diff --git a/app/client/mobile/src/message/Message.tsx b/app/client/mobile/src/message/Message.tsx index de889227..c4aa893c 100644 --- a/app/client/mobile/src/message/Message.tsx +++ b/app/client/mobile/src/message/Message.tsx @@ -59,7 +59,7 @@ export function Message({ topic, card, profile, host, select, selected }: { topi - {! locked && status === 'confirmed' && editing && ( + { !locked && status === 'confirmed' && editing && ( )} @@ -77,7 +77,7 @@ export function Message({ topic, card, profile, host, select, selected }: { topi - { assets?.length > 0 && ( + { !locked && assets?.length > 0 && ( { media } diff --git a/app/client/mobile/src/message/imageAsset/ImageAsset.tsx b/app/client/mobile/src/message/imageAsset/ImageAsset.tsx index bd6641d7..ce18daf9 100644 --- a/app/client/mobile/src/message/imageAsset/ImageAsset.tsx +++ b/app/client/mobile/src/message/imageAsset/ImageAsset.tsx @@ -28,7 +28,7 @@ export function ImageAsset({ topicId, asset }: { topicId: string, asset: MediaAs const hideImage = () => { setModal(false); - actions.unloadImage(); + actions.cancelLoad(); } return ( diff --git a/app/client/mobile/src/message/imageAsset/useImageAsset.hook.ts b/app/client/mobile/src/message/imageAsset/useImageAsset.hook.ts index 99ddd990..1830e9c5 100644 --- a/app/client/mobile/src/message/imageAsset/useImageAsset.hook.ts +++ b/app/client/mobile/src/message/imageAsset/useImageAsset.hook.ts @@ -1,4 +1,4 @@ -import { useState, useContext, useEffect } from 'react' +import { useState, useContext, useEffect, useRef } from 'react' import { AppContext } from '../../context/AppContext' import { Focus } from 'databag-client-sdk' import { ContextType } from '../../context/ContextType' @@ -14,6 +14,7 @@ export function useImageAsset(topicId: string, asset: MediaAsset) { loaded: false, loadPercent: 0, }) + const cancelled = useRef(false); // eslint-disable-next-line @typescript-eslint/no-explicit-any const updateState = (value: any) => { @@ -42,16 +43,17 @@ export function useImageAsset(topicId: string, asset: MediaAsset) { const { width, height } = e.nativeEvent.source; updateState({ loaded: true, ratio: width / height }); }, - unloadImage: () => { - updateState({ dataUrl: null }); + cancelLoad: () => { + cancelled.current = true; }, loadImage: async () => { const { focus } = app.state; const assetId = asset.image ? asset.image.full : asset.encrypted ? asset.encrypted.parts : null; - if (focus && assetId != null && !state.loading) { + if (focus && assetId != null && !state.loading && !state.dataUrl) { + cancelled.current = false; updateState({ loading: true, loadPercent: 0 }); try { - const dataUrl = await focus.getTopicAssetUrl(topicId, assetId, (loadPercent: number)=>{ updateState({ loadPercent }) }); + const dataUrl = await focus.getTopicAssetUrl(topicId, assetId, (loadPercent: number)=>{ updateState({ loadPercent }); return !cancelled.current }); updateState({ dataUrl }); } catch (err) { console.log(err); diff --git a/app/sdk/src/focus.ts b/app/sdk/src/focus.ts index 737abafd..340e4acd 100644 --- a/app/sdk/src/focus.ts +++ b/app/sdk/src/focus.ts @@ -941,8 +941,6 @@ export class FocusModule implements Focus { } public async setChannelKey(cardId: string | null, channelId: string, channelKey: string | null) { -console.log("!!!! SET CHANNEL KEY", cardId, channelId, channelKey); - if (cardId === this.cardId && channelId === this.channelId) { this.channelKey = channelKey; this.unsealAll = true;