feat: upgrade filament to v4 and ensure 100% test coverage

- Upgrade Filament framework from v3 to v4
   - Update all Filament resources and pages for v4 compatibility
   - Fix test suite to maintain 100% pass rate (321 tests passing)
   - Add visibility condition for ticket close action (only when not closed)
   - Update dependencies and build assets for new Filament version
   - Maintain backward compatibility while leveraging v4 improvements
This commit is contained in:
idevakk
2025-11-14 01:42:07 -08:00
parent 3706072ce5
commit 3892c48ef2
103 changed files with 1741 additions and 890 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Auth;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use App\Http\Controllers\Controller;
use Illuminate\Auth\Events\Verified;
use Illuminate\Foundation\Auth\EmailVerificationRequest;
@@ -19,7 +20,7 @@ class VerifyEmailController extends Controller
}
if ($request->user()->markEmailAsVerified()) {
/** @var \Illuminate\Contracts\Auth\MustVerifyEmail $user */
/** @var MustVerifyEmail $user */
$user = $request->user();
event(new Verified($user));

View File

@@ -2,6 +2,8 @@
namespace App\Http\Controllers;
use Log;
use Exception;
use App\NotifyMe;
use Carbon\Carbon;
use Illuminate\Http\Request;
@@ -17,7 +19,7 @@ class WebhookController extends Controller
// Validate request data
if (!$data || !isset($data['type']) || !in_array($data['type'], ['invoice', 'payment_link', 'payout'])) {
\Log::warning('Invalid Oxapay webhook data', ['data' => $data]);
Log::warning('Invalid Oxapay webhook data', ['data' => $data]);
return response('Invalid data.type', 400);
}
@@ -42,7 +44,7 @@ class WebhookController extends Controller
$orderId = $data['order_id'] ?? 'N/A';
$date = isset($data['date']) ? Carbon::createFromTimestamp($data['date'])->toDateTimeString() : now()->toDateTimeString();
\Log::info('Received Oxapay invoice payment callback', [
Log::info('Received Oxapay invoice payment callback', [
'track_id' => $trackId,
'email' => $email,
'amount' => $amount,
@@ -69,7 +71,7 @@ class WebhookController extends Controller
$description = $data['description'] ?? 'N/A';
$date = isset($data['date']) ? Carbon::createFromTimestamp($data['date'])->toDateTimeString() : now()->toDateTimeString();
\Log::info('Received Oxapay payout callback', [
Log::info('Received Oxapay payout callback', [
'track_id' => $trackId,
'status' => $data['status'] ?? 'Unknown',
'amount' => $amount,
@@ -93,8 +95,8 @@ class WebhookController extends Controller
}
return response('OK', 200);
} catch (\Exception $e) {
\Log::error('Oxapay webhook processing error', ['error' => $e->getMessage(), 'data' => $data]);
} catch (Exception $e) {
Log::error('Oxapay webhook processing error', ['error' => $e->getMessage(), 'data' => $data]);
self::sendTelegramNotification("
Failed to process Oxapay webhook\n
Type: {$data['type']}\n
@@ -104,7 +106,7 @@ class WebhookController extends Controller
return response('Processing error', 400);
}
} else {
\Log::warning('Invalid Oxapay HMAC signature', ['hmac_header' => $hmacHeader, 'calculated_hmac' => $calculatedHmac]);
Log::warning('Invalid Oxapay HMAC signature', ['hmac_header' => $hmacHeader, 'calculated_hmac' => $calculatedHmac]);
return response('Invalid HMAC signature', 400);
}
}

View File

@@ -11,7 +11,7 @@ class CheckPageSlug
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
* @param Closure(Request):Response $next
*/
public function handle(Request $request, Closure $next): Response
{

View File

@@ -12,7 +12,7 @@ class CheckUserBanned
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
* @param Closure(Request):Response $next
*/
public function handle(Request $request, Closure $next): Response
{

View File

@@ -2,6 +2,7 @@
namespace App\Http\Middleware;
use Exception;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
@@ -11,7 +12,7 @@ class Locale
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
* @param Closure(Request):Response $next
*/
public function handle(Request $request, Closure $next): Response
{
@@ -20,7 +21,7 @@ class Locale
if (in_array($locale, config('app.locales'))) {
session(['browser-locale' => $locale]);
}
} catch (\Exception $e) {
} catch (Exception $e) {
}
app()->setLocale(session('locale', session('browser-locale', config('app.settings.language', config('app.locale', 'en')))));
return $next($request);