ドライブの特定ディレクトリをURLから開く諸々

This commit is contained in:
FruitRiin 2023-11-21 00:59:25 +09:00
parent e0de86359c
commit 2f560e45da
2 changed files with 25 additions and 2 deletions

View File

@ -107,6 +107,7 @@ import { defaultStore } from '@/store.js';
import { i18n } from '@/i18n.js'; import { i18n } from '@/i18n.js';
import { uploadFile, uploads } from '@/scripts/upload.js'; import { uploadFile, uploads } from '@/scripts/upload.js';
import { claimAchievement } from '@/scripts/achievements.js'; import { claimAchievement } from '@/scripts/achievements.js';
import { mainRouter, useRouter } from '@/router.js';
const props = withDefaults(defineProps<{ const props = withDefaults(defineProps<{
initialFolder?: Misskey.entities.DriveFolder; initialFolder?: Misskey.entities.DriveFolder;
@ -153,6 +154,7 @@ const fetching = ref(true);
const ilFilesObserver = new IntersectionObserver( const ilFilesObserver = new IntersectionObserver(
(entries) => entries.some((entry) => entry.isIntersecting) && !fetching.value && moreFiles.value && fetchMoreFiles(), (entries) => entries.some((entry) => entry.isIntersecting) && !fetching.value && moreFiles.value && fetchMoreFiles(),
); );
const router = useRouter();
watch(folder, () => emit('cd', folder.value)); watch(folder, () => emit('cd', folder.value));
@ -429,9 +431,15 @@ function chooseFolder(folderToChoose: Misskey.entities.DriveFolder) {
function move(target?: Misskey.entities.DriveFolder) { function move(target?: Misskey.entities.DriveFolder) {
if (!target) { if (!target) {
goRoot(); goRoot();
// URL
if (router === mainRouter) history.pushState({}, '', '/my/drive/');
return; return;
} else if (typeof target === 'object') { } else if (typeof target === 'object') {
target = target.id; target = target.id;
// URL
if (router === mainRouter) {
history.pushState({}, '', `/my/drive/folder/${target}`);
}
} }
fetching.value = true; fetching.value = true;
@ -525,6 +533,9 @@ function goRoot() {
fetch(); fetch();
} }
// goRoot使
defineExpose({ goRoot });
async function fetch() { async function fetch() {
folders.value = []; folders.value = [];
files.value = []; files.value = [];

View File

@ -5,18 +5,30 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<div> <div>
<XDrive ref="drive" @cd="x => folder = x"/> <XDrive ref="drive" :initialFolder="props.folder" @cd="x => folder = x"/>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { computed } from 'vue'; import { computed, onActivated, onDeactivated } from 'vue';
import XDrive from '@/components/MkDrive.vue'; import XDrive from '@/components/MkDrive.vue';
import { i18n } from '@/i18n.js'; import { i18n } from '@/i18n.js';
import { definePageMetadata } from '@/scripts/page-metadata.js'; import { definePageMetadata } from '@/scripts/page-metadata.js';
const props = withDefaults(defineProps<{
folder?: string;
}>(), {
folder: null,
});
let folder = $ref(null); let folder = $ref(null);
//
let drive = $ref(null);
onActivated(() => {
if (drive) drive.goRoot();
});
const headerActions = $computed(() => []); const headerActions = $computed(() => []);
const headerTabs = $computed(() => []); const headerTabs = $computed(() => []);