File: /var/www/html/app/Livewire/Pages/Services.php
<?php
namespace App\Livewire\Pages;
use Livewire\Component;
use App\Services\ApiEndpoints;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Cache;
class Services extends Component
{
public $gigs = [];
public $page = 1; // Tracks the current page
public $canLoadMore = true; // Tracks if more gigs are available
public function mount()
{
$this->loadGigs();
$this->loadCats();
}
public $cats;
public function loadCats()
{
$this->cats = Cache::remember('browse_category', now()->addMonth(), function () {
return Http::get(ApiEndpoints::getCategory())->json()['data'];
});
}
public function loadGigs()
{
// Fetch gigs from the API
$response = Http::post(ApiEndpoints::getNearbyGig(), [
'page' => $this->page,
'per_page' => 20,
])->json();
$data = $response['gig'] ?? [];
$this->gigs = array_merge($this->gigs, $data);
// Check if more gigs are available
$this->canLoadMore = $response['current_page'] < $response['total_pages'];
$this->page++; // Increment page for the next request
}
public function render()
{
return view('livewire.pages.services');
}
}