From 1b1f3441dd55c9876792e336b4528fc94ad2e6bb Mon Sep 17 00:00:00 2001 From: Untone Date: Mon, 6 May 2024 13:33:57 +0300 Subject: [PATCH] shuffle-tolerate --- src/components/_shared/DropArea/DropArea.tsx | 4 +++- src/utils/getRandomTopicsFromArray.ts | 2 +- src/utils/handleFileUpload.ts | 5 ++++- src/utils/handleImageUpload.ts | 3 ++- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/components/_shared/DropArea/DropArea.tsx b/src/components/_shared/DropArea/DropArea.tsx index 6e4db3d2..0ed46617 100644 --- a/src/components/_shared/DropArea/DropArea.tsx +++ b/src/components/_shared/DropArea/DropArea.tsx @@ -5,6 +5,7 @@ import { clsx } from 'clsx' import { JSX, Show, createSignal } from 'solid-js' import { useLocalize } from '../../../context/localize' +import { useSession } from '../../../context/session' import { UploadedFile } from '../../../pages/types' import { handleFileUpload } from '../../../utils/handleFileUpload' import { handleImageUpload } from '../../../utils/handleImageUpload' @@ -27,6 +28,7 @@ export const DropArea = (props: Props) => { const [dragActive, setDragActive] = createSignal(false) const [dropAreaError, setDropAreaError] = createSignal() const [loading, setLoading] = createSignal(false) + const { session } = useSession() const runUpload = async (files) => { try { @@ -35,7 +37,7 @@ export const DropArea = (props: Props) => { const results: UploadedFile[] = [] for (const file of files) { const handler = props.fileType === 'image' ? handleImageUpload : handleFileUpload - const result = await handler(file) + const result = await handler(file, session()?.access_token) results.push(result) } props.onUpload(results) diff --git a/src/utils/getRandomTopicsFromArray.ts b/src/utils/getRandomTopicsFromArray.ts index ced616c0..58415c8d 100644 --- a/src/utils/getRandomTopicsFromArray.ts +++ b/src/utils/getRandomTopicsFromArray.ts @@ -2,6 +2,6 @@ import { RANDOM_TOPICS_COUNT } from '../components/Views/Home' import { Topic } from '../graphql/schema/core.gen' export const getRandomTopicsFromArray = (topics: Topic[], count: number = RANDOM_TOPICS_COUNT): Topic[] => { - const shuffledTopics = [...topics].sort(() => 0.5 - Math.random()) + const shuffledTopics = [...(topics || [])].sort(() => 0.5 - Math.random()) return shuffledTopics.slice(0, count) } diff --git a/src/utils/handleFileUpload.ts b/src/utils/handleFileUpload.ts index 7013de52..6d7066ed 100644 --- a/src/utils/handleFileUpload.ts +++ b/src/utils/handleFileUpload.ts @@ -5,12 +5,15 @@ import { UploadedFile } from '../pages/types' const apiBaseUrl = 'https://core.discours.io' const apiUrl = `${apiBaseUrl}/upload` -export const handleFileUpload = async (uploadFile: UploadFile): Promise => { +export const handleFileUpload = async (uploadFile: UploadFile, token: string): Promise => { const formData = new FormData() formData.append('file', uploadFile.file, uploadFile.name) const response = await fetch(apiUrl, { method: 'POST', body: formData, + headers: { + Authorization: token, + }, }) return response.json() } diff --git a/src/utils/handleImageUpload.ts b/src/utils/handleImageUpload.ts index 54ec619e..d0308a03 100644 --- a/src/utils/handleImageUpload.ts +++ b/src/utils/handleImageUpload.ts @@ -4,7 +4,8 @@ import { UploadedFile } from '../pages/types' import { thumborUrl } from './config' -export const handleImageUpload = async (uploadFile: UploadFile): Promise => { +export const handleImageUpload = async (uploadFile: UploadFile, _token: string): Promise => { + // TODO: image uploads can be authenticated too const formData = new FormData() formData.append('media', uploadFile.file, uploadFile.name) const response = await fetch(`${thumborUrl}/image`, {