import 'package:selfprivacy/config/get_it_config.dart'; import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server.dart'; import 'package:selfprivacy/logic/common_enum/common_enum.dart'; import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_dependend_cubit.dart'; import 'package:selfprivacy/logic/models/json/api_token.dart'; part 'devices_state.dart'; class ApiDevicesCubit extends ServerInstallationDependendCubit { ApiDevicesCubit(final ServerInstallationCubit serverInstallationCubit) : super(serverInstallationCubit, const ApiDevicesState.initial()); final ServerApi api = ServerApi(); @override void load() async { if (serverInstallationCubit.state is ServerInstallationFinished) { _refetch(); } } Future refresh() async { emit(const ApiDevicesState([], LoadingStatus.refreshing)); _refetch(); } void _refetch() async { final List? devices = await _getApiTokens(); if (devices != null) { emit(ApiDevicesState(devices, LoadingStatus.success)); } else { emit(const ApiDevicesState([], LoadingStatus.error)); } } Future?> _getApiTokens() async { final GenericResult> response = await api.getApiTokens(); if (response.success) { return response.data; } else { return null; } } Future deleteDevice(final ApiToken device) async { final GenericResult response = await api.deleteApiToken(device.name); if (response.success) { emit( ApiDevicesState( state.devices.where((final d) => d.name != device.name).toList(), LoadingStatus.success, ), ); } else { getIt() .showSnackBar(response.message ?? 'Error deleting device'); } } Future getNewDeviceKey() async { final GenericResult response = await api.createDeviceToken(); if (response.success) { return response.data; } else { getIt().showSnackBar( response.message ?? 'Error getting new device key', ); return null; } } @override void clear() { emit(const ApiDevicesState.initial()); } }