favourites api update

This commit is contained in:
Čarodej
2022-05-03 06:59:31 +02:00
parent c2d53479e8
commit 4f9fb3991c
6 changed files with 136 additions and 111 deletions

View File

@@ -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

View File

@@ -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"
}

View File

@@ -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()

View File

@@ -1,54 +1,59 @@
<?php
namespace Domain\Folders\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Collection;
use Domain\Folders\Requests\AddFolderToFavouritesRequest;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\JsonResponse;
class FavouriteController extends Controller
{
/**
* Add folder to user favourites
* todo: pridat validator ako AddToFavouritesRequest
*/
public function store(Request $request): Response|Collection
public function store(AddFolderToFavouritesRequest $request): JsonResponse
{
$user = Auth::user();
$successResponse = [
'type' => '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);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Domain\Folders\Requests;
use Illuminate\Foundation\Http\FormRequest;
class AddFolderToFavouritesRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'ids' => 'required|array',
'ids.*' => 'required|uuid',
];
}
}

View File

@@ -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,