validateEnteredPin function

Future<void> validateEnteredPin({
  1. required BuildContext context,
  2. required String flag,
  3. required SetPinStatus setPinStatus,
  4. ReduxAction<CoreState>? logoutAction,
})

Validates that the PINs provided match & are valid createPin and confirmPin

Implementation

Future<void> validateEnteredPin({
  required BuildContext context,
  required String flag,
  required SetPinStatus setPinStatus,
  ReduxAction<CoreState>? logoutAction,
}) async {
  final MiscState? miscState =
      StoreProvider.state<CoreState>(context)!.miscState;

  if (miscState!.createPin!.length == 4 && miscState.confirmPin!.length == 4) {
    if (miscState.createPin == miscState.confirmPin) {
      /// Update pinCode
      StoreProvider.dispatch<CoreState>(
        context,
        BatchUpdateMiscStateAction(pinCode: miscState.confirmPin),
      );

      switch (setPinStatus) {
        case SetPinStatus.IsSettingPin:
          await StoreProvider.dispatch<CoreState>(
              context, PhoneSignUpAction(context: context));
          return;

        case SetPinStatus.IsResettingPin:
          await StoreProvider.dispatch<CoreState>(
              context, UpdateUserPinAction(context: context));
          return;

        case SetPinStatus.IsChangingPin:
          await StoreProvider.dispatch<CoreState>(
            context,
            ChangeUserPinAction(
              pin: miscState.createPin!,
              context: context,
              logoutAction: logoutAction,
            ),
          );
          return;
      }
    } else {
      ScaffoldMessenger.of(context)
          .showSnackBar(snackbar(content: snackBarMatchingPinMessage));
    }
  }
}