first commit
Some checks failed
Build / run (push) Has been cancelled

This commit is contained in:
maher
2025-10-29 11:42:25 +01:00
commit 703f50a09d
4595 changed files with 385164 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
<?php
namespace App\Http\Controllers;
use App\Models\Channel;
use Common\Channels\ChannelController;
use Common\Core\Controllers\HomeController;
use Illuminate\Database\Eloquent\ModelNotFoundException;
class FallbackRouteController
{
static array $defaultRoutes = ['lists', 'titles', 'search', 'news', 'user'];
public function __invoke(string $path)
{
$parts = explode('/', $path);
if (
count($parts) > 2 ||
count($parts) < 1 ||
(count($parts) === 1 && in_array($parts[0], self::$defaultRoutes))
) {
return $this->renderClient();
}
// first try to match a channel, if none is found, fallback to rendering client side app
try {
if ($parts[0] === 'lists' && isset($parts[1])) {
request()->merge(['channelType' => 'list']);
$parts[0] = $parts[1];
$parts[1] = null;
}
if ($parts[0] === 'channel' && isset($parts[1])) {
$parts[0] = $parts[1];
$parts[1] = null;
}
$slugOrId = $parts[0];
$restriction = $parts[1] ?? null;
return $this->renderChannel($slugOrId, $restriction);
} catch (ModelNotFoundException) {
return $this->renderClient();
}
}
public function renderChannel(string $slugOrId, ?string $restriction = null)
{
$channel = app(Channel::class)->resolveRouteBinding($slugOrId);
if ($restriction) {
request()->merge(['restriction' => $restriction]);
}
return app(ChannelController::class)->show($channel);
}
public function renderClient()
{
// no need to prerender channels here, use base HomeController
request()->route()->action['uses'] = HomeController::class . '@show';
return app(HomeController::class)->show();
}
}