Files
ladill-meet/app/Http/Controllers/WalletBalanceController.php
T
isaaccladandCursor d19c131428
Deploy Ladill Meet / deploy (push) Successful in 1m35s
Fix join 500, wallet dropdown balance, and launcher Meet entry.
Handle billing API failures gracefully on session start, add wallet.balance JSON endpoint, and sync Meet into the app launcher.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-01 16:50:02 +00:00

41 lines
1.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Services\Billing\BillingClient;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
/**
* Lightweight wallet balance for the avatar dropdown widget.
*/
class WalletBalanceController extends Controller
{
public function balance(Request $request, BillingClient $billing): JsonResponse
{
$publicId = (string) $request->user()->public_id;
$minor = Cache::remember("wallet_balance:{$publicId}", now()->addSeconds(30), function () use ($billing, $publicId) {
try {
return $billing->balanceMinor($publicId);
} catch (\Throwable) {
return null;
}
});
if ($minor === null) {
return response()->json(['available' => false]);
}
$currency = (string) config('billing.currency', 'GHS');
return response()->json([
'available' => true,
'balance_minor' => $minor,
'currency' => $currency,
'formatted' => $currency.' '.number_format($minor / 100, 2),
]);
}
}