import 'package:flutter/material.dart'; import 'package:frontend_splatournament_manager/models/team.dart'; import 'package:frontend_splatournament_manager/services/team_service.dart'; class TeamProvider extends ChangeNotifier { final TeamService _teamService = TeamService(); List _teams = []; Future>? _initialLoadFuture; List get teams => _teams; Future> fetchAllTeams() async { _teams = await _teamService.getAllTeams(); notifyListeners(); return _teams; } Future> ensureTeamsLoaded() { _initialLoadFuture ??= fetchAllTeams(); return _initialLoadFuture!; } Future> refreshTeams() { _initialLoadFuture = fetchAllTeams(); return _initialLoadFuture!; } Future createTeam({ required String name, required String tag, String description = '', }) async { final team = await _teamService.createTeam( name: name, tag: tag, description: description, ); _teams = [..._teams, team]; notifyListeners(); return team; } Future updateTeam( int id, { String? name, String? tag, String? description, }) async { await _teamService.updateTeam(id, name: name, tag: tag, description: description); await refreshTeams(); } Future deleteTeam(int id) async { await _teamService.deleteTeam(id); _teams = _teams.where((t) => t.id != id).toList(); notifyListeners(); } Future> getTeamsByTournament(int tournamentId) async { return _teamService.getTeamsByTournament(tournamentId); } Future registerTeamForTournament(int tournamentId, int teamId) async { await _teamService.registerTeamForTournament(tournamentId, teamId); notifyListeners(); } Future removeTeamFromTournament(int tournamentId, int teamId) async { await _teamService.removeTeamFromTournament(tournamentId, teamId); notifyListeners(); } Future> getUserTeams() { return _teamService.getUserTeams(); } Future joinTeam(int teamId) async { await _teamService.joinTeam(teamId); notifyListeners(); } Future leaveTeam(int teamId) async { await _teamService.leaveTeam(teamId); notifyListeners(); } Future>> getTeamMembers(int teamId) { return _teamService.getTeamMembers(teamId); } }