selfprivacy.org.app/lib/logic/cubit/forms/setup/initializing/provider_form_cubit.dart
NaiJi bd33b8d679 feat: Implement distinction for connection errors on initialing page
Now it's 'false' when api token is invalid and null response if couldn't connect at all, to show different kinds of errors to the user
2022-11-28 22:51:37 +04:00

53 lines
1.3 KiB
Dart

import 'dart:async';
import 'package:cubit_form/cubit_form.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
class ProviderFormCubit extends FormCubit {
ProviderFormCubit(this.serverInstallationCubit) {
//final int tokenLength =
// serverInstallationCubit.serverProviderApiTokenValidation().length;
apiKey = FieldCubit(
initalValue: '',
validations: [
RequiredStringValidation('validations.required'.tr()),
//LengthStringNotEqualValidation(tokenLength),
],
);
super.addFields([apiKey]);
}
@override
FutureOr<void> onSubmit() async {
serverInstallationCubit.setServerProviderKey(apiKey.state.value);
}
final ServerInstallationCubit serverInstallationCubit;
late final FieldCubit<String> apiKey;
@override
FutureOr<bool> asyncValidation() async {
bool? isKeyValid;
try {
isKeyValid = await serverInstallationCubit
.isServerProviderApiTokenValid(apiKey.state.value);
} catch (e) {
addError(e);
}
if (isKeyValid == null) {
apiKey.setError('');
return false;
}
if (!isKeyValid) {
apiKey.setError('initializing.provider_bad_key_error'.tr());
}
return isKeyValid;
}
}