app_service.dart 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import 'dart:async';
  2. import 'package:dartz/dartz.dart';
  3. import 'package:flowy_sdk/dispatch/dispatch.dart';
  4. import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
  5. import 'package:flowy_sdk/protobuf/flowy-folder/app.pb.dart';
  6. import 'package:flowy_sdk/protobuf/flowy-folder/view.pb.dart';
  7. import 'package:app_flowy/startup/plugin/plugin.dart';
  8. class AppService {
  9. Future<Either<AppPB, FlowyError>> readApp({required String appId}) {
  10. final payload = AppIdPB.create()..value = appId;
  11. return FolderEventReadApp(payload).send();
  12. }
  13. Future<Either<ViewPB, FlowyError>> createView({
  14. required String appId,
  15. required String name,
  16. String? desc,
  17. required ViewDataTypePB dataType,
  18. required PluginType pluginType,
  19. required ViewLayoutTypePB layoutType,
  20. }) {
  21. var payload = CreateViewPayloadPB.create()
  22. ..belongToId = appId
  23. ..name = name
  24. ..desc = desc ?? ""
  25. ..dataType = dataType
  26. ..layout = layoutType;
  27. return FolderEventCreateView(payload).send();
  28. }
  29. Future<Either<List<ViewPB>, FlowyError>> getViews({required String appId}) {
  30. final payload = AppIdPB.create()..value = appId;
  31. return FolderEventReadApp(payload).send().then((result) {
  32. return result.fold(
  33. (app) => left(app.belongings.items),
  34. (error) => right(error),
  35. );
  36. });
  37. }
  38. Future<Either<Unit, FlowyError>> delete({required String appId}) {
  39. final request = AppIdPB.create()..value = appId;
  40. return FolderEventDeleteApp(request).send();
  41. }
  42. Future<Either<Unit, FlowyError>> deleteView({required String viewId}) {
  43. final request = RepeatedViewIdPB.create()..items.add(viewId);
  44. return FolderEventDeleteView(request).send();
  45. }
  46. Future<Either<Unit, FlowyError>> updateApp(
  47. {required String appId, String? name}) {
  48. UpdateAppPayloadPB payload = UpdateAppPayloadPB.create()..appId = appId;
  49. if (name != null) {
  50. payload.name = name;
  51. }
  52. return FolderEventUpdateApp(payload).send();
  53. }
  54. Future<Either<Unit, FlowyError>> moveView({
  55. required String viewId,
  56. required int fromIndex,
  57. required int toIndex,
  58. }) {
  59. final payload = MoveFolderItemPayloadPB.create()
  60. ..itemId = viewId
  61. ..from = fromIndex
  62. ..to = toIndex
  63. ..ty = MoveFolderItemType.MoveView;
  64. return FolderEventMoveFolderItem(payload).send();
  65. }
  66. }