ドライブの特定ディレクトリをURLから開く諸々
This commit is contained in:
parent
e0de86359c
commit
2f560e45da
|
|
@ -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 = [];
|
||||
|
|
|
|||
|
|
@ -5,18 +5,30 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
|
||||
<template>
|
||||
<div>
|
||||
<XDrive ref="drive" @cd="x => folder = x"/>
|
||||
<XDrive ref="drive" :initialFolder="props.folder" @cd="x => folder = x"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed } from 'vue';
|
||||
import { computed, onActivated, onDeactivated } from 'vue';
|
||||
import XDrive from '@/components/MkDrive.vue';
|
||||
import { i18n } from '@/i18n.js';
|
||||
import { definePageMetadata } from '@/scripts/page-metadata.js';
|
||||
|
||||
const props = withDefaults(defineProps<{
|
||||
folder?: string;
|
||||
}>(), {
|
||||
folder: null,
|
||||
});
|
||||
|
||||
let folder = $ref(null);
|
||||
|
||||
// 別のルートから飛んできたらそれはルートディレクトリを開く
|
||||
let drive = $ref(null);
|
||||
onActivated(() => {
|
||||
if (drive) drive.goRoot();
|
||||
});
|
||||
|
||||
const headerActions = $computed(() => []);
|
||||
|
||||
const headerTabs = $computed(() => []);
|
||||
|
|
|
|||
Loading…
Reference in New Issue