You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

59 lines
1.8 KiB

import { Label } from '@/components/ui/label'
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue
} from '@/components/ui/select'
import { DEFAULT_NIP_96_SERVICE, NIP_96_SERVICE } from '@/constants'
import { simplifyUrl } from '@/lib/url'
import { useMediaUploadService } from '@/providers/MediaUploadServiceProvider'
import { useMemo } from 'react'
import { useTranslation } from 'react-i18next'
import BlossomServerListSetting from './BlossomServerListSetting'
const BLOSSOM = 'blossom'
export default function MediaUploadServiceSetting() {
const { t } = useTranslation()
const { serviceConfig, updateServiceConfig } = useMediaUploadService()
const selectedValue = useMemo(() => {
if (serviceConfig.type === 'blossom') {
return BLOSSOM
}
return serviceConfig.service
}, [serviceConfig])
const handleSelectedValueChange = (value: string) => {
if (value === BLOSSOM) {
return updateServiceConfig({ type: 'blossom' })
}
return updateServiceConfig({ type: 'nip96', service: value })
}
return (
<div className="space-y-2">
<Label htmlFor="media-upload-service-select">{t('Media upload service')}</Label>
<Select
defaultValue={DEFAULT_NIP_96_SERVICE}
value={selectedValue}
onValueChange={handleSelectedValueChange}
>
<SelectTrigger id="media-upload-service-select" className="w-48">
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value={BLOSSOM}>{t('Blossom')}</SelectItem>
{NIP_96_SERVICE.map((url) => (
<SelectItem key={url} value={url}>
{simplifyUrl(url)}
</SelectItem>
))}
</SelectContent>
</Select>
{selectedValue === BLOSSOM && <BlossomServerListSetting />}
</div>
)
}