mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-05 18:23:48 +00:00
favourites api update
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
26
resources/js/store/modules/userAuth.js
vendored
26
resources/js/store/modules/userAuth.js
vendored
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
30
src/Domain/Folders/Requests/AddFolderToFavouritesRequest.php
Normal file
30
src/Domain/Folders/Requests/AddFolderToFavouritesRequest.php
Normal 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',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user