handler method

  1. @override
FutureOr<Response> handler()
override

Must be implemented

Implementation

@override
FutureOr<Response> handler() async {
  final eventData = jsonDecode(await request.readAsString());
  if (eventData.isEmpty) return _badRequest('User data is required.');

  final userId = eventData['id'];
  if (userId == null) {
    return _badRequest('User ID is missing in the request.');
  }

  try {
    final user = await userRepository.getUser(userId);

    await userRepository.banUser(
      userId: userId,
      blocked: user.blocked!,
    );

    await userRepository.banUserInFirebase(user.firebaseKey);

    await userRepository.refreshUserToken(
      userId: userId,
      email: user.email,
      firebaseKey: user.firebaseKey,
    );

    return Response.ok(
      'UserBlockController User $userId has been banned and '
      'token refreshed successfully!',
      headers: {'Content-Type': 'application/json'},
    );
  } catch (e) {
    final errorMessage = 'Error for user with ID: $userId. Error: $e';
    print(errorMessage);
    return Response.internalServerError(
      body: jsonEncode({'Error in UserBlockController: ': errorMessage}),
      headers: {'Content-Type': 'application/json'},
    );
  }
}