import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:frontend_splatournament_manager/models/tournament.dart'; import 'package:http/http.dart' as http; class TournamentProvider extends ChangeNotifier { static const String baseUrl = "http://10.0.2.2:3000"; List _availableTournaments = []; Future>? _initialLoadFuture; List get availableTournaments => _availableTournaments; Future> _fetchTournaments() async { final response = await http.get(Uri.parse('$baseUrl/tournaments')); if (response.statusCode != HttpStatus.ok) { throw Exception('Failed to load tournaments (${response.statusCode})'); } final List list = json.decode(response.body); return list.map((json) => Tournament.fromJson(json)).toList(); } Future> fetchAvailableTournaments() async { _availableTournaments = await _fetchTournaments(); notifyListeners(); return _availableTournaments; } Future> ensureTournamentsLoaded() { _initialLoadFuture ??= fetchAvailableTournaments(); return _initialLoadFuture!; } Future> refreshAvailableTournaments() { _initialLoadFuture = fetchAvailableTournaments(); return _initialLoadFuture!; } }