mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-26 10:30:38 +00:00
api resource refactoring part 3
This commit is contained in:
@@ -2,12 +2,12 @@
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use App\Users\Models\User;
|
||||
use Illuminate\Support\Collection;
|
||||
use Domain\Files\Resources\FilesCollection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class BrowseLatestFilesController
|
||||
{
|
||||
public function __invoke(): Collection
|
||||
public function __invoke(): array
|
||||
{
|
||||
$user = User::with([
|
||||
'latestUploads' => fn ($query) => $query->sortable(['created_at' => 'desc']),
|
||||
@@ -15,6 +15,9 @@ class BrowseLatestFilesController
|
||||
->where('id', Auth::id())
|
||||
->first();
|
||||
|
||||
return $user->latestUploads;
|
||||
return [
|
||||
'files' => new FilesCollection($user->latestUploads),
|
||||
'root' => null,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,14 +2,15 @@
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Files\Resources\FilesCollection;
|
||||
use Domain\Folders\Resources\FolderCollection;
|
||||
use Domain\Sharing\Models\Share;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class BrowseSharedItemsController
|
||||
{
|
||||
public function __invoke(): Collection
|
||||
public function __invoke(): array
|
||||
{
|
||||
$user_id = Auth::id();
|
||||
|
||||
@@ -36,7 +37,10 @@ class BrowseSharedItemsController
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files])
|
||||
->collapse();
|
||||
return [
|
||||
'folders' => new FolderCollection($folders),
|
||||
'files' => new FilesCollection($files),
|
||||
'root' => null,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Files\Resources\FilesCollection;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Domain\Folders\Resources\FolderCollection;
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class BrowseTrashContentController
|
||||
@@ -60,8 +63,9 @@ class BrowseTrashContentController
|
||||
|
||||
// Collect folders and files to single array
|
||||
return [
|
||||
'content' => collect([$folders, $files_trashed])->collapse(),
|
||||
'folder' => $requestedFolder,
|
||||
'folders' => new FolderCollection($folders),
|
||||
'files' => new FilesCollection($files_trashed),
|
||||
'root' => $requestedFolder,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Files\Resources\FilesCollection;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Support\Collection;
|
||||
use Domain\Folders\Resources\FolderCollection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Domain\Items\Requests\SearchRequest;
|
||||
|
||||
@@ -11,7 +12,7 @@ class SearchFilesAndFoldersController
|
||||
{
|
||||
public function __invoke(
|
||||
SearchRequest $request
|
||||
): Collection {
|
||||
): array {
|
||||
$user_id = Auth::id();
|
||||
|
||||
$query = remove_accents(
|
||||
@@ -19,17 +20,18 @@ class SearchFilesAndFoldersController
|
||||
);
|
||||
|
||||
// Search files id db
|
||||
$searched_files = File::search($query)
|
||||
$files = File::search($query)
|
||||
->where('user_id', $user_id)
|
||||
->get();
|
||||
|
||||
$searched_folders = Folder::search($query)
|
||||
$folders = Folder::search($query)
|
||||
->where('user_id', $user_id)
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$searched_folders, $searched_files])
|
||||
->collapse()
|
||||
->take(10);
|
||||
return [
|
||||
'folders' => new FolderCollection($folders),
|
||||
'files' => new FilesCollection($files),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,10 +2,13 @@
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Files\Resources\FilesCollection;
|
||||
use Domain\Folders\Resources\FolderCollection;
|
||||
use Domain\Sharing\Models\Share;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Domain\Sharing\Actions\ProtectShareRecordAction;
|
||||
use Domain\Sharing\Actions\VerifyAccessToItemAction;
|
||||
use Illuminate\Http\Resources\Json\ResourceCollection;
|
||||
|
||||
/**
|
||||
* Browse shared folder
|
||||
@@ -44,10 +47,10 @@ class VisitorBrowseFolderController
|
||||
// Set thumbnail links for public files
|
||||
$files->map(fn ($file) => $file->setPublicUrl($shared->token));
|
||||
|
||||
// Collect folders and files to single array
|
||||
return [
|
||||
'content' => collect([$folders, $files])->collapse(),
|
||||
'folder' => $requestedFolder,
|
||||
'folders' => new FolderCollection($folders),
|
||||
'files' => new FilesCollection($files),
|
||||
'root' => $requestedFolder,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
<?php
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use Domain\Files\Resources\FilesCollection;
|
||||
use Domain\Folders\Resources\FolderCollection;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Http\Request;
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Sharing\Models\Share;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Support\Collection;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Domain\Sharing\Actions\ProtectShareRecordAction;
|
||||
|
||||
@@ -23,7 +24,7 @@ class VisitorSearchFilesAndFoldersController extends Controller
|
||||
public function __invoke(
|
||||
Request $request,
|
||||
Share $shared,
|
||||
): Collection {
|
||||
): array {
|
||||
// Check ability to access protected share record
|
||||
($this->protectShareRecord)($shared);
|
||||
|
||||
@@ -64,8 +65,9 @@ class VisitorSearchFilesAndFoldersController extends Controller
|
||||
});
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files])
|
||||
->collapse()
|
||||
->take(10);
|
||||
return [
|
||||
'folders' => new FolderCollection($folders),
|
||||
'files' => new FilesCollection($files),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,32 +84,6 @@ class File extends Model
|
||||
$this->public_access = $token;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format created at date
|
||||
*/
|
||||
public function getCreatedAtAttribute(): string
|
||||
{
|
||||
return format_date(
|
||||
set_time_by_user_timezone($this->attributes['created_at']),
|
||||
__t('time')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format deleted at date reformat
|
||||
*/
|
||||
public function getDeletedAtAttribute(): string | null
|
||||
{
|
||||
if (! $this->attributes['deleted_at']) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return format_date(
|
||||
set_time_by_user_timezone($this->attributes['deleted_at']),
|
||||
__t('time')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format fileSize
|
||||
*/
|
||||
|
||||
@@ -29,12 +29,15 @@ class FileResource extends JsonResource
|
||||
'thumbnail' => $this->thumbnail,
|
||||
'metadata' => $this->metadata,
|
||||
'folder_id' => $this->folder_id,
|
||||
'updated_at' => format_date(
|
||||
'updated_at' => $this->updated_at,
|
||||
'created_at' => $this->created_at,
|
||||
'deleted_at' => $this->deleted_at,
|
||||
/*'updated_at' => format_date(
|
||||
set_time_by_user_timezone($this->updated_at), __t('time')
|
||||
),
|
||||
'created_at' => format_date(
|
||||
set_time_by_user_timezone($this->created_at), __t('time')
|
||||
),
|
||||
),*/
|
||||
],
|
||||
'relationships' => [
|
||||
$this->mergeWhen($this->shared, fn() => [
|
||||
|
||||
@@ -116,21 +116,6 @@ class Folder extends Model
|
||||
return $folders + $files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format deleted at date reformat
|
||||
*/
|
||||
public function getDeletedAtAttribute(): string | null
|
||||
{
|
||||
if (! $this->attributes['deleted_at']) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return format_date(
|
||||
set_time_by_user_timezone($this->attributes['deleted_at']),
|
||||
__t('time')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parent
|
||||
*/
|
||||
|
||||
@@ -24,12 +24,14 @@ class FolderResource extends JsonResource
|
||||
'isTeamFolder' => $this->team_folder,
|
||||
'items' => $this->items,
|
||||
'trashed_items' => $this->trashed_items,
|
||||
'updated_at' => format_date(
|
||||
'updated_at' => $this->updated_at,
|
||||
'created_at' => $this->created_at,
|
||||
/*'updated_at' => format_date(
|
||||
set_time_by_user_timezone($this->updated_at), __t('time')
|
||||
),
|
||||
'created_at' => format_date(
|
||||
set_time_by_user_timezone($this->created_at), __t('time')
|
||||
),
|
||||
),*/
|
||||
],
|
||||
'relationships' => [
|
||||
$this->mergeWhen($this->teamMembers, fn() => [
|
||||
|
||||
Reference in New Issue
Block a user