mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 16:22:14 +00:00
api resource refactoring part 4
This commit is contained in:
@@ -8,14 +8,14 @@ class NavigationFolderTreeController
|
|||||||
{
|
{
|
||||||
public function __invoke(): array
|
public function __invoke(): array
|
||||||
{
|
{
|
||||||
$folders = Folder::with('folders:id,parent_id,id,name')
|
$folders = Folder::with('folders:id,parent_id,id,name,team_folder')
|
||||||
->where('parent_id')
|
->where('parent_id')
|
||||||
->where('team_folder', false)
|
->where('team_folder', false)
|
||||||
->where('user_id', Auth::id())
|
->where('user_id', Auth::id())
|
||||||
->sortable()
|
->sortable()
|
||||||
->get(['id', 'parent_id', 'id', 'name']);
|
->get(['id', 'parent_id', 'id', 'name', 'team_folder']);
|
||||||
|
|
||||||
$teamFolders = Folder::with('folders:id,parent_id,id,name')
|
$teamFolders = Folder::with('folders:id,parent_id,id,name,team_folder')
|
||||||
->where('parent_id')
|
->where('parent_id')
|
||||||
->where('team_folder', true)
|
->where('team_folder', true)
|
||||||
->where('user_id', Auth::id())
|
->where('user_id', Auth::id())
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class RenameFileOrFolderAction
|
|||||||
public function __invoke(
|
public function __invoke(
|
||||||
RenameItemRequest $request,
|
RenameItemRequest $request,
|
||||||
string $id,
|
string $id,
|
||||||
): FolderResource|FileResource|array {
|
) {
|
||||||
|
|
||||||
// Get item
|
// Get item
|
||||||
$item = get_item($request->input('type'), $id);
|
$item = get_item($request->input('type'), $id);
|
||||||
@@ -23,11 +23,6 @@ class RenameFileOrFolderAction
|
|||||||
'name' => $request->input('name'),
|
'name' => $request->input('name'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ($request->input('type') === 'folder') {
|
return $item;
|
||||||
return new FolderResource($item);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return updated item
|
|
||||||
return new FileResource($item);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ use Auth;
|
|||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Domain\Files\Resources\FileResource;
|
use Domain\Files\Resources\FileResource;
|
||||||
use Domain\Folders\Resources\FolderResource;
|
use Domain\Folders\Resources\FolderResource;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
use Domain\Items\Requests\RenameItemRequest;
|
use Domain\Items\Requests\RenameItemRequest;
|
||||||
use Domain\Items\Actions\RenameFileOrFolderAction;
|
use Domain\Items\Actions\RenameFileOrFolderAction;
|
||||||
use Domain\Folders\Actions\UpdateFolderPropertyAction;
|
use Domain\Folders\Actions\UpdateFolderPropertyAction;
|
||||||
@@ -36,7 +35,13 @@ class RenameFileOrFolderController extends Controller
|
|||||||
($this->updateFolderProperty)($request, $id);
|
($this->updateFolderProperty)($request, $id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rename Item
|
$item = ($this->renameFileOrFolder)($request, $id);
|
||||||
return ($this->renameFileOrFolder)($request, $id);
|
|
||||||
|
if ($request->input('type') === 'folder') {
|
||||||
|
return new FolderResource($item);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return updated item
|
||||||
|
return new FileResource($item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Domain\Items\Controllers;
|
namespace Domain\Items\Controllers;
|
||||||
|
|
||||||
|
use Domain\Files\Resources\FileResource;
|
||||||
|
use Domain\Folders\Resources\FolderResource;
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
use Domain\Sharing\Models\Share;
|
use Domain\Sharing\Models\Share;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
@@ -62,10 +65,15 @@ class VisitorRenameFileOrFolderController extends Controller
|
|||||||
$item = ($this->renameFileOrFolder)($request, $id);
|
$item = ($this->renameFileOrFolder)($request, $id);
|
||||||
|
|
||||||
// Set public url
|
// Set public url
|
||||||
if ($item->type !== 'folder') {
|
if ($request->input('type') !== 'folder') {
|
||||||
$item->setPublicUrl($shared->token);
|
$item->setPublicUrl($shared->token);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response($item, 201);
|
if ($request->input('type') === 'folder') {
|
||||||
|
return response(new FolderResource($item), 201);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return updated item
|
||||||
|
return response(new FileResource($item), 201);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Domain\Localization\Controllers;
|
namespace Domain\Localization\Controllers;
|
||||||
|
|
||||||
|
use Domain\Localization\Resources\LanguageCollection;
|
||||||
|
use Domain\Localization\Resources\LanguageResource;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
use Domain\Settings\Models\Setting;
|
use Domain\Settings\Models\Setting;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Domain\Localization\Models\Language;
|
use Domain\Localization\Models\Language;
|
||||||
use Domain\Teams\Resources\LanguageResource;
|
|
||||||
use Domain\Teams\Resources\LanguageCollection;
|
|
||||||
use Domain\Localization\Requests\CreateLanguageRequest;
|
use Domain\Localization\Requests\CreateLanguageRequest;
|
||||||
use Domain\Localization\Requests\UpdateLanguageRequest;
|
use Domain\Localization\Requests\UpdateLanguageRequest;
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Domain\Sharing\Actions;
|
namespace Domain\Sharing\Actions;
|
||||||
|
|
||||||
|
use Domain\Sharing\Notifications\SharedSendViaEmail;
|
||||||
use Spatie\QueueableAction\QueueableAction;
|
use Spatie\QueueableAction\QueueableAction;
|
||||||
use Illuminate\Support\Facades\Notification;
|
use Illuminate\Support\Facades\Notification;
|
||||||
use Domain\Teams\Notifications\SharedSendViaEmail;
|
|
||||||
|
|
||||||
class SendViaEmailAction
|
class SendViaEmailAction
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,11 +2,14 @@
|
|||||||
namespace Domain\Teams\Controllers;
|
namespace Domain\Teams\Controllers;
|
||||||
|
|
||||||
use DB;
|
use DB;
|
||||||
|
use Domain\Files\Resources\FilesCollection;
|
||||||
use Domain\Folders\Resources\FolderCollection;
|
use Domain\Folders\Resources\FolderCollection;
|
||||||
|
use Domain\Folders\Resources\FolderResource;
|
||||||
use Domain\Teams\Requests\CreateTeamFolderRequest;
|
use Domain\Teams\Requests\CreateTeamFolderRequest;
|
||||||
use Domain\Teams\Requests\UpdateTeamFolderMembersRequest;
|
use Domain\Teams\Requests\UpdateTeamFolderMembersRequest;
|
||||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||||
use Domain\Files\Models\File;
|
use Domain\Files\Models\File;
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
use Domain\Folders\Models\Folder;
|
use Domain\Folders\Models\Folder;
|
||||||
@@ -29,7 +32,7 @@ class TeamFoldersController extends Controller
|
|||||||
{
|
{
|
||||||
$isHomepage = $id === 'undefined';
|
$isHomepage = $id === 'undefined';
|
||||||
$rootId = $id === 'undefined' ? null : $id;
|
$rootId = $id === 'undefined' ? null : $id;
|
||||||
$requestedFolder = $rootId ? Folder::findOrFail($rootId) : null;
|
$requestedFolder = $rootId ? new FolderResource(Folder::findOrFail($rootId)) : null;
|
||||||
$files = [];
|
$files = [];
|
||||||
|
|
||||||
$folders = Folder::with([
|
$folders = Folder::with([
|
||||||
@@ -54,11 +57,9 @@ class TeamFoldersController extends Controller
|
|||||||
|
|
||||||
// Collect folders and files to single array
|
// Collect folders and files to single array
|
||||||
return [
|
return [
|
||||||
'content' => collect([
|
'folders' => new FolderCollection($folders),
|
||||||
new FolderCollection($folders),
|
'files' => new FilesCollection($files),
|
||||||
$files
|
'root' => $requestedFolder,
|
||||||
])->collapse(),
|
|
||||||
'folder' => $requestedFolder,
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Tests\Domain\Browsing;
|
namespace Tests\Domain\Browsing;
|
||||||
|
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
@@ -59,8 +60,7 @@ class BrowseTest extends TestCase
|
|||||||
->assertStatus(200)
|
->assertStatus(200)
|
||||||
->assertExactJson([
|
->assertExactJson([
|
||||||
[
|
[
|
||||||
'name' => 'Home',
|
'name' => 'Files',
|
||||||
'location' => 'base',
|
|
||||||
'folders' => [
|
'folders' => [
|
||||||
[
|
[
|
||||||
'id' => $folder_level_1->id,
|
'id' => $folder_level_1->id,
|
||||||
@@ -68,7 +68,7 @@ class BrowseTest extends TestCase
|
|||||||
'name' => 'level 1',
|
'name' => 'level 1',
|
||||||
'items' => 2,
|
'items' => 2,
|
||||||
'trashed_items' => 2,
|
'trashed_items' => 2,
|
||||||
'type' => 'folder',
|
'team_folder' => false,
|
||||||
'folders' => [
|
'folders' => [
|
||||||
[
|
[
|
||||||
'id' => $folder_level_2->id,
|
'id' => $folder_level_2->id,
|
||||||
@@ -76,7 +76,7 @@ class BrowseTest extends TestCase
|
|||||||
'name' => 'level 2',
|
'name' => 'level 2',
|
||||||
'items' => 1,
|
'items' => 1,
|
||||||
'trashed_items' => 1,
|
'trashed_items' => 1,
|
||||||
'type' => 'folder',
|
'team_folder' => false,
|
||||||
'folders' => [
|
'folders' => [
|
||||||
[
|
[
|
||||||
'id' => $folder_level_3->id,
|
'id' => $folder_level_3->id,
|
||||||
@@ -91,7 +91,7 @@ class BrowseTest extends TestCase
|
|||||||
'updated_at' => $folder_level_3->updated_at->toJson(),
|
'updated_at' => $folder_level_3->updated_at->toJson(),
|
||||||
'items' => 0,
|
'items' => 0,
|
||||||
'trashed_items' => 0,
|
'trashed_items' => 0,
|
||||||
'type' => 'folder',
|
'team_folder' => false,
|
||||||
'folders' => [],
|
'folders' => [],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
@@ -102,13 +102,17 @@ class BrowseTest extends TestCase
|
|||||||
'name' => 'level 2 Sibling',
|
'name' => 'level 2 Sibling',
|
||||||
'items' => 0,
|
'items' => 0,
|
||||||
'trashed_items' => 0,
|
'trashed_items' => 0,
|
||||||
'type' => 'folder',
|
'team_folder' => false,
|
||||||
'folders' => [],
|
'folders' => [],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Team Folders',
|
||||||
|
'folders' => [],
|
||||||
|
],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -335,7 +339,7 @@ class BrowseTest extends TestCase
|
|||||||
|
|
||||||
$this
|
$this
|
||||||
->actingAs($user)
|
->actingAs($user)
|
||||||
->getJson('/api/browse/trash')
|
->getJson('/api/browse/trash/undefined')
|
||||||
->assertStatus(200)
|
->assertStatus(200)
|
||||||
->assertExactJson([
|
->assertExactJson([
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Tests\Domain\Sharing;
|
namespace Tests\Domain\Sharing;
|
||||||
|
|
||||||
|
use Domain\Sharing\Notifications\SharedSendViaEmail;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
use App\Users\Models\User;
|
use App\Users\Models\User;
|
||||||
use Laravel\Sanctum\Sanctum;
|
use Laravel\Sanctum\Sanctum;
|
||||||
use Domain\Files\Models\File;
|
use Domain\Files\Models\File;
|
||||||
use Domain\Folders\Models\Folder;
|
use Domain\Folders\Models\Folder;
|
||||||
use Illuminate\Support\Facades\Notification;
|
use Illuminate\Support\Facades\Notification;
|
||||||
use Domain\Teams\Notifications\SharedSendViaEmail;
|
|
||||||
|
|
||||||
class UserShareTest extends TestCase
|
class UserShareTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,17 +24,15 @@ class VisitorBrowseTest extends TestCase
|
|||||||
->assertExactJson([
|
->assertExactJson([
|
||||||
'data' => [
|
'data' => [
|
||||||
'id' => $share->id,
|
'id' => $share->id,
|
||||||
'type' => 'shares',
|
'type' => 'shared',
|
||||||
'attributes' => [
|
'attributes' => [
|
||||||
'permission' => $share->permission,
|
'permission' => $share->permission,
|
||||||
'is_protected' => false,
|
'protected' => false,
|
||||||
'item_id' => $share->item_id,
|
'item_id' => $share->item_id,
|
||||||
'expire_in' => $share->expire_in,
|
'expire_in' => $share->expire_in,
|
||||||
'token' => $share->token,
|
'token' => $share->token,
|
||||||
'link' => $share->link,
|
'link' => $share->link,
|
||||||
'type' => $share->type,
|
'type' => $share->type,
|
||||||
'created_at' => $share->created_at->toJson(),
|
|
||||||
'updated_at' => $share->updated_at->toJson(),
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
]);
|
]);
|
||||||
@@ -292,7 +290,6 @@ class VisitorBrowseTest extends TestCase
|
|||||||
'name' => 'level 2',
|
'name' => 'level 2',
|
||||||
'items' => 1,
|
'items' => 1,
|
||||||
'trashed_items' => 1,
|
'trashed_items' => 1,
|
||||||
'type' => 'folder',
|
|
||||||
'folders' => [
|
'folders' => [
|
||||||
[
|
[
|
||||||
'id' => $folder_level_3->id,
|
'id' => $folder_level_3->id,
|
||||||
@@ -300,7 +297,6 @@ class VisitorBrowseTest extends TestCase
|
|||||||
'name' => 'level 3',
|
'name' => 'level 3',
|
||||||
'items' => 0,
|
'items' => 0,
|
||||||
'trashed_items' => 0,
|
'trashed_items' => 0,
|
||||||
'type' => 'folder',
|
|
||||||
'folders' => [],
|
'folders' => [],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
@@ -311,7 +307,6 @@ class VisitorBrowseTest extends TestCase
|
|||||||
'name' => 'level 2 Sibling',
|
'name' => 'level 2 Sibling',
|
||||||
'items' => 0,
|
'items' => 0,
|
||||||
'trashed_items' => 0,
|
'trashed_items' => 0,
|
||||||
'type' => 'folder',
|
|
||||||
'folders' => [],
|
'folders' => [],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user