From 6288fbb8ff6ec1318fca6966d9ee9d55d626e24f Mon Sep 17 00:00:00 2001 From: Varun Patil Date: Mon, 29 May 2023 21:31:44 -0700 Subject: [PATCH] refactor: move dynamic top matter to component Signed-off-by: Varun Patil --- src/components/Timeline.vue | 66 ++++++------------- .../top-matter/DynamicTopMatter.vue | 44 +++++++++++++ .../top-matter/FolderDynamicTopMatter.vue | 57 ++++++++++++++++ .../{ => top-matter}/FolderGrid.vue | 6 +- 4 files changed, 123 insertions(+), 50 deletions(-) create mode 100644 src/components/top-matter/DynamicTopMatter.vue create mode 100644 src/components/top-matter/FolderDynamicTopMatter.vue rename src/components/{ => top-matter}/FolderGrid.vue (85%) diff --git a/src/components/Timeline.vue b/src/components/Timeline.vue index 51ff6f6d..f6e1fa5c 100644 --- a/src/components/Timeline.vue +++ b/src/components/Timeline.vue @@ -36,15 +36,8 @@
{{ viewName }}
- - - - - + + @@ -108,10 +101,9 @@ import { showError } from '@nextcloud/dialogs'; import { subscribe, unsubscribe } from '@nextcloud/event-bus'; import { getLayout } from '../services/Layout'; -import { IDay, IFolder, IHeadRow, IPhoto, IRow, IRowType } from '../types'; +import { IDay, IHeadRow, IPhoto, IRow, IRowType } from '../types'; import UserConfig from '../mixins/UserConfig'; -import FolderGrid from './FolderGrid.vue'; import RowHead from './frame/RowHead.vue'; import Photo from './frame/Photo.vue'; import ScrollerManager from './ScrollerManager.vue'; @@ -119,8 +111,8 @@ import SelectionManager from './SelectionManager.vue'; import Viewer from './viewer/Viewer.vue'; import EmptyContent from './top-matter/EmptyContent.vue'; -import OnThisDay from './top-matter/OnThisDay.vue'; import TopMatter from './top-matter/TopMatter.vue'; +import DynamicTopMatter from './top-matter/DynamicTopMatter.vue'; import * as PublicShareHeader from './top-matter/PublicShareHeader'; import * as dav from '../services/DavRequests'; @@ -139,12 +131,11 @@ export default defineComponent({ name: 'Timeline', components: { - FolderGrid, RowHead, Photo, EmptyContent, - OnThisDay, TopMatter, + DynamicTopMatter, SelectionManager, ScrollerManager, Viewer, @@ -157,8 +148,8 @@ export default defineComponent({ loading: 0, /** Main list of rows */ list: [] as IRow[], - /** List of top folders */ - folders: [] as IFolder[], + /** Dynamic top matter has standalone content */ + dtmContent: false, /** Computed number of columns */ numCols: 0, /** Header rows for dayId key */ @@ -259,7 +250,7 @@ export default defineComponent({ /** Nothing to show here */ empty(): boolean { - return !this.list.length && !this.folders.length; + return !this.list.length && !this.dtmContent; }, }, @@ -362,7 +353,7 @@ export default defineComponent({ this.scrollerManager().reset(); this.loading = 0; this.list = []; - this.folders = []; + this.dtmContent = false; this.heads = {}; this.currentStart = 0; this.currentEnd = 0; @@ -671,39 +662,20 @@ export default defineComponent({ return query; }, - /** Fetch folders */ - async fetchFolders() { - if (!this.routeIsFolders || this.$route.query.recursive) { - this.folders = []; - return; - } - - // Get subfolders URL - const folder = utils.getFolderRoutePath(this.config.folders_path); - const url = API.Q(API.FOLDERS_SUB(), { folder }); - - // Make API call to get subfolders - try { - this.loading++; - const state = this.state; - const res = await axios.get(url); - if (state !== this.state) return; - this.folders = res.data; - } finally { - this.loading--; - } - - // Filter out hidden folders - if (!this.config.show_hidden_folders) { - this.folders = this.folders.filter((f) => !f.name.startsWith('.') && f.previews?.length); - } - }, - /** Fetch timeline main call */ async fetchDays(noCache = false) { // Awaiting this is important because the folders must render // before the timeline to prevent glitches - await this.fetchFolders(); + try { + this.loading++; + const state = this.state; + // @ts-ignore + const res = await this.$refs.dtm.refresh(); + if (this.state !== state) return; + this.dtmContent = res; + } finally { + this.loading--; + } // Get URL an cache identifier let url: string; diff --git a/src/components/top-matter/DynamicTopMatter.vue b/src/components/top-matter/DynamicTopMatter.vue new file mode 100644 index 00000000..4fb7828f --- /dev/null +++ b/src/components/top-matter/DynamicTopMatter.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/top-matter/FolderDynamicTopMatter.vue b/src/components/top-matter/FolderDynamicTopMatter.vue new file mode 100644 index 00000000..cfdfa6db --- /dev/null +++ b/src/components/top-matter/FolderDynamicTopMatter.vue @@ -0,0 +1,57 @@ + + + diff --git a/src/components/FolderGrid.vue b/src/components/top-matter/FolderGrid.vue similarity index 85% rename from src/components/FolderGrid.vue rename to src/components/top-matter/FolderGrid.vue index 726bc4d8..f4725f01 100644 --- a/src/components/FolderGrid.vue +++ b/src/components/top-matter/FolderGrid.vue @@ -9,10 +9,10 @@