From 8a9103fa0a612ab049d1a2e0143f71d11ef3b986 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 24 Aug 2022 16:33:06 +0200 Subject: [PATCH 01/17] Refactor: Use a global AbortController to cancel requests on route changes Signed-off-by: Marcel Klehr --- src/mixins/FetchAlbumsMixin.js | 4 ++++ src/services/RequestHandler.js | 9 +++++++++ src/views/AlbumContent.vue | 6 ++++++ 3 files changed, 19 insertions(+) create mode 100644 src/services/RequestHandler.js diff --git a/src/mixins/FetchAlbumsMixin.js b/src/mixins/FetchAlbumsMixin.js index de83108d3..853d5df1a 100644 --- a/src/mixins/FetchAlbumsMixin.js +++ b/src/mixins/FetchAlbumsMixin.js @@ -49,6 +49,10 @@ export default { this.fetchAlbums() }, + beforeDestroy() { + this.cancelAlbumsRequest('Changed view') + }, + computed: { ...mapGetters([ 'albums', diff --git a/src/services/RequestHandler.js b/src/services/RequestHandler.js new file mode 100644 index 000000000..1d2b102b2 --- /dev/null +++ b/src/services/RequestHandler.js @@ -0,0 +1,9 @@ +export let abortController = new AbortController() + +/** + * Cancel all running http requests + */ +export function cancelAll() { + abortController.abort() + abortController = new AbortController() +} diff --git a/src/views/AlbumContent.vue b/src/views/AlbumContent.vue index 52e0164dc..ee4b61492 100644 --- a/src/views/AlbumContent.vue +++ b/src/views/AlbumContent.vue @@ -310,9 +310,13 @@ export default { return [] } + const semaphoreSymbol = await this.semaphore.acquire(() => 0, 'fetchFiles') + const fetchSemaphoreSymbol = await this.fetchSemaphore.acquire() + try { this.errorFetchingFiles = null this.loadingFiles = true + this.semaphoreSymbol = semaphoreSymbol const response = await client.getDirectoryContents( `/photos/${getCurrentUser()?.uid}/albums/${this.albumName}`, @@ -351,6 +355,8 @@ export default { logger.error('Error fetching album files', error) } finally { this.loadingFiles = false + this.semaphore.release(semaphoreSymbol) + this.fetchSemaphore.release(fetchSemaphoreSymbol) } return [] From 46512b4415e588d956cb04ac6bf58e18b891c863 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 31 Aug 2022 15:28:10 +0200 Subject: [PATCH 02/17] Move AbortController code into a vue Mixin Signed-off-by: Marcel Klehr --- src/services/RequestHandler.js | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 src/services/RequestHandler.js diff --git a/src/services/RequestHandler.js b/src/services/RequestHandler.js deleted file mode 100644 index 1d2b102b2..000000000 --- a/src/services/RequestHandler.js +++ /dev/null @@ -1,9 +0,0 @@ -export let abortController = new AbortController() - -/** - * Cancel all running http requests - */ -export function cancelAll() { - abortController.abort() - abortController = new AbortController() -} From 4ae8f27f0e6546ed8bbaa919e4a48eed51055632 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Mon, 29 Aug 2022 11:32:32 +0200 Subject: [PATCH 03/17] Make tags view pretty even if recognize is not installed Signed-off-by: Marcel Klehr --- appinfo/routes.php | 8 + src/components/FolderTagPreview.vue | 14 +- src/components/Tag.vue | 40 +++-- src/components/ThingsCategory.vue | 104 +++++++++++++ src/router/index.js | 25 +++- src/services/Things.js | 23 +++ src/store/systemtags.js | 30 ++++ src/views/CategoryContent.vue | 199 +++++++++++++++++++++++++ src/views/TagContent.vue | 199 +++++++++++++++++++++++++ src/views/Tags.vue | 221 +++++++++------------------- 10 files changed, 682 insertions(+), 181 deletions(-) create mode 100644 src/components/ThingsCategory.vue create mode 100644 src/services/Things.js create mode 100644 src/views/CategoryContent.vue create mode 100644 src/views/TagContent.vue diff --git a/appinfo/routes.php b/appinfo/routes.php index 380a0b5e4..ba81f4c6d 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -78,6 +78,14 @@ 'path' => '', ] ], + ['name' => 'page#index', 'url' => '/categories/{path}', 'verb' => 'GET', 'postfix' => 'categories', + 'requirements' => [ + 'path' => '.*', + ], + 'defaults' => [ + 'path' => '', + ] + ], // apis [ diff --git a/src/components/FolderTagPreview.vue b/src/components/FolderTagPreview.vue index 77a24beae..ab4e59b7a 100644 --- a/src/components/FolderTagPreview.vue +++ b/src/components/FolderTagPreview.vue @@ -23,7 +23,7 @@