ドライブの特定ディレクトリを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 { 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 = [];
|
||||||
|
|
|
||||||
|
|
@ -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(() => []);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue