From a589ee5f7a50de36ec355775fc1d6de6c2264c9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Carodej?= Date: Thu, 24 Feb 2022 10:20:38 +0100 Subject: [PATCH] browsing through upload request --- .env.testing | 2 +- ...17_073653_create_upload_requests_table.php | 2 +- public/mix-manifest.json | 6 +- .../FilePreview/FilePreviewMedia.vue | 2 +- .../js/components/FilesView/ItemGrid.vue | 2 +- .../js/components/FilesView/ItemList.vue | 2 +- resources/js/helpers/functionHelpers.js | 7 +- resources/js/store/modules/fileFunctions.js | 2 +- resources/js/store/modules/uploadRequest.js | 51 ++++++-- .../js/views/FileView/UploadRequestFiles.vue | 71 +++++++---- resources/js/views/UploadRequest.vue | 17 ++- routes/file.php | 6 +- routes/upload-request.php | 12 +- src/App/Http/Kernel.php | 2 +- .../Folders/Resources/FolderResource.php | 1 - .../BrowseUploadRequestController.php | 40 ++++++ .../Controllers/CreateFolderController.php | 7 +- .../DeleteFileOrFolderController.php | 7 +- .../GetFileFromUploadRequestController.php | 6 - ...etThumbnailFromUploadRequestController.php | 6 - ...etFolderTreeForUploadRequestController.php | 7 +- .../MoveItemInUploadRequestController.php | 3 +- .../RenameFileOrFolderController.php | 7 +- .../UploadFilesForUploadRequestController.php | 7 ++ .../Middleware/ProtectUploadRequestRoutes.php | 5 +- .../Resources/UploadRequestResource.php | 10 +- .../ExpireUnfilledUploadRequestAction.php | 2 +- tests/Domain/Files/FileTest.php | 11 +- .../UploadRequestBrowsingTest.php | 114 ++++++++++++++++-- .../UploadRequestEditingTest.php | 9 +- .../UploadRequest/UploadRequestTest.php | 3 + 31 files changed, 311 insertions(+), 118 deletions(-) create mode 100644 src/Domain/UploadRequest/Controllers/BrowseUploadRequestController.php rename {tests/Domain/UploadRequest => src/Domain/UploadRequest/Controllers}/RenameFileOrFolderController.php (88%) diff --git a/.env.testing b/.env.testing index 3fef978d..0efd3d4e 100644 --- a/.env.testing +++ b/.env.testing @@ -1,6 +1,6 @@ APP_NAME=Laravel APP_ENV=local -APP_KEY=base64:GhP7Rdqy8uICwxrAgwO0pf6xvWIaB/DDo6z2Ro0vIFg= +APP_KEY=base64:yCFkwqoIPdc5TZIjrgoK40pCqj+rnCOlonN6nXc/sbk= APP_DEBUG=true APP_URL=http://localhost APP_DEMO=false diff --git a/database/migrations/2022_02_17_073653_create_upload_requests_table.php b/database/migrations/2022_02_17_073653_create_upload_requests_table.php index ddc5152b..4928ba9c 100644 --- a/database/migrations/2022_02_17_073653_create_upload_requests_table.php +++ b/database/migrations/2022_02_17_073653_create_upload_requests_table.php @@ -17,7 +17,7 @@ class CreateUploadRequestsTable extends Migration $table->uuid('id'); $table->uuid('user_id'); $table->uuid('folder_id'); - $table->enum('status', ['active', 'filled', 'expired'])->default('active'); + $table->enum('status', ['active', 'filling', 'filled', 'expired'])->default('active'); $table->string('email')->nullable(); $table->longText('notes')->nullable(); $table->timestamps(); diff --git a/public/mix-manifest.json b/public/mix-manifest.json index f212c89f..79f2e410 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,5 +1,7 @@ { "/js/main.js": "/js/main.js", + "/js/chunks/request.js": "/js/chunks/request.js", + "/js/chunks/request-upload.js": "/js/chunks/request-upload.js", "/js/chunks/setup-wizard.js": "/js/chunks/setup-wizard.js", "/js/chunks/status-check.js": "/js/chunks/status-check.js", "/js/chunks/purchase-code.js": "/js/chunks/purchase-code.js", @@ -68,7 +70,5 @@ "/js/chunks/shared-with-me.js": "/js/chunks/shared-with-me.js", "/js/chunks/invitation.js": "/js/chunks/invitation.js", "/css/tailwind.css": "/css/tailwind.css", - "/css/app.css": "/css/app.css", - "/js/chunks/request-upload.js": "/js/chunks/request-upload.js", - "/js/chunks/request.js": "/js/chunks/request.js" + "/css/app.css": "/css/app.css" } diff --git a/resources/js/components/FilePreview/FilePreviewMedia.vue b/resources/js/components/FilePreview/FilePreviewMedia.vue index 61e143fb..53563875 100644 --- a/resources/js/components/FilePreview/FilePreviewMedia.vue +++ b/resources/js/components/FilePreview/FilePreviewMedia.vue @@ -141,7 +141,7 @@ export default { this.currentIndex = index } }) - }, 100), + }, 50), getFilesForView() { let requestedFile = this.clipboard[0] diff --git a/resources/js/components/FilesView/ItemGrid.vue b/resources/js/components/FilesView/ItemGrid.vue index 3a67feb2..6d05abfc 100644 --- a/resources/js/components/FilesView/ItemGrid.vue +++ b/resources/js/components/FilesView/ItemGrid.vue @@ -65,7 +65,7 @@ diff --git a/resources/js/components/FilesView/ItemList.vue b/resources/js/components/FilesView/ItemList.vue index 8ab586fd..51609f95 100644 --- a/resources/js/components/FilesView/ItemList.vue +++ b/resources/js/components/FilesView/ItemList.vue @@ -44,7 +44,7 @@ v-if="isImage && entry.data.attributes.thumbnail" class="ml-0.5 h-12 w-12 rounded object-cover" :src="entry.data.attributes.thumbnail.xs" - :alt="entry.data.attributes.name" + alt="" loading="lazy" /> diff --git a/resources/js/helpers/functionHelpers.js b/resources/js/helpers/functionHelpers.js index cec19672..ea69fc1d 100644 --- a/resources/js/helpers/functionHelpers.js +++ b/resources/js/helpers/functionHelpers.js @@ -326,6 +326,7 @@ const FunctionHelpers = { Vue.prototype.$getDataByLocation = function () { let routes = { + RequestUpload: ['getUploadRequestFolder', router.currentRoute.params.id || undefined ], Public: ['getSharedFolder', router.currentRoute.params.id || undefined], Files: ['getFolder', router.currentRoute.params.id || undefined], RecentUploads: ['getRecentUploads'], @@ -424,10 +425,8 @@ const FunctionHelpers = { Vue.prototype.$goToFileView = function (id) { let locations = { - Public: { - name: 'Public', - params: { token: this.$route.params.token, id: id }, - }, + RequestUpload: {name: 'RequestUpload', params: { token: this.$route.params.token, id: id }}, + Public: {name: 'Public', params: { token: this.$route.params.token, id: id }}, TeamFolders: { name: 'TeamFolders', params: { id: id } }, SharedWithMe: { name: 'SharedWithMe', params: { id: id } }, MySharedItems: { name: 'Files', params: { id: id } }, diff --git a/resources/js/store/modules/fileFunctions.js b/resources/js/store/modules/fileFunctions.js index 5ae2da5f..5ca7f7d4 100644 --- a/resources/js/store/modules/fileFunctions.js +++ b/resources/js/store/modules/fileFunctions.js @@ -313,7 +313,7 @@ const actions = { commit('REMOVE_ITEM', data.data.id) // Remove item from sidebar - if (getters.permission === 'master') { + if (! ['Public', 'RequestUpload'].includes(router.currentRoute.name)) { if (data.data.type === 'folder') commit('REMOVE_ITEM_FROM_FAVOURITES', data) } }) diff --git a/resources/js/store/modules/uploadRequest.js b/resources/js/store/modules/uploadRequest.js index 30061e0e..e4dd941f 100644 --- a/resources/js/store/modules/uploadRequest.js +++ b/resources/js/store/modules/uploadRequest.js @@ -1,6 +1,5 @@ import router from '../../router' import { events } from '../../bus' -import i18n from '../../i18n' import axios from 'axios' import Vue from 'vue' @@ -9,19 +8,51 @@ const defaultState = { } const actions = { + getUploadRequestFolder: ({ commit, getters }, id) => { + commit('LOADING_STATE', { loading: true, data: [] }) + + return new Promise((resolve, reject) => { + axios + .get(`/api/upload-request/${router.currentRoute.params.token}/browse/${id}${getters.sorting.URI}`) + .then((response) => { + let folders = response.data.folders.data + let files = response.data.files.data + + commit('LOADING_STATE', { + loading: false, + data: folders.concat(files), + }) + commit('SET_CURRENT_FOLDER', response.data.root) + + events.$emit('scrollTop') + + resolve(response) + }) + .catch((error) => { + Vue.prototype.$isSomethingWrong() + + reject(error) + }) + }) + }, getUploadRequestDetail: ({ commit }) => { - axios.get(`/api/upload-request/${router.currentRoute.params.token}`) - .then((response) => { + return new Promise((resolve, reject) => { + axios.get(`/api/upload-request/${router.currentRoute.params.token}`) + .then((response) => { + resolve(response) - commit('LOADING_STATE', { loading: false, data: [] }) + // Stop loading spinner + if (response.data.data.attributes.status === 'active') + commit('LOADING_STATE', { loading: false, data: [] }) - commit('SET_UPLOAD_REQUEST', response.data) + commit('SET_UPLOAD_REQUEST', response.data) - // Set current folder if exist - if (response.data.data.relationships.folder) { - commit('SET_CURRENT_FOLDER', response.data.data.relationships.folder) - } - }) + // Set current folder if exist + if (! router.currentRoute.params.id) { + commit('SET_CURRENT_FOLDER', response.data.data.relationships.folder) + } + }) + }) }, closeUploadRequest: ({ commit }) => { axios diff --git a/resources/js/views/FileView/UploadRequestFiles.vue b/resources/js/views/FileView/UploadRequestFiles.vue index 585597ea..9a147698 100644 --- a/resources/js/views/FileView/UploadRequestFiles.vue +++ b/resources/js/views/FileView/UploadRequestFiles.vue @@ -40,7 +40,7 @@ /> - + - +