auth_repo.dart 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import 'package:dartz/dartz.dart';
  2. import 'package:flowy_sdk/dispatch/dispatch.dart';
  3. import 'package:flowy_sdk/protobuf/flowy-user/protobuf.dart';
  4. class AuthRepository {
  5. Future<Either<UserProfile, UserError>> signIn({required String? email, required String? password}) {
  6. //
  7. final request = SignInRequest.create()
  8. ..email = email ?? ''
  9. ..password = password ?? '';
  10. return UserEventSignIn(request).send();
  11. }
  12. Future<Either<Tuple2<UserProfile, String>, UserError>> signUp(
  13. {required String? name, required String? password, required String? email}) {
  14. final request = SignUpRequest.create()
  15. ..email = email ?? ''
  16. ..name = name ?? ''
  17. ..password = password ?? '';
  18. return UserEventSignUp(request).send().then((result) {
  19. return result.fold((userProfile) async {
  20. return await WorkspaceEventCreateDefaultWorkspace().send().then((result) {
  21. return result.fold((workspaceIdentifier) {
  22. return left(Tuple2(userProfile, workspaceIdentifier.workspaceId));
  23. }, (error) {
  24. throw UnimplementedError;
  25. });
  26. });
  27. }, (error) => right(error));
  28. });
  29. }
  30. Future<Either<Unit, UserError>> signOut() {
  31. return UserEventSignOut().send();
  32. }
  33. }