UNPKG

sanity-plugin-mux-input

Version:

An input component that integrates Sanity Studio with Mux video encoding/hosting service.

72 lines (66 loc) 1.96 kB
import {useCallback} from 'react' import type {SanityClient} from 'sanity' import {createSigningKeys, haveValidSigningKeys, saveSecrets, testSecrets} from '../actions/secrets' import type {Secrets} from '../util/types' export const useSaveSecrets = (client: SanityClient, secrets: Secrets) => { return useCallback( async ({ token, secretKey, enableSignedUrls, }: Pick<Secrets, 'token' | 'secretKey' | 'enableSignedUrls'>): Promise<Secrets> => { let {signingKeyId, signingKeyPrivate} = secrets try { await saveSecrets( client, token!, secretKey!, enableSignedUrls, signingKeyId!, signingKeyPrivate! ) const valid = await testSecrets(client) if (!valid?.status && token && secretKey) { throw new Error('Invalid secrets') } } catch (err) { console.error('Error while trying to save secrets:', err) throw err } if (enableSignedUrls) { const hasValidSigningKeys = await haveValidSigningKeys( client, signingKeyId!, signingKeyPrivate! ) if (!hasValidSigningKeys) { try { const {data} = await createSigningKeys(client) signingKeyId = data.id signingKeyPrivate = data.private_key await saveSecrets( client, token!, secretKey!, enableSignedUrls, signingKeyId, signingKeyPrivate ) } catch (err: any) { // eslint-disable-next-line no-console console.log('Error while creating and saving signing key:', err?.message) throw err } } } return { token, secretKey, enableSignedUrls, signingKeyId, signingKeyPrivate, } }, [client, secrets] ) }