48 lines
1.5 KiB
Dart
48 lines
1.5 KiB
Dart
import 'package:flutter/cupertino.dart';
|
|
|
|
import 'backend/teamService.dart';
|
|
import 'backend/userService.dart';
|
|
|
|
class TeamUserSyncService with ChangeNotifier {
|
|
static final TeamUserSyncService _instance = TeamUserSyncService._internal();
|
|
factory TeamUserSyncService() => _instance;
|
|
TeamUserSyncService._internal();
|
|
|
|
final UserService _userService = UserService();
|
|
final TeamService _teamService = TeamService();
|
|
|
|
Future<bool> handleUserKicked(String email) async {
|
|
final teamId = await _userService.getUserTeamByEmail(email);
|
|
if (teamId == null) return false;
|
|
|
|
final userTeamReset = await _userService.userResetTeamByEmail(email);
|
|
final teamUpdated = await _teamService.removeUserFromTeam(email, teamId);
|
|
|
|
notifyListeners();
|
|
return userTeamReset && teamUpdated;
|
|
}
|
|
|
|
Future<bool> handleTeamRemoved(int teamId) async {
|
|
final team = await _teamService.getTeamById(teamId);
|
|
if (team == null || team.userEmails.isEmpty) return false;
|
|
|
|
for (String email in team.userEmails) {
|
|
final userTeamReset = await _userService.userResetTeamByEmail(email);
|
|
|
|
if (!userTeamReset) return false;
|
|
}
|
|
|
|
final teamRemoved = await _teamService.removeTeam(teamId);
|
|
notifyListeners();
|
|
return teamRemoved;
|
|
}
|
|
|
|
Future<bool> handleUserJoined(int teamId) async {
|
|
final userUpdated = await _userService.addTeamToUser(teamId);
|
|
final teamUpdated = await _teamService.addUserToTeam(teamId);
|
|
|
|
notifyListeners();
|
|
return userUpdated && teamUpdated;
|
|
}
|
|
}
|