import 'dart:async'; import 'package:dartz/dartz.dart'; import 'package:flowy_sdk/dispatch/dispatch.dart'; import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-folder/app.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-folder/view.pb.dart'; import 'package:app_flowy/startup/plugin/plugin.dart'; class AppService { Future> readApp({required String appId}) { final payload = AppIdPB.create()..value = appId; return FolderEventReadApp(payload).send(); } Future> createView({ required String appId, required String name, required String desc, required ViewDataTypePB dataType, required PluginType pluginType, required ViewLayoutTypePB layout, }) { var payload = CreateViewPayloadPB.create() ..belongToId = appId ..name = name ..desc = desc ..dataType = dataType ..layout = layout; return FolderEventCreateView(payload).send(); } Future, FlowyError>> getViews({required String appId}) { final payload = AppIdPB.create()..value = appId; return FolderEventReadApp(payload).send().then((result) { return result.fold( (app) => left(app.belongings.items), (error) => right(error), ); }); } Future> delete({required String appId}) { final request = AppIdPB.create()..value = appId; return FolderEventDeleteApp(request).send(); } Future> updateApp( {required String appId, String? name}) { UpdateAppPayloadPB payload = UpdateAppPayloadPB.create()..appId = appId; if (name != null) { payload.name = name; } return FolderEventUpdateApp(payload).send(); } Future> moveView({ required String viewId, required int fromIndex, required int toIndex, }) { final payload = MoveFolderItemPayloadPB.create() ..itemId = viewId ..from = fromIndex ..to = toIndex ..ty = MoveFolderItemType.MoveView; return FolderEventMoveFolderItem(payload).send(); } }