import 'package:flowy_sdk/dispatch/dispatch.dart'; import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-folder-data-model/view.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-grid-data-model/grid.pb.dart'; import 'package:dartz/dartz.dart'; import 'package:equatable/equatable.dart'; class GridService { Future> openGrid({required String gridId}) async { await FolderEventSetLatestView(ViewId(value: gridId)).send(); final payload = GridId(value: gridId); return GridEventGetGridData(payload).send(); } Future> createRow({required String gridId, Option? upperRowId}) { CreateRowPayload payload = CreateRowPayload.create()..gridId = gridId; upperRowId?.fold(() => null, (id) => payload.startRowId = id); return GridEventCreateRow(payload).send(); } Future> getGridBlocks( {required String gridId, required List blockOrders}) { final payload = QueryGridBlocksPayload.create() ..gridId = gridId ..blockOrders.addAll(blockOrders); return GridEventGetGridBlocks(payload).send(); } Future> getFields({required String gridId, required List fieldOrders}) { final payload = QueryFieldPayload.create() ..gridId = gridId ..fieldOrders = RepeatedFieldOrder(items: fieldOrders); return GridEventGetFields(payload).send(); } } class GridRowData extends Equatable { final String gridId; final String rowId; final String blockId; final List fields; final double height; const GridRowData({ required this.gridId, required this.rowId, required this.blockId, required this.fields, required this.height, }); @override List get props => [rowId]; }