| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | import 'package:appflowy/plugins/database_view/application/defines.dart';import 'package:appflowy/startup/startup.dart';import 'package:appflowy_backend/dispatch/dispatch.dart';import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart';import 'package:dartz/dartz.dart';import 'package:flutter_bloc/flutter_bloc.dart';import 'package:freezed_annotation/freezed_annotation.dart';import 'auth/auth_service.dart';part 'encrypt_secret_bloc.freezed.dart';class EncryptSecretBloc extends Bloc<EncryptSecretEvent, EncryptSecretState> {  final UserProfilePB user;  EncryptSecretBloc({required this.user})      : super(EncryptSecretState.initial()) {    on<EncryptSecretEvent>((event, emit) async {      await event.when(        setEncryptSecret: (secret) async {          if (isLoading()) {            return;          }          final payload = UserSecretPB.create()            ..encryptionSecret = secret            ..encryptionSign = user.encryptionSign            ..encryptionType = user.encryptionType            ..userId = user.id;          UserEventSetEncryptionSecret(payload).send().then((result) {            if (!isClosed) {              add(EncryptSecretEvent.didFinishCheck(result));            }          });          emit(            state.copyWith(              loadingState: const LoadingState.loading(),              successOrFail: none(),            ),          );        },        cancelInputSecret: () async {          await getIt<AuthService>().signOut();          emit(            state.copyWith(              successOrFail: none(),              isSignOut: true,            ),          );        },        didFinishCheck: (Either<Unit, FlowyError> result) {          result.fold(            (unit) {              emit(                state.copyWith(                  loadingState: const LoadingState.loading(),                  successOrFail: Some(result),                ),              );            },            (err) {              emit(                state.copyWith(                  loadingState: LoadingState.finish(right(err)),                  successOrFail: Some(result),                ),              );            },          );        },      );    });  }  bool isLoading() {    final loadingState = state.loadingState;    if (loadingState != null) {      return loadingState.when(loading: () => true, finish: (_) => false);    }    return false;  }}@freezedclass EncryptSecretEvent with _$EncryptSecretEvent {  const factory EncryptSecretEvent.setEncryptSecret(String secret) =      _SetEncryptSecret;  const factory EncryptSecretEvent.didFinishCheck(    Either<Unit, FlowyError> result,  ) = _DidFinishCheck;  const factory EncryptSecretEvent.cancelInputSecret() = _CancelInputSecret;}@freezedclass EncryptSecretState with _$EncryptSecretState {  const factory EncryptSecretState({    required Option<Either<Unit, FlowyError>> successOrFail,    required bool isSignOut,    LoadingState? loadingState,  }) = _EncryptSecretState;  factory EncryptSecretState.initial() => EncryptSecretState(        successOrFail: none(),        isSignOut: false,      );}
 |