diff --git a/.env.testing b/.env.testing index 09adae02..510ef957 100644 --- a/.env.testing +++ b/.env.testing @@ -1,6 +1,6 @@ APP_NAME=Laravel APP_ENV=local -APP_KEY=base64:fzZomRn3E8Rb6UDR8oqFiNo8Y4L5RyX4oVVli3KiWQA= +APP_KEY=base64:yzhXnwQenw4j+JAuM4CrRiNKyIznOSnET2NJFxW66CQ= APP_DEBUG=true APP_URL=http://localhost APP_DEMO=false diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 54628c36..e142fa8b 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,75 +1,75 @@ { "/js/main.js": "/js/main.js", - "/chunks/request.js": "/chunks/request.js?id=a5136967a1882fd5", - "/chunks/request-upload.js": "/chunks/request-upload.js?id=1310f3005ea0d465", - "/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=3c2fc454c3fce8d2", - "/chunks/status-check.js": "/chunks/status-check.js?id=42f9d84c64fb105c", - "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=f858e6cd4e9e59f6", - "/chunks/database.js": "/chunks/database.js?id=c36d1bfafcf1b15e", - "/chunks/environment.js": "/chunks/environment.js?id=1cf279f28dcb597f", - "/chunks/app-setup.js": "/chunks/app-setup.js?id=2efed338e56fccab", - "/chunks/admin-account.js": "/chunks/admin-account.js?id=e8c8b0f2c83e8736", - "/chunks/shared.js": "/chunks/shared.js?id=cb259a92b961e958", - "/chunks/shared/browser.js": "/chunks/shared/browser.js?id=e712d9ff304ae80f", - "/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=75925e92aa837216", - "/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=6f17bfddfaee9d15", - "/chunks/not-found.js": "/chunks/not-found.js?id=bd6f4028c9d5f194", - "/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=f1cbdc3b62c510de", - "/chunks/admin.js": "/chunks/admin.js?id=1560aebbd0a1ec39", - "/chunks/dashboard.js": "/chunks/dashboard.js?id=50f9ca92c1fb1056", - "/chunks/invoices.js": "/chunks/invoices.js?id=2ad8029efb381c2a", - "/chunks/subscriptions.js": "/chunks/subscriptions.js?id=e081b6ee62f749d1", - "/chunks/pages.js": "/chunks/pages.js?id=e4dffd90dbd041de", - "/chunks/page-edit.js": "/chunks/page-edit.js?id=9b21bfa01a9a4cc2", - "/chunks/plans.js": "/chunks/plans.js?id=65482bb311114624", - "/chunks/users.js": "/chunks/users.js?id=46520527325c005f", - "/chunks/user-create.js": "/chunks/user-create.js?id=4210ecb12e1bc179", - "/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=aa1f1f24b8ed53ec", - "/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=28dd455e83a6ad0a", - "/chunks/user.js": "/chunks/user.js?id=8f1f08244520be73", - "/chunks/user-detail.js": "/chunks/user-detail.js?id=d22afa05b9a3757f", - "/chunks/user-storage.js": "/chunks/user-storage.js?id=4e5dba60505fbd72", - "/chunks/user-subscription.js": "/chunks/user-subscription.js?id=66ae479b7881829a", - "/chunks/user-password.js": "/chunks/user-password.js?id=2f6feb7b2fe85993", - "/chunks/user-delete.js": "/chunks/user-delete.js?id=556ee0e95b61526c", - "/chunks/plan.js": "/chunks/plan.js?id=64c2482191d0264f", - "/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=b171c0d1b134f7b4", - "/chunks/plan-settings.js": "/chunks/plan-settings.js?id=2cd26776c594e78f", - "/chunks/plan-delete.js": "/chunks/plan-delete.js?id=c70ebcff48b7f1fd", - "/chunks/payments.js": "/chunks/payments.js?id=995c8bd6ac4c5770", - "/chunks/payments/billings.js": "/chunks/payments/billings.js?id=03f371c8b1ce81da", - "/chunks/payments/settings.js": "/chunks/payments/settings.js?id=5f97f1ac47be9927", - "/chunks/app-settings.js": "/chunks/app-settings.js?id=6fd0fd89ccfdd290", - "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=0eb829fd80113549", - "/chunks/app-index.js": "/chunks/app-index.js?id=22b024b841518628", - "/chunks/app-environment.js": "/chunks/app-environment.js?id=4be35ec974ce1291", - "/chunks/app-others.js": "/chunks/app-others.js?id=44647e5dacec3146", - "/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=9c3408a70459090e", - "/chunks/app-adsense.js": "/chunks/app-adsense.js?id=abe3fd03fc6aa6b5", - "/chunks/app-server.js": "/chunks/app-server.js?id=5051f8a08707ed36", - "/chunks/app-language.js": "/chunks/app-language.js?id=0d67a5ffe354681b", - "/chunks/homepage.js": "/chunks/homepage.js?id=14c7ce5244e7ff7c", - "/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=8f0e89961cc767ef", - "/chunks/contact-us.js": "/chunks/contact-us.js?id=e6902071177114a9", - "/chunks/successfully-email-verified.js": "/chunks/successfully-email-verified.js?id=5ac8ec655bcb572a", - "/chunks/successfully-email-send.js": "/chunks/successfully-email-send.js?id=2086cf5e64520632", - "/chunks/sign-in.js": "/chunks/sign-in.js?id=25ccff57d079640f", - "/chunks/sign-up.js": "/chunks/sign-up.js?id=d19570e7be1a667b", - "/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=b3286fb8f390bbd4", - "/chunks/create-new-password.js": "/chunks/create-new-password.js?id=ba2e1007acbe3e19", - "/chunks/settings.js": "/chunks/settings.js?id=78234db26addeb1a", - "/chunks/profile.js": "/chunks/profile.js?id=9742ec84ddcbdea6", - "/chunks/settings-password.js": "/chunks/settings-password.js?id=3aecc301e7a35dcb", - "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=4e4ff51f12ad9bc3", - "/chunks/billing.js": "/chunks/billing.js?id=5bbebe710852bcb5", - "/chunks/platform.js": "/chunks/platform.js?id=1a30c39835f315e2", - "/chunks/files.js": "/chunks/files.js?id=8a50e16ec0baeff0", - "/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=4de7ebe40af1bf04", - "/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=ecc811b50dcce19d", - "/chunks/trash.js": "/chunks/trash.js?id=03f841299c5ef282", - "/chunks/team-folders.js": "/chunks/team-folders.js?id=a12cb31542faaed0", - "/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=a9679bfb8e294251", - "/chunks/invitation.js": "/chunks/invitation.js?id=26703e583c07a989", + "/chunks/request.js": "/chunks/request.js?id=c9b8c3f50861144a", + "/chunks/request-upload.js": "/chunks/request-upload.js?id=3bc3423d2305cd30", + "/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=19a0784e59d768ec", + "/chunks/status-check.js": "/chunks/status-check.js?id=9239a586761b912d", + "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=ba76b9a8adbfdc0b", + "/chunks/database.js": "/chunks/database.js?id=5113b0d4284f764f", + "/chunks/environment.js": "/chunks/environment.js?id=e4fdb87ff173d48a", + "/chunks/app-setup.js": "/chunks/app-setup.js?id=cbe7bfed06400736", + "/chunks/admin-account.js": "/chunks/admin-account.js?id=78d257775f5fc485", + "/chunks/shared.js": "/chunks/shared.js?id=4fcd1523d9ae7ba1", + "/chunks/shared/browser.js": "/chunks/shared/browser.js?id=3fd9baddb7333c24", + "/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=a6063bed9be75a09", + "/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=b5519d193bce2339", + "/chunks/not-found.js": "/chunks/not-found.js?id=d31bd699138cf828", + "/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=26798085f527d955", + "/chunks/admin.js": "/chunks/admin.js?id=0124d577053f54d3", + "/chunks/dashboard.js": "/chunks/dashboard.js?id=5ab55a12214433c8", + "/chunks/invoices.js": "/chunks/invoices.js?id=799928609f57ca10", + "/chunks/subscriptions.js": "/chunks/subscriptions.js?id=a0c4f59d0ec4aee0", + "/chunks/pages.js": "/chunks/pages.js?id=bb5cc8327ca846a3", + "/chunks/page-edit.js": "/chunks/page-edit.js?id=0bdc8a5935fd2197", + "/chunks/plans.js": "/chunks/plans.js?id=76398906ad873fc3", + "/chunks/users.js": "/chunks/users.js?id=b6629338e26b8313", + "/chunks/user-create.js": "/chunks/user-create.js?id=40254ae98547761e", + "/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=18f9d1ab17996507", + "/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=40e9f287b5258a40", + "/chunks/user.js": "/chunks/user.js?id=cf9a2a0d8c1fa1d9", + "/chunks/user-detail.js": "/chunks/user-detail.js?id=ff6c1fc63a372d96", + "/chunks/user-storage.js": "/chunks/user-storage.js?id=4f76194837113969", + "/chunks/user-subscription.js": "/chunks/user-subscription.js?id=797d77ff2b1c08cc", + "/chunks/user-password.js": "/chunks/user-password.js?id=900ae71c3d4199ea", + "/chunks/user-delete.js": "/chunks/user-delete.js?id=a3091617207684e5", + "/chunks/plan.js": "/chunks/plan.js?id=3e7b0b34c2247e6c", + "/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=36d925def6a82cb2", + "/chunks/plan-settings.js": "/chunks/plan-settings.js?id=df990f928a77c355", + "/chunks/plan-delete.js": "/chunks/plan-delete.js?id=630deb1fc4e17ed9", + "/chunks/payments.js": "/chunks/payments.js?id=d59a2a18b680d65c", + "/chunks/payments/billings.js": "/chunks/payments/billings.js?id=27d6c1b58dbd1e6c", + "/chunks/payments/settings.js": "/chunks/payments/settings.js?id=450162f937b7b2fd", + "/chunks/app-settings.js": "/chunks/app-settings.js?id=b0d1082fdcbbd17c", + "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=8ba3feb2cc81a2c3", + "/chunks/app-index.js": "/chunks/app-index.js?id=0c50096e8de09288", + "/chunks/app-environment.js": "/chunks/app-environment.js?id=3436286fd625f8b7", + "/chunks/app-others.js": "/chunks/app-others.js?id=dd23507db4551d0a", + "/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=f79027ce1f1f4c4b", + "/chunks/app-adsense.js": "/chunks/app-adsense.js?id=c7e7dc2975317062", + "/chunks/app-server.js": "/chunks/app-server.js?id=ff66d34e90ff98a0", + "/chunks/app-language.js": "/chunks/app-language.js?id=46d7fc713d36cea8", + "/chunks/homepage.js": "/chunks/homepage.js?id=0dabc3156ab1336c", + "/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=9553d7a2912cb901", + "/chunks/contact-us.js": "/chunks/contact-us.js?id=ea99d85aa3500595", + "/chunks/successfully-email-verified.js": "/chunks/successfully-email-verified.js?id=c26cb144101e7c79", + "/chunks/successfully-email-send.js": "/chunks/successfully-email-send.js?id=170d814982e1c475", + "/chunks/sign-in.js": "/chunks/sign-in.js?id=c648cb698176a993", + "/chunks/sign-up.js": "/chunks/sign-up.js?id=3d7559511768cd0e", + "/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=27cda9364b6593d8", + "/chunks/create-new-password.js": "/chunks/create-new-password.js?id=2f0401ee2fc148c4", + "/chunks/settings.js": "/chunks/settings.js?id=008d159c8084c66f", + "/chunks/profile.js": "/chunks/profile.js?id=3e24bb5e1f52d4bb", + "/chunks/settings-password.js": "/chunks/settings-password.js?id=d00bf503d8126dc4", + "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=092e324aad54656b", + "/chunks/billing.js": "/chunks/billing.js?id=115c25478cee576d", + "/chunks/platform.js": "/chunks/platform.js?id=38562970e9950381", + "/chunks/files.js": "/chunks/files.js?id=a74bc8acc7ea876a", + "/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=c6ed26eaace65f01", + "/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=6adbb309c700eaf7", + "/chunks/trash.js": "/chunks/trash.js?id=32b84e2c25561372", + "/chunks/team-folders.js": "/chunks/team-folders.js?id=dc85357a1433f4e4", + "/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=3168dd6a723f72f1", + "/chunks/invitation.js": "/chunks/invitation.js?id=424b2783d9785a09", "/css/tailwind.css": "/css/tailwind.css", "/css/app.css": "/css/app.css" } diff --git a/resources/js/store/modules/userAuth.js b/resources/js/store/modules/userAuth.js index 5ee0dc2a..dbf56e30 100644 --- a/resources/js/store/modules/userAuth.js +++ b/resources/js/store/modules/userAuth.js @@ -64,43 +64,33 @@ const actions = { .catch(() => this.$isSomethingWrong()) }, addToFavourites: (context, folder) => { - let addFavourites = [] let items = [folder] // If dont coming single folder get folders to add to favourites from clipboard if (!folder) items = context.getters.clipboard - items.forEach((item) => { + let itemsToFavourites = items.map((item) => { if (item.data.type === 'folder') { - if ( - context.getters.user.data.relationships.favourites.data.find((folder) => folder.id === item.data.id) - ) + if (context.getters.user.data.relationships.favourites.data.find((folder) => folder.id === item.data.id)) return - addFavourites.push({ id: item.data.id }) + return item.data.id; } }) - // If dont coming single folder clear the selected folders in clipboard - if (!folder) { - context.commit('CLIPBOARD_CLEAR') - } - - let pushToFavorites = [] - // Check is favorites already don't include some of pushed folders - items.map((item) => { + let favouritesWidget = items.map((item) => { if (!context.getters.user.data.relationships.favourites.data.find((folder) => folder.data.id === item.id)) { - pushToFavorites.push(item) + return item } }) - // Add to storage - context.commit('ADD_TO_FAVOURITES', pushToFavorites) + // Add to favourites UI widget + context.commit('ADD_TO_FAVOURITES', favouritesWidget) axios .post(context.getters.api + '/folders/favourites', { - folders: addFavourites, + ids: itemsToFavourites, }) .catch(() => { Vue.prototype.$isSomethingWrong() diff --git a/src/Domain/Folders/Controllers/FavouriteController.php b/src/Domain/Folders/Controllers/FavouriteController.php index 778aba65..140cae43 100644 --- a/src/Domain/Folders/Controllers/FavouriteController.php +++ b/src/Domain/Folders/Controllers/FavouriteController.php @@ -1,54 +1,59 @@ 'success', + 'message' => 'Folder was successfully added into your favourites folders', + ]; - foreach ($request->input('folders') as $id) { - if (is_demo_account()) { - return $user->favouriteFolders->makeHidden(['pivot']); - } + // Return success response for the demo response + if (is_demo_account()) { + return response()->json($successResponse, 201); + } - // Add folder to user favourites - $user + // Add folder into user favourites + foreach ($request->input('ids') as $id) { + Auth::user() ->favouriteFolders() ->syncWithoutDetaching($id); } - // Return updated favourites - return response($user->favouriteFolders, 204); + // Return success response + return response()->json($successResponse, 201); } /** * Remove folder from user favourites */ - public function destroy(string $id): Response + public function destroy(string $id): JsonResponse { - $user = Auth::user(); + $successResponse = [ + 'type' => 'success', + 'message' => 'Folder was successfully removed from your favourites folders', + ]; if (is_demo_account()) { - return $user->favouriteFolders->makeHidden(['pivot']); + return response()->json($successResponse, 201); } // Remove folder from user favourites - $user + Auth::user() ->favouriteFolders() ->detach($id); // Return updated favourites - return response($user->favouriteFolders, 204); + return response()->json($successResponse, 201); } } diff --git a/src/Domain/Folders/Requests/AddFolderToFavouritesRequest.php b/src/Domain/Folders/Requests/AddFolderToFavouritesRequest.php new file mode 100644 index 00000000..a09233f5 --- /dev/null +++ b/src/Domain/Folders/Requests/AddFolderToFavouritesRequest.php @@ -0,0 +1,30 @@ + 'required|array', + 'ids.*' => 'required|uuid', + ]; + } +} diff --git a/tests/Domain/Folders/FavouriteFolderTest.php b/tests/Domain/Folders/FavouriteFolderTest.php index 1151f964..7e20e527 100644 --- a/tests/Domain/Folders/FavouriteFolderTest.php +++ b/tests/Domain/Folders/FavouriteFolderTest.php @@ -22,10 +22,10 @@ class FavouriteFolderTest extends TestCase $this ->actingAs($user) ->postJson('/api/folders/favourites', [ - 'folders' => [ + 'ids' => [ $folder->id, ], - ])->assertStatus(204); + ])->assertStatus(201); $this->assertDatabaseHas('favourite_folder', [ 'user_id' => $user->id, @@ -52,7 +52,7 @@ class FavouriteFolderTest extends TestCase $this ->actingAs($user) ->deleteJson("/api/folders/favourites/$folder->id") - ->assertStatus(204); + ->assertStatus(201); $this->assertDatabaseMissing('favourite_folder', [ 'user_id' => $user->id,