app_service.dart 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. final String appId;
  10. AppService({
  11. required this.appId,
  12. });
  13. Future<Either<AppPB, FlowyError>> getAppDesc({required String appId}) {
  14. final payload = AppIdPB.create()..value = appId;
  15. return FolderEventReadApp(payload).send();
  16. }
  17. Future<Either<ViewPB, FlowyError>> createView({
  18. required String appId,
  19. required String name,
  20. required String desc,
  21. required PluginDataType dataType,
  22. required PluginType pluginType,
  23. }) {
  24. final payload = CreateViewPayloadPB.create()
  25. ..belongToId = appId
  26. ..name = name
  27. ..desc = desc
  28. ..dataType = dataType
  29. ..pluginType = pluginType;
  30. return FolderEventCreateView(payload).send();
  31. }
  32. Future<Either<List<ViewPB>, FlowyError>> getViews({required String appId}) {
  33. final payload = AppIdPB.create()..value = appId;
  34. return FolderEventReadApp(payload).send().then((result) {
  35. return result.fold(
  36. (app) => left(app.belongings.items),
  37. (error) => right(error),
  38. );
  39. });
  40. }
  41. Future<Either<Unit, FlowyError>> delete({required String appId}) {
  42. final request = AppIdPB.create()..value = appId;
  43. return FolderEventDeleteApp(request).send();
  44. }
  45. Future<Either<Unit, FlowyError>> updateApp(
  46. {required String appId, String? name}) {
  47. UpdateAppPayloadPB payload = UpdateAppPayloadPB.create()..appId = appId;
  48. if (name != null) {
  49. payload.name = name;
  50. }
  51. return FolderEventUpdateApp(payload).send();
  52. }
  53. Future<Either<Unit, FlowyError>> moveView({
  54. required String viewId,
  55. required int fromIndex,
  56. required int toIndex,
  57. }) {
  58. final payload = MoveFolderItemPayloadPB.create()
  59. ..itemId = viewId
  60. ..from = fromIndex
  61. ..to = toIndex
  62. ..ty = MoveFolderItemType.MoveView;
  63. return FolderEventMoveFolderItem(payload).send();
  64. }
  65. }