2021-07-26 11:51:39 +08:00
|
|
|
import 'package:dartz/dartz.dart';
|
|
|
|
import 'package:flowy_sdk/protobuf/flowy-user/errors.pb.dart';
|
|
|
|
import 'package:flowy_sdk/protobuf/flowy-user/user_detail.pb.dart';
|
|
|
|
import 'package:flowy_sdk/protobuf/flowy-workspace/errors.pb.dart';
|
2021-07-26 13:51:41 +08:00
|
|
|
import 'package:flowy_sdk/protobuf/flowy-workspace/workspace_create.pb.dart';
|
2021-07-26 11:51:39 +08:00
|
|
|
|
2021-07-26 13:51:41 +08:00
|
|
|
export 'package:flowy_sdk/protobuf/flowy-workspace/workspace_create.pb.dart';
|
2021-07-26 11:51:39 +08:00
|
|
|
export 'package:flowy_sdk/protobuf/flowy-user/errors.pb.dart';
|
|
|
|
export 'package:flowy_sdk/protobuf/flowy-user/user_detail.pb.dart';
|
|
|
|
|
2021-07-30 08:43:10 +08:00
|
|
|
typedef UserCreateWorkspaceCallback = void Function(
|
|
|
|
Either<List<Workspace>, WorkspaceError> workspacesOrFailed);
|
|
|
|
typedef UserDeleteWorkspaceCallback = void Function(
|
|
|
|
Either<List<Workspace>, WorkspaceError> workspacesOrFailed);
|
|
|
|
|
2021-07-26 11:51:39 +08:00
|
|
|
abstract class IUser {
|
2021-07-26 13:51:41 +08:00
|
|
|
UserDetail get user;
|
2021-07-26 11:51:39 +08:00
|
|
|
Future<Either<UserDetail, UserError>> fetchUserDetail(String userId);
|
2021-07-26 13:51:41 +08:00
|
|
|
Future<Either<List<Workspace>, WorkspaceError>> fetchWorkspaces();
|
|
|
|
Future<Either<Unit, WorkspaceError>> deleteWorkspace(String workspaceId);
|
2021-07-26 11:51:39 +08:00
|
|
|
Future<Either<Unit, UserError>> signOut();
|
|
|
|
}
|
2021-07-30 08:43:10 +08:00
|
|
|
|
|
|
|
abstract class IUserWatch {
|
|
|
|
void startWatching(
|
|
|
|
{UserCreateWorkspaceCallback? createWorkspaceCallback,
|
|
|
|
UserDeleteWorkspaceCallback? deleteWorkspaceCallback});
|
|
|
|
|
|
|
|
Future<void> stopWatching();
|
|
|
|
}
|