summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkDrive.vue
diff options
context:
space:
mode:
Diffstat (limited to 'packages/frontend/src/components/MkDrive.vue')
-rw-r--r--packages/frontend/src/components/MkDrive.vue33
1 files changed, 28 insertions, 5 deletions
diff --git a/packages/frontend/src/components/MkDrive.vue b/packages/frontend/src/components/MkDrive.vue
index 52aef450d9..aff227da40 100644
--- a/packages/frontend/src/components/MkDrive.vue
+++ b/packages/frontend/src/components/MkDrive.vue
@@ -56,7 +56,7 @@
/>
<!-- SEE: https://stackoverflow.com/questions/18744164/flex-box-align-last-row-to-grid -->
<div v-for="(n, i) in 16" :key="i" :class="$style.padding"></div>
- <MkButton v-if="moreFolders" ref="moreFolders">{{ i18n.ts.loadMore }}</MkButton>
+ <MkButton v-if="moreFolders" ref="moreFolders" @click="fetchMoreFolders">{{ i18n.ts.loadMore }}</MkButton>
</div>
<div v-show="files.length > 0" ref="filesContainer" :class="$style.files">
<XFile
@@ -65,6 +65,7 @@
v-anim="i"
:class="$style.file"
:file="file"
+ :folder="folder"
:selectMode="select === 'file'"
:isSelected="selectedFiles.some(x => x.id === file.id)"
@chosen="chooseFile"
@@ -201,9 +202,9 @@ function onDragover(ev: DragEvent): any {
switch (ev.dataTransfer.effectAllowed) {
case 'all':
case 'uninitialized':
- case 'copy':
- case 'copyLink':
- case 'copyMove':
+ case 'copy':
+ case 'copyLink':
+ case 'copyMove':
ev.dataTransfer.dropEffect = 'copy';
break;
case 'linkMove':
@@ -559,6 +560,28 @@ async function fetch() {
fetching.value = false;
}
+function fetchMoreFolders() {
+ fetching.value = true;
+
+ const max = 30;
+
+ os.api('drive/folders', {
+ folderId: folder.value ? folder.value.id : null,
+ type: props.type,
+ untilId: folders.value.at(-1)?.id,
+ limit: max + 1,
+ }).then(folders => {
+ if (folders.length === max + 1) {
+ moreFolders.value = true;
+ folders.pop();
+ } else {
+ moreFolders.value = false;
+ }
+ for (const x of folders) appendFolder(x);
+ fetching.value = false;
+ });
+}
+
function fetchMoreFiles() {
fetching.value = true;
@@ -568,7 +591,7 @@ function fetchMoreFiles() {
os.api('drive/files', {
folderId: folder.value ? folder.value.id : null,
type: props.type,
- untilId: files.value[files.value.length - 1].id,
+ untilId: files.value.at(-1)?.id,
limit: max + 1,
}).then(files => {
if (files.length === max + 1) {