added infinite scroll in browsing

This commit is contained in:
Milos Holba
2022-04-06 17:40:44 +02:00
parent 5531be6640
commit 4379daa079
31 changed files with 555 additions and 335 deletions
@@ -4,12 +4,11 @@ namespace Domain\Browsing\Controllers;
use Domain\Files\Models\File;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\Auth;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Resources\FolderCollection;
use Illuminate\Http\Request;
class BrowseTrashContentController
{
public function __invoke(string $id): array
public function __invoke(Request $request, string $id): array
{
$user_id = Auth::id();
$root_id = $id === 'undefined' ? null : $id;
@@ -29,43 +28,43 @@ class BrowseTrashContentController
->sortable()
->get();
// Collect folders and files to single array
return [
'folders' => new FolderCollection($folders),
'files' => new FilesCollection($files),
'root' => $requestedFolder,
];
}
// Get folders and files
$folders_trashed = Folder::onlyTrashed()
} else {
// Get folders and files
$folders_trashed = Folder::onlyTrashed()
->with(['trashedFolders', 'parent'])
->where('user_id', $user_id)
->get(['parent_id', 'id', 'name']);
$folders = Folder::onlyTrashed()
->with(['parent'])
->where('user_id', $user_id)
->whereIn('id', filter_folders_ids($folders_trashed))
->sortable()
->get();
$folders = Folder::onlyTrashed()
->with(['parent'])
->where('user_id', $user_id)
->whereIn('id', filter_folders_ids($folders_trashed))
->sortable()
->get();
// Get files trashed
$files_trashed = File::onlyTrashed()
->with(['parent'])
->where('user_id', $user_id)
->where(function ($query) use ($folders_trashed) {
$query->whereNull('parent_id');
$query->orWhereNotIn('parent_id', array_values(array_unique(recursiveFind($folders_trashed->toArray(), 'id'))));
})
->sortable()
->get();
// Get files trashed
$files = File::onlyTrashed()
->with(['parent'])
->where('user_id', $user_id)
->where(function ($query) use ($folders_trashed) {
$query->whereNull('parent_id');
$query->orWhereNotIn('parent_id', array_values(array_unique(recursiveFind($folders_trashed->toArray(), 'id'))));
})
->sortable()
->get();
}
list($data, $paginate, $links) = groupPaginate($request, $folders, $files);
// Collect folders and files to single array
return [
'folders' => new FolderCollection($folders),
'files' => new FilesCollection($files_trashed),
'root' => $requestedFolder,
'data' => $data,
'links' => $links,
'meta' => [
'paginate' => $paginate,
'root' => $requestedFolder,
]
];
}
}