From f5100cc81f6ffdcfe2b9bf6041f97098a4e82d02 Mon Sep 17 00:00:00 2001 From: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sat, 13 Apr 2024 12:51:37 +0900 Subject: feat(frontend): アップロードするファイルの名前をランダム文字列にできるように (#13688) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(frontend): アップロードするファイルの名前をランダム文字列にできるように * Update Changelog * refactor * 設定項目を移動 * fix * 「オリジナルのファイル名を保持」に変更 * 拡張子を付加するように --- packages/frontend/src/pages/settings/drive.vue | 5 +++++ packages/frontend/src/scripts/upload.ts | 10 +++++++--- packages/frontend/src/store.ts | 4 ++++ 3 files changed, 16 insertions(+), 3 deletions(-) (limited to 'packages/frontend') diff --git a/packages/frontend/src/pages/settings/drive.vue b/packages/frontend/src/pages/settings/drive.vue index 1919f80864..81a8d474d2 100644 --- a/packages/frontend/src/pages/settings/drive.vue +++ b/packages/frontend/src/pages/settings/drive.vue @@ -44,6 +44,10 @@ SPDX-License-Identifier: AGPL-3.0-only + + + + @@ -96,6 +100,7 @@ const meterStyle = computed(() => { }); const keepOriginalUploading = computed(defaultStore.makeGetterSetter('keepOriginalUploading')); +const keepOriginalFilename = computed(defaultStore.makeGetterSetter('keepOriginalFilename')); misskeyApi('drive').then(info => { capacity.value = info.capacity; diff --git a/packages/frontend/src/scripts/upload.ts b/packages/frontend/src/scripts/upload.ts index 6c46b2bc1b..3e947183c9 100644 --- a/packages/frontend/src/scripts/upload.ts +++ b/packages/frontend/src/scripts/upload.ts @@ -5,6 +5,7 @@ import { reactive, ref } from 'vue'; import * as Misskey from 'misskey-js'; +import { v4 as uuid } from 'uuid'; import { readAndCompressImage } from '@misskey-dev/browser-image-resizer'; import { getCompressionConfig } from './upload/compress-config.js'; import { defaultStore } from '@/store.js'; @@ -39,13 +40,16 @@ export function uploadFile( if (folder && typeof folder === 'object') folder = folder.id; return new Promise((resolve, reject) => { - const id = Math.random().toString(); + const id = uuid(); const reader = new FileReader(); reader.onload = async (): Promise => { + const filename = name ?? file.name ?? 'untitled'; + const extension = filename.split('.').length > 1 ? '.' + filename.split('.').pop() : ''; + const ctx = reactive({ - id: id, - name: name ?? file.name ?? 'untitled', + id, + name: defaultStore.state.keepOriginalFilename ? filename : id + extension, progressMax: undefined, progressValue: undefined, img: window.URL.createObjectURL(file), diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts index faefbd8ce4..9b5011739a 100644 --- a/packages/frontend/src/store.ts +++ b/packages/frontend/src/store.ts @@ -446,6 +446,10 @@ export const defaultStore = markRaw(new Storage('base', { where: 'device', default: false, }, + keepOriginalFilename: { + where: 'device', + default: true, + }, sound_masterVolume: { where: 'device', -- cgit v1.2.3-freya