import 'dart:async'; import 'package:cubit_form/cubit_form.dart'; import 'package:selfprivacy/logic/api_maps/cloudflare.dart'; import 'package:selfprivacy/logic/cubit/app_config/app_config_cubit.dart'; import 'package:selfprivacy/logic/cubit/forms/validations/validations.dart'; import 'package:easy_localization/easy_localization.dart'; class CloudFlareFormCubit extends FormCubit { CloudFlareFormCubit(this.initializingCubit) { var regExp = RegExp(r"\s+|[!$%^&*()@+|~=`{}\[\]:<>?,.\/]"); apiKey = FieldCubit( initalValue: '', validations: [ RequiredStringValidation('validations.required'.tr()), ValidationModel( (s) => regExp.hasMatch(s), 'validations.key_format'.tr()), LegnthStringValidationWithLenghShowing( 40, 'validations.length'.tr(args: ["40"])) ], ); super.addFields([apiKey]); } @override FutureOr onSubmit() async { initializingCubit.setCloudflareKey(apiKey.state.value); } final AppConfigCubit initializingCubit; late final FieldCubit apiKey; @override FutureOr asyncValidation() async { late bool isKeyValid; CloudflareApi apiClient = CloudflareApi(isWithToken: false); try { isKeyValid = await apiClient.isValid(apiKey.state.value); } catch (e) { addError(e); } if (!isKeyValid) { apiKey.setError('bad key'); return false; } return true; } @override Future close() async { return super.close(); } }