Add transfer search and OneDrive-style Files storage UI.
Deploy Ladill Transfer / deploy (push) Successful in 29s

Transfers now lists all shares with filters and pagination; Files becomes a selectable cloud view with download, share, delete, move, and open-in-email actions.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-06-08 20:59:05 +00:00
co-authored by Cursor
parent b36148eeb6
commit 19170d6bc7
15 changed files with 1083 additions and 59 deletions
@@ -28,15 +28,34 @@ class TransferController extends Controller
public function index(Request $request): View
{
$account = ladill_account();
$search = trim((string) $request->query('q', ''));
$status = (string) $request->query('status', 'all');
$sort = (string) $request->query('sort', 'newest');
$transfers = Transfer::query()
->where('user_id', $account->id)
->accessible()
->where('status', '!=', Transfer::STATUS_DELETED)
->when($search !== '', function ($query) use ($search) {
$like = '%'.$search.'%';
$query->where(function ($inner) use ($like) {
$inner->where('title', 'like', $like)
->orWhere('message', 'like', $like)
->orWhere('recipient_email', 'like', $like)
->orWhereHas('files', fn ($files) => $files->where('original_name', 'like', $like));
});
})
->when($status === 'active', fn ($query) => $query->accessible())
->when($status === 'grace', fn ($query) => $query->where('status', Transfer::STATUS_GRACE))
->when($status === 'expired', fn ($query) => $query->where('status', Transfer::STATUS_EXPIRED))
->with(['qrCode', 'files'])
->latest()
->paginate(20);
->when($sort === 'oldest', fn ($query) => $query->oldest())
->when($sort === 'title', fn ($query) => $query->orderBy('title'))
->when($sort === 'downloads', fn ($query) => $query->orderByDesc('downloads_total'))
->when($sort === 'newest', fn ($query) => $query->latest())
->paginate(20)
->withQueryString();
return view('transfer.transfers.index', compact('transfers'));
return view('transfer.transfers.index', compact('transfers', 'search', 'status', 'sort'));
}
public function create(): View