diff --git a/net/web/src/context/useUploadContext.hook.js b/net/web/src/context/useUploadContext.hook.js index cb012212..995189f5 100644 --- a/net/web/src/context/useUploadContext.hook.js +++ b/net/web/src/context/useUploadContext.hook.js @@ -57,59 +57,65 @@ export function useUploadContext() { } const actions = { - addTopic: (token, channelId, topicId, files, success, failure) => { - const controller = new AbortController(); - const entry = { - index: index.current, - url: `/content/channels/${channelId}/topics/${topicId}/assets?agent=${token}`, - files, - assets: [], - current: null, - error: false, - success, - failure, - cancel: controller, + addTopic: (token, channelId, topicId, files, success, failure, contact) => { + if (contact) { + const { server, token, cardId } = contact; + + let host = ""; + if (server) { + host = `https://${server}` + } + const controller = new AbortController(); + const entry = { + index: index.current, + url: `${host}/content/channels/${channelId}/topics/${topicId}/assets?contact=${token}`, + files, + assets: [], + current: null, + error: false, + success, + failure, + cancel: controller, + } + index.current += 1; + const key = `${cardId}:${channelId}`; + if (!channels.current.has(key)) { + channels.current.set(key, new Map()); + } + const topics = channels.current.get(key); + topics.set(topicId, entry); + upload(entry, updateProgress, () => { updateComplete(key, topicId) }); } - index.current += 1; - const key = `:${channelId}`; - if (!channels.current.has(key)) { - channels.current.set(key, new Map()); + else { + const controller = new AbortController(); + const entry = { + index: index.current, + url: `/content/channels/${channelId}/topics/${topicId}/assets?agent=${token}`, + files, + assets: [], + current: null, + error: false, + success, + failure, + cancel: controller, + } + index.current += 1; + const key = `:${channelId}`; + if (!channels.current.has(key)) { + channels.current.set(key, new Map()); + } + const topics = channels.current.get(key); + topics.set(topicId, entry); + upload(entry, updateProgress, () => { updateComplete(key, topicId) } ); } - const topics = channels.current.get(key); - topics.set(topicId, entry); - upload(entry, updateProgress, () => { updateComplete(key, topicId) } ); }, - cancelTopic: (channelId, topicId) => { - abort(`:${channelId}`, topicId); - }, - addContactTopic: (server, token, cardId, channelId, topicId, files, success, failure) => { - let host = ""; - if (server) { - host = `https://${server}` + cancelTopic: (channelId, topicId, cardId) => { + if (cardId) { + abort(`${cardId}:${channelId}`, topicId); } - const controller = new AbortController(); - const entry = { - index: index.current, - url: `${host}/content/channels/${channelId}/topics/${topicId}/assets?contact=${token}`, - files, - assets: [], - current: null, - error: false, - success, - failure, - cancel: controller, + else { + abort(`:${channelId}`, topicId); } - index.current += 1; - const key = `${cardId}:${channelId}`; - if (!channels.current.has(key)) { - channels.current.set(key, new Map()); - } - const topics = channels.current.get(key); - topics.set(topicId, entry); - upload(entry, updateProgress, () => { updateComplete(key, topicId) }); - }, - cancelContactTopic: (cardId, channelId, topicId) => { - abort(`${cardId}:${channelId}`, topicId); }, clearErrors: (cardId, channelId) => { const key = cardId ? `${cardId}:${channelId}` : `:${channelId}`; diff --git a/net/web/test/Upload.test.js b/net/web/test/Upload.test.js new file mode 100644 index 00000000..dd7c9b73 --- /dev/null +++ b/net/web/test/Upload.test.js @@ -0,0 +1,100 @@ +import React, { useState, useEffect, useContext } from 'react'; +import {render, act, screen, waitFor, fireEvent} from '@testing-library/react' +import { UploadContextProvider, UploadContext } from 'context/UploadContext'; +import axios from 'axios'; + +let uploadContext = null; +function UploadView() { + const [renderCount, setRenderCount] = useState(0); + const [total, setTotal] = useState(0); + const [channel, setChannel] = useState(); + const upload = useContext(UploadContext); + uploadContext = upload; + + useEffect(() => { + setRenderCount(renderCount + 1); + + upload.state.progress.forEach((value, key) => { + value.forEach(topic => { + if (topic.active?.total > total) { + setTotal(topic.active?.total); + }; + }); + setChannel(key); + }); + + }, [upload.state]); + + return ( +