同步设置
This commit is contained in:
1 parent
832261739f
commit
92aaf6fbb8
28 files changed
+705
-227
No files matched your search
@@ -3,6 +3,7 @@ import type { ImageItem, ImageTag } from '~/types/image'
|
||||
import { buildImageBbcode } from '~/utils/image-display'
|
||||
|
||||
const { uploading, progressItems, uploadFiles } = useImageUpload()
|
||||
const { policy: uploadPolicy, load: loadUploadPolicy } = useUploadPolicy()
|
||||
|
||||
const {
|
||||
autoCopyMarkdown,
|
||||
@@ -16,6 +17,9 @@ const { recordRecent } = useRecentTags()
|
||||
const { isChecking, isAuthenticated, checkSession, handleAuthError, fetchStatus } = useAuth()
|
||||
const toast = useToast()
|
||||
const { t } = useI18n()
|
||||
const imageFormats = computed(() =>
|
||||
t('upload.formats', { size: uploadPolicy.value?.imageMaxFileSizeMb ?? 10 })
|
||||
)
|
||||
const sessionItems = ref<ImageItem[]>([])
|
||||
const deletingKeys = ref<Set<string>>(new Set())
|
||||
const emptySelection = ref(new Set<string>())
|
||||
@@ -39,6 +43,7 @@ const showProgress = computed(
|
||||
async function loadPage() {
|
||||
try {
|
||||
loadPreferences()
|
||||
await loadUploadPolicy().catch(() => {})
|
||||
} catch (error: unknown) {
|
||||
handleAuthError(error)
|
||||
}
|
||||
@@ -227,6 +232,7 @@ async function confirmBatchTags(tagIds: number[]) {
|
||||
<AppShell v-else>
|
||||
<UploadFlipCard
|
||||
:disabled="uploading"
|
||||
:formats="imageFormats"
|
||||
@upload="handleUpload"
|
||||
/>
|
||||
|
||||
|
||||
@@ -55,8 +55,12 @@ interface SettingsResponse {
|
||||
capApiEndpoint: string
|
||||
capSecret: string
|
||||
appVersion: string
|
||||
uploadMaxFileSizeMb: number
|
||||
uploadMaxFileSizeMbSource: PolicySource
|
||||
uploadImageMaxFileSizeMb: number
|
||||
uploadImageMaxFileSizeMbSource: PolicySource
|
||||
uploadVideoMaxFileSizeMb: number
|
||||
uploadVideoMaxFileSizeMbSource: PolicySource
|
||||
uploadFileMaxFileSizeMb: number
|
||||
uploadFileMaxFileSizeMbSource: PolicySource
|
||||
allowedMimeTypes: MimeType[]
|
||||
allowedMimeTypesSource: PolicySource
|
||||
allowedVideoExtensions: VideoExtension[]
|
||||
@@ -185,7 +189,9 @@ const capApiEndpointDraft = ref('')
|
||||
const capSecretDraft = ref('')
|
||||
const domainSeparationSaveConfirmOpen = ref(false)
|
||||
|
||||
const uploadMaxFileSizeMbDraft = ref(10)
|
||||
const uploadImageMaxFileSizeMbDraft = ref(10)
|
||||
const uploadVideoMaxFileSizeMbDraft = ref(500)
|
||||
const uploadFileMaxFileSizeMbDraft = ref(100)
|
||||
const allowedMimeTypesDraft = ref<MimeType[]>([])
|
||||
const allowedVideoExtensionsDraft = ref<VideoExtension[]>([])
|
||||
const forbiddenFileExtensionsDraft = ref<string[]>([])
|
||||
@@ -242,7 +248,9 @@ const hasServerChanges = computed(() => {
|
||||
|| turnstileSecretKeyDraft.value !== settings.value.turnstileSecretKey
|
||||
|| capApiEndpointDraft.value !== settings.value.capApiEndpoint
|
||||
|| capSecretDraft.value !== settings.value.capSecret
|
||||
|| uploadMaxFileSizeMbDraft.value !== settings.value.uploadMaxFileSizeMb
|
||||
|| uploadImageMaxFileSizeMbDraft.value !== settings.value.uploadImageMaxFileSizeMb
|
||||
|| uploadVideoMaxFileSizeMbDraft.value !== settings.value.uploadVideoMaxFileSizeMb
|
||||
|| uploadFileMaxFileSizeMbDraft.value !== settings.value.uploadFileMaxFileSizeMb
|
||||
|| !mimeListsEqual(allowedMimeTypesDraft.value, settings.value.allowedMimeTypes)
|
||||
|| !mimeListsEqual(allowedVideoExtensionsDraft.value, settings.value.allowedVideoExtensions)
|
||||
|| !mimeListsEqual(forbiddenFileExtensionsDraft.value, settings.value.forbiddenFileExtensions)
|
||||
@@ -320,7 +328,9 @@ function applySettings(data: SettingsResponse) {
|
||||
turnstileSecretKeyDraft.value = data.turnstileSecretKey
|
||||
capApiEndpointDraft.value = data.capApiEndpoint
|
||||
capSecretDraft.value = data.capSecret
|
||||
uploadMaxFileSizeMbDraft.value = data.uploadMaxFileSizeMb
|
||||
uploadImageMaxFileSizeMbDraft.value = data.uploadImageMaxFileSizeMb
|
||||
uploadVideoMaxFileSizeMbDraft.value = data.uploadVideoMaxFileSizeMb
|
||||
uploadFileMaxFileSizeMbDraft.value = data.uploadFileMaxFileSizeMb
|
||||
allowedMimeTypesDraft.value = [...data.allowedMimeTypes]
|
||||
allowedVideoExtensionsDraft.value = [...data.allowedVideoExtensions]
|
||||
forbiddenFileExtensionsDraft.value = [...data.forbiddenFileExtensions]
|
||||
@@ -423,7 +433,9 @@ async function performSaveServerSettings() {
|
||||
turnstileSecretKey: turnstileSecretKeyDraft.value,
|
||||
capApiEndpoint: capApiEndpointDraft.value,
|
||||
capSecret: capSecretDraft.value,
|
||||
uploadMaxFileSizeMb: uploadMaxFileSizeMbDraft.value,
|
||||
uploadImageMaxFileSizeMb: uploadImageMaxFileSizeMbDraft.value,
|
||||
uploadVideoMaxFileSizeMb: uploadVideoMaxFileSizeMbDraft.value,
|
||||
uploadFileMaxFileSizeMb: uploadFileMaxFileSizeMbDraft.value,
|
||||
allowedMimeTypes: allowedMimeTypesDraft.value,
|
||||
allowedVideoExtensions: allowedVideoExtensionsDraft.value,
|
||||
forbiddenFileExtensions: forbiddenFileExtensionsDraft.value,
|
||||
@@ -626,7 +638,9 @@ watch(isAdmin, () => {
|
||||
>
|
||||
<SettingsGroup>
|
||||
<SettingsUploadPolicyFields
|
||||
v-model:upload-max-file-size-mb="uploadMaxFileSizeMbDraft"
|
||||
v-model:upload-image-max-file-size-mb="uploadImageMaxFileSizeMbDraft"
|
||||
v-model:upload-video-max-file-size-mb="uploadVideoMaxFileSizeMbDraft"
|
||||
v-model:upload-file-max-file-size-mb="uploadFileMaxFileSizeMbDraft"
|
||||
v-model:allowed-mime-types="allowedMimeTypesDraft"
|
||||
v-model:allowed-video-extensions="allowedVideoExtensionsDraft"
|
||||
v-model:forbidden-file-extensions="forbiddenFileExtensionsDraft"
|
||||
@@ -634,7 +648,9 @@ watch(isAdmin, () => {
|
||||
v-model:upload-rate-token-max="uploadRateTokenMaxDraft"
|
||||
v-model:upload-rate-window-minutes="uploadRateWindowMinutesDraft"
|
||||
part="upload-preference"
|
||||
:upload-max-file-size-mb-source="settings.uploadMaxFileSizeMbSource"
|
||||
:upload-image-max-file-size-mb-source="settings.uploadImageMaxFileSizeMbSource"
|
||||
:upload-video-max-file-size-mb-source="settings.uploadVideoMaxFileSizeMbSource"
|
||||
:upload-file-max-file-size-mb-source="settings.uploadFileMaxFileSizeMbSource"
|
||||
:allowed-mime-types-source="settings.allowedMimeTypesSource"
|
||||
:allowed-video-extensions-source="settings.allowedVideoExtensionsSource"
|
||||
:forbidden-file-extensions-source="settings.forbiddenFileExtensionsSource"
|
||||
|
||||
Reference in new issue
Block a user