diff --git a/packages/frontend/src/components/MkDrive.vue b/packages/frontend/src/components/MkDrive.vue index 71bb4ecfef..788ab2b503 100644 --- a/packages/frontend/src/components/MkDrive.vue +++ b/packages/frontend/src/components/MkDrive.vue @@ -107,6 +107,7 @@ import { defaultStore } from '@/store.js'; import { i18n } from '@/i18n.js'; import { uploadFile, uploads } from '@/scripts/upload.js'; import { claimAchievement } from '@/scripts/achievements.js'; +import { mainRouter, useRouter } from '@/router.js'; const props = withDefaults(defineProps<{ initialFolder?: Misskey.entities.DriveFolder; @@ -153,6 +154,7 @@ const fetching = ref(true); const ilFilesObserver = new IntersectionObserver( (entries) => entries.some((entry) => entry.isIntersecting) && !fetching.value && moreFiles.value && fetchMoreFiles(), ); +const router = useRouter(); watch(folder, () => emit('cd', folder.value)); @@ -429,9 +431,15 @@ function chooseFolder(folderToChoose: Misskey.entities.DriveFolder) { function move(target?: Misskey.entities.DriveFolder) { if (!target) { goRoot(); + // メインルーターならURLだけ書き換え + if (router === mainRouter) history.pushState({}, '', '/my/drive/'); return; } else if (typeof target === 'object') { target = target.id; + // メインルーターならURLだけ書き換え + if (router === mainRouter) { + history.pushState({}, '', `/my/drive/folder/${target}`); + } } fetching.value = true; @@ -525,6 +533,9 @@ function goRoot() { fetch(); } +// 他のコンポーネントから goRootを使えるようにする +defineExpose({ goRoot }); + async function fetch() { folders.value = []; files.value = []; diff --git a/packages/frontend/src/pages/drive.vue b/packages/frontend/src/pages/drive.vue index 54fb83fc1d..d613264908 100644 --- a/packages/frontend/src/pages/drive.vue +++ b/packages/frontend/src/pages/drive.vue @@ -5,18 +5,30 @@ SPDX-License-Identifier: AGPL-3.0-only