diff options
Diffstat (limited to 'src/state/queries/video/video-upload.ts')
-rw-r--r-- | src/state/queries/video/video-upload.ts | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/src/state/queries/video/video-upload.ts b/src/state/queries/video/video-upload.ts index 23e04316e..170b53890 100644 --- a/src/state/queries/video/video-upload.ts +++ b/src/state/queries/video/video-upload.ts @@ -9,8 +9,8 @@ import {cancelable} from '#/lib/async/cancelable' import {ServerError} from '#/lib/media/video/errors' import {CompressedVideo} from '#/lib/media/video/types' import {createVideoEndpointUrl, mimeToExt} from '#/state/queries/video/util' -import {useAgent, useSession} from '#/state/session' -import {getServiceAuthAudFromUrl} from 'lib/strings/url-helpers' +import {useSession} from '#/state/session' +import {useServiceAuthToken, useVideoUploadLimits} from './video-upload.shared' export const useUploadVideoMutation = ({ onSuccess, @@ -24,38 +24,30 @@ export const useUploadVideoMutation = ({ signal: AbortSignal }) => { const {currentAccount} = useSession() - const agent = useAgent() + const getToken = useServiceAuthToken({ + lxm: 'com.atproto.repo.uploadBlob', + exp: Date.now() / 1000 + 60 * 30, // 30 minutes + }) + const checkLimits = useVideoUploadLimits() const {_} = useLingui() return useMutation({ mutationKey: ['video', 'upload'], mutationFn: cancelable(async (video: CompressedVideo) => { + await checkLimits() + const uri = createVideoEndpointUrl('/xrpc/app.bsky.video.uploadVideo', { did: currentAccount!.did, name: `${nanoid(12)}.${mimeToExt(video.mimeType)}`, }) - const serviceAuthAud = getServiceAuthAudFromUrl(agent.dispatchUrl) - - if (!serviceAuthAud) { - throw new Error('Agent does not have a PDS URL') - } - - const {data: serviceAuth} = await agent.com.atproto.server.getServiceAuth( - { - aud: serviceAuthAud, - lxm: 'com.atproto.repo.uploadBlob', - exp: Date.now() / 1000 + 60 * 30, // 30 minutes - }, - ) - const uploadTask = createUploadTask( uri, video.uri, { headers: { 'content-type': video.mimeType, - Authorization: `Bearer ${serviceAuth.token}`, + Authorization: `Bearer ${await getToken()}`, }, httpMethod: 'POST', uploadType: FileSystemUploadType.BINARY_CONTENT, |