diff --git a/frontend/app_flowy/lib/workspace/application/grid/block/block_cache.dart b/frontend/app_flowy/lib/workspace/application/grid/block/block_cache.dart index caf61e64b3..9afdf17be6 100644 --- a/frontend/app_flowy/lib/workspace/application/grid/block/block_cache.dart +++ b/frontend/app_flowy/lib/workspace/application/grid/block/block_cache.dart @@ -13,7 +13,7 @@ class GridBlockCache { late GridRowCache _rowCache; late GridBlockListener _listener; - List get rows => _rowCache.rows; + List get rows => _rowCache.rows; GridRowCache get rowCache => _rowCache; GridBlockCache({ diff --git a/frontend/app_flowy/lib/workspace/application/grid/grid_bloc.dart b/frontend/app_flowy/lib/workspace/application/grid/grid_bloc.dart index 7f120cf3d8..aaf47d8fc9 100644 --- a/frontend/app_flowy/lib/workspace/application/grid/grid_bloc.dart +++ b/frontend/app_flowy/lib/workspace/application/grid/grid_bloc.dart @@ -22,8 +22,8 @@ class GridBloc extends Bloc { // key: the block id final LinkedHashMap _blocks; - List get rows { - final List rows = []; + List get rowInfos { + final List rows = []; for (var block in _blocks.values) { rows.addAll(block.rows); } @@ -46,11 +46,11 @@ class GridBloc extends Bloc { createRow: () { _gridService.createRow(); }, - didReceiveRowUpdate: (rows, reason) { - emit(state.copyWith(rows: rows, reason: reason)); + didReceiveRowUpdate: (newRowInfos, reason) { + emit(state.copyWith(rowInfos: newRowInfos, reason: reason)); }, didReceiveFieldUpdate: (fields) { - emit(state.copyWith(rows: rows, fields: GridFieldEquatable(fields))); + emit(state.copyWith(rowInfos: rowInfos, fields: GridFieldEquatable(fields))); }, ); }, @@ -94,7 +94,7 @@ class GridBloc extends Bloc { } Future _loadFields(Grid grid, Emitter emit) async { - final result = await _gridService.getFields(fieldOrders: grid.fieldOrders); + final result = await _gridService.getFields(fieldOrders: grid.fields); return Future( () => result.fold( (fields) { @@ -103,7 +103,7 @@ class GridBloc extends Bloc { emit(state.copyWith( grid: Some(grid), fields: GridFieldEquatable(fieldCache.fields), - rows: rows, + rowInfos: rowInfos, loadingState: GridLoadingState.finish(left(unit)), )); }, @@ -127,7 +127,7 @@ class GridBloc extends Bloc { cache.addListener( listenWhen: () => !isClosed, - onChangeReason: (reason) => add(GridEvent.didReceiveRowUpdate(rows, reason)), + onChangeReason: (reason) => add(GridEvent.didReceiveRowUpdate(rowInfos, reason)), ); _blocks[block.id] = cache; @@ -139,7 +139,8 @@ class GridBloc extends Bloc { class GridEvent with _$GridEvent { const factory GridEvent.initial() = InitialGrid; const factory GridEvent.createRow() = _CreateRow; - const factory GridEvent.didReceiveRowUpdate(List rows, GridRowChangeReason listState) = _DidReceiveRowUpdate; + const factory GridEvent.didReceiveRowUpdate(List rows, GridRowChangeReason listState) = + _DidReceiveRowUpdate; const factory GridEvent.didReceiveFieldUpdate(List fields) = _DidReceiveFieldUpdate; } @@ -149,14 +150,14 @@ class GridState with _$GridState { required String gridId, required Option grid, required GridFieldEquatable fields, - required List rows, + required List rowInfos, required GridLoadingState loadingState, required GridRowChangeReason reason, }) = _GridState; factory GridState.initial(String gridId) => GridState( fields: const GridFieldEquatable([]), - rows: [], + rowInfos: [], grid: none(), gridId: gridId, loadingState: const _Loading(), diff --git a/frontend/app_flowy/lib/workspace/application/grid/grid_service.dart b/frontend/app_flowy/lib/workspace/application/grid/grid_service.dart index 4e742f9f42..67511a4c61 100644 --- a/frontend/app_flowy/lib/workspace/application/grid/grid_service.dart +++ b/frontend/app_flowy/lib/workspace/application/grid/grid_service.dart @@ -32,7 +32,7 @@ class GridService { return GridEventCreateRow(payload).send(); } - Future> getFields({required List fieldOrders}) { + Future> getFields({required List fieldOrders}) { final payload = QueryFieldPayload.create() ..gridId = gridId ..fieldOrders = RepeatedFieldOrder(items: fieldOrders); @@ -141,12 +141,12 @@ class GridFieldCache { } } - void _deleteFields(List deletedFields) { + void _deleteFields(List deletedFields) { if (deletedFields.isEmpty) { return; } final List newFields = fields; - final Map deletedFieldMap = { + final Map deletedFieldMap = { for (var fieldOrder in deletedFields) fieldOrder.fieldId: fieldOrder }; diff --git a/frontend/app_flowy/lib/workspace/application/grid/row/row_action_sheet_bloc.dart b/frontend/app_flowy/lib/workspace/application/grid/row/row_action_sheet_bloc.dart index 7d570c9412..9fe12f3ff5 100644 --- a/frontend/app_flowy/lib/workspace/application/grid/row/row_action_sheet_bloc.dart +++ b/frontend/app_flowy/lib/workspace/application/grid/row/row_action_sheet_bloc.dart @@ -11,7 +11,7 @@ part 'row_action_sheet_bloc.freezed.dart'; class RowActionSheetBloc extends Bloc { final RowService _rowService; - RowActionSheetBloc({required GridRow rowData}) + RowActionSheetBloc({required GridRowInfo rowData}) : _rowService = RowService( gridId: rowData.gridId, blockId: rowData.blockId, @@ -53,10 +53,10 @@ class RowActionSheetEvent with _$RowActionSheetEvent { @freezed class RowActionSheetState with _$RowActionSheetState { const factory RowActionSheetState({ - required GridRow rowData, + required GridRowInfo rowData, }) = _RowActionSheetState; - factory RowActionSheetState.initial(GridRow rowData) => RowActionSheetState( + factory RowActionSheetState.initial(GridRowInfo rowData) => RowActionSheetState( rowData: rowData, ); } diff --git a/frontend/app_flowy/lib/workspace/application/grid/row/row_bloc.dart b/frontend/app_flowy/lib/workspace/application/grid/row/row_bloc.dart index 69d2a95059..6fec53b441 100644 --- a/frontend/app_flowy/lib/workspace/application/grid/row/row_bloc.dart +++ b/frontend/app_flowy/lib/workspace/application/grid/row/row_bloc.dart @@ -15,15 +15,15 @@ class RowBloc extends Bloc { void Function()? _rowListenFn; RowBloc({ - required GridRow rowData, + required GridRowInfo rowInfo, required GridRowCache rowCache, }) : _rowService = RowService( - gridId: rowData.gridId, - blockId: rowData.blockId, - rowId: rowData.id, + gridId: rowInfo.gridId, + blockId: rowInfo.blockId, + rowId: rowInfo.id, ), _rowCache = rowCache, - super(RowState.initial(rowData, rowCache.loadGridCells(rowData.id))) { + super(RowState.initial(rowInfo, rowCache.loadGridCells(rowInfo.id))) { on( (event, emit) async { await event.map( @@ -58,7 +58,7 @@ class RowBloc extends Bloc { Future _startListening() async { _rowListenFn = _rowCache.addListener( - rowId: state.rowData.id, + rowId: state.rowInfo.id, onCellUpdated: (cellDatas, reason) => add(RowEvent.didReceiveCellDatas(cellDatas, reason)), listenWhen: () => !isClosed, ); @@ -76,14 +76,14 @@ class RowEvent with _$RowEvent { @freezed class RowState with _$RowState { const factory RowState({ - required GridRow rowData, + required GridRowInfo rowInfo, required GridCellMap gridCellMap, required UnmodifiableListView snapshots, GridRowChangeReason? changeReason, }) = _RowState; - factory RowState.initial(GridRow rowData, GridCellMap cellDataMap) => RowState( - rowData: rowData, + factory RowState.initial(GridRowInfo rowInfo, GridCellMap cellDataMap) => RowState( + rowInfo: rowInfo, gridCellMap: cellDataMap, snapshots: UnmodifiableListView(cellDataMap.values.map((e) => GridCellEquatable(e.field)).toList()), ); diff --git a/frontend/app_flowy/lib/workspace/application/grid/row/row_detail_bloc.dart b/frontend/app_flowy/lib/workspace/application/grid/row/row_detail_bloc.dart index b75caf32cf..966310fe8c 100644 --- a/frontend/app_flowy/lib/workspace/application/grid/row/row_detail_bloc.dart +++ b/frontend/app_flowy/lib/workspace/application/grid/row/row_detail_bloc.dart @@ -7,12 +7,12 @@ import 'row_service.dart'; part 'row_detail_bloc.freezed.dart'; class RowDetailBloc extends Bloc { - final GridRow rowData; + final GridRowInfo rowInfo; final GridRowCache _rowCache; void Function()? _rowListenFn; RowDetailBloc({ - required this.rowData, + required this.rowInfo, required GridRowCache rowCache, }) : _rowCache = rowCache, super(RowDetailState.initial()) { @@ -41,14 +41,14 @@ class RowDetailBloc extends Bloc { Future _startListening() async { _rowListenFn = _rowCache.addListener( - rowId: rowData.id, + rowId: rowInfo.id, onCellUpdated: (cellDatas, reason) => add(RowDetailEvent.didReceiveCellDatas(cellDatas.values.toList())), listenWhen: () => !isClosed, ); } Future _loadCellData() async { - final cellDataMap = _rowCache.loadGridCells(rowData.id); + final cellDataMap = _rowCache.loadGridCells(rowInfo.id); if (!isClosed) { add(RowDetailEvent.didReceiveCellDatas(cellDataMap.values.toList())); } diff --git a/frontend/app_flowy/lib/workspace/application/grid/row/row_service.dart b/frontend/app_flowy/lib/workspace/application/grid/row/row_service.dart index 7296fd51a8..e733c6c20a 100644 --- a/frontend/app_flowy/lib/workspace/application/grid/row/row_service.dart +++ b/frontend/app_flowy/lib/workspace/application/grid/row/row_service.dart @@ -32,7 +32,7 @@ class GridRowCache { /// _rows containers the current block's rows /// Use List to reverse the order of the GridRow. - List _rows = []; + List _rowInfos = []; /// Use Map for faster access the raw row data. final HashMap _rowByRowId; @@ -41,7 +41,7 @@ class GridRowCache { final GridRowCacheFieldNotifier _fieldNotifier; final _GridRowChangesetNotifier _rowChangeReasonNotifier; - UnmodifiableListView get rows => UnmodifiableListView(_rows); + UnmodifiableListView get rows => UnmodifiableListView(_rowInfos); GridCellCache get cellCache => _cellCache; GridRowCache({ @@ -55,7 +55,7 @@ class GridRowCache { // notifier.onFieldsChanged(() => _rowChangeReasonNotifier.receive(const GridRowChangeReason.fieldDidChange())); notifier.onFieldChanged((field) => _cellCache.remove(field.id)); - _rows = block.rowInfos.map((rowInfo) => buildGridRow(rowInfo.rowId, rowInfo.height.toDouble())).toList(); + _rowInfos = block.rows.map((rowInfo) => buildGridRow(rowInfo.id, rowInfo.height.toDouble())).toList(); } Future dispose() async { @@ -79,11 +79,11 @@ class GridRowCache { return; } - final List newRows = []; + final List newRows = []; final DeletedIndexs deletedIndex = []; final Map deletedRowByRowId = {for (var rowId in deletedRows) rowId: rowId}; - _rows.asMap().forEach((index, row) { + _rowInfos.asMap().forEach((index, row) { if (deletedRowByRowId[row.id] == null) { newRows.add(row); } else { @@ -91,7 +91,7 @@ class GridRowCache { deletedIndex.add(DeletedIndex(index: index, row: row)); } }); - _rows = newRows; + _rowInfos = newRows; _rowChangeReasonNotifier.receive(GridRowChangeReason.delete(deletedIndex)); } @@ -107,7 +107,7 @@ class GridRowCache { rowId: insertRow.rowId, ); insertIndexs.add(insertIndex); - _rows.insert(insertRow.index, (buildGridRow(insertRow.rowId, insertRow.height.toDouble()))); + _rowInfos.insert(insertRow.index, (buildGridRow(insertRow.rowId, insertRow.height.toDouble()))); } _rowChangeReasonNotifier.receive(GridRowChangeReason.insert(insertIndexs)); @@ -121,12 +121,12 @@ class GridRowCache { final UpdatedIndexs updatedIndexs = UpdatedIndexs(); for (final updatedRow in updatedRows) { final rowId = updatedRow.rowId; - final index = _rows.indexWhere((row) => row.id == rowId); + final index = _rowInfos.indexWhere((row) => row.id == rowId); if (index != -1) { _rowByRowId[rowId] = updatedRow.row; - _rows.removeAt(index); - _rows.insert(index, buildGridRow(rowId, updatedRow.row.height.toDouble())); + _rowInfos.removeAt(index); + _rowInfos.insert(index, buildGridRow(rowId, updatedRow.row.height.toDouble())); updatedIndexs[rowId] = UpdatedIndex(index: index, rowId: rowId); } } @@ -225,12 +225,12 @@ class GridRowCache { updatedRow.freeze(); _rowByRowId[updatedRow.id] = updatedRow; - final index = _rows.indexWhere((gridRow) => gridRow.id == updatedRow.id); + final index = _rowInfos.indexWhere((gridRow) => gridRow.id == updatedRow.id); if (index != -1) { // update the corresponding row in _rows if they are not the same - if (_rows[index].rawRow != updatedRow) { - final row = _rows.removeAt(index).copyWith(rawRow: updatedRow); - _rows.insert(index, row); + if (_rowInfos[index].rawRow != updatedRow) { + final row = _rowInfos.removeAt(index).copyWith(rawRow: updatedRow); + _rowInfos.insert(index, row); // Calculate the update index final UpdatedIndexs updatedIndexs = UpdatedIndexs(); @@ -242,8 +242,8 @@ class GridRowCache { } } - GridRow buildGridRow(String rowId, double rowHeight) { - return GridRow( + GridRowInfo buildGridRow(String rowId, double rowHeight) { + return GridRowInfo( gridId: gridId, blockId: block.id, fields: _fieldNotifier.fields, @@ -325,15 +325,15 @@ class RowService { } @freezed -class GridRow with _$GridRow { - const factory GridRow({ +class GridRowInfo with _$GridRowInfo { + const factory GridRowInfo({ required String gridId, required String blockId, required String id, required UnmodifiableListView fields, required double height, Row? rawRow, - }) = _GridRow; + }) = _GridRowInfo; } typedef InsertedIndexs = List; @@ -360,7 +360,7 @@ class InsertedIndex { class DeletedIndex { final int index; - final GridRow row; + final GridRowInfo row; DeletedIndex({ required this.index, required this.row, diff --git a/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/grid_page.dart b/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/grid_page.dart index d7d2999dd1..2ec27f3f3c 100755 --- a/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/grid_page.dart +++ b/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/grid_page.dart @@ -212,10 +212,10 @@ class _GridRowsState extends State<_GridRows> { builder: (context, state) { return SliverAnimatedList( key: _key, - initialItemCount: context.read().state.rows.length, + initialItemCount: context.read().state.rowInfos.length, itemBuilder: (BuildContext context, int index, Animation animation) { - final GridRow rowData = context.read().state.rows[index]; - return _renderRow(context, rowData, animation); + final GridRowInfo rowInfo = context.read().state.rowInfos[index]; + return _renderRow(context, rowInfo, animation); }, ); }, @@ -224,19 +224,19 @@ class _GridRowsState extends State<_GridRows> { Widget _renderRow( BuildContext context, - GridRow rowData, + GridRowInfo rowInfo, Animation animation, ) { - final rowCache = context.read().getRowCache(rowData.blockId, rowData.id); + final rowCache = context.read().getRowCache(rowInfo.blockId, rowInfo.id); final fieldCache = context.read().fieldCache; if (rowCache != null) { return SizeTransition( sizeFactor: animation, child: GridRowWidget( - rowData: rowData, + rowData: rowInfo, rowCache: rowCache, fieldCache: fieldCache, - key: ValueKey(rowData.id), + key: ValueKey(rowInfo.id), ), ); } else { diff --git a/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/grid_row.dart b/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/grid_row.dart index b0c1cd2ea0..c3e2e17b7e 100755 --- a/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/grid_row.dart +++ b/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/grid_row.dart @@ -15,7 +15,7 @@ import 'row_action_sheet.dart'; import 'row_detail.dart'; class GridRowWidget extends StatefulWidget { - final GridRow rowData; + final GridRowInfo rowData; final GridRowCache rowCache; final GridCellBuilder cellBuilder; @@ -40,7 +40,7 @@ class _GridRowWidgetState extends State { @override void initState() { _rowBloc = RowBloc( - rowData: widget.rowData, + rowInfo: widget.rowData, rowCache: widget.rowCache, ); _rowBloc.add(const RowEvent.initial()); @@ -53,7 +53,7 @@ class _GridRowWidgetState extends State { value: _rowBloc, child: _RowEnterRegion( child: BlocBuilder( - buildWhen: (p, c) => p.rowData.height != c.rowData.height, + buildWhen: (p, c) => p.rowInfo.height != c.rowInfo.height, builder: (context, state) { return Row( children: [ @@ -80,7 +80,7 @@ class _GridRowWidgetState extends State { void _expandRow(BuildContext context) { final page = RowDetailPage( - rowData: widget.rowData, + rowInfo: widget.rowData, rowCache: widget.rowCache, cellBuilder: widget.cellBuilder, ); @@ -148,7 +148,7 @@ class _DeleteRowButton extends StatelessWidget { width: 20, height: 30, onPressed: () => GridRowActionSheet( - rowData: context.read().state.rowData, + rowData: context.read().state.rowInfo, ).show(context), iconPadding: const EdgeInsets.all(3), icon: svgWidget("editor/details"), diff --git a/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/row_action_sheet.dart b/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/row_action_sheet.dart index 1d7886c86c..06e9c68d19 100644 --- a/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/row_action_sheet.dart +++ b/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/row_action_sheet.dart @@ -14,7 +14,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; class GridRowActionSheet extends StatelessWidget { - final GridRow rowData; + final GridRowInfo rowData; const GridRowActionSheet({required this.rowData, Key? key}) : super(key: key); @override diff --git a/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/row_detail.dart b/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/row_detail.dart index 4449ea6770..a01f97b847 100644 --- a/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/row_detail.dart +++ b/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/row/row_detail.dart @@ -21,12 +21,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; class RowDetailPage extends StatefulWidget with FlowyOverlayDelegate { - final GridRow rowData; + final GridRowInfo rowInfo; final GridRowCache rowCache; final GridCellBuilder cellBuilder; const RowDetailPage({ - required this.rowData, + required this.rowInfo, required this.rowCache, required this.cellBuilder, Key? key, @@ -62,7 +62,7 @@ class _RowDetailPageState extends State { Widget build(BuildContext context) { return BlocProvider( create: (context) { - final bloc = RowDetailBloc(rowData: widget.rowData, rowCache: widget.rowCache); + final bloc = RowDetailBloc(rowInfo: widget.rowInfo, rowCache: widget.rowCache); bloc.add(const RowDetailEvent.initial()); return bloc; }, diff --git a/frontend/rust-lib/flowy-grid/src/entities/block_entities.rs b/frontend/rust-lib/flowy-grid/src/entities/block_entities.rs index 9cfdbc088c..eb486f4cd2 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/block_entities.rs +++ b/frontend/rust-lib/flowy-grid/src/entities/block_entities.rs @@ -10,33 +10,33 @@ pub struct GridBlock { pub id: String, #[pb(index = 2)] - pub row_infos: Vec, + pub rows: Vec, } impl GridBlock { - pub fn new(block_id: &str, row_orders: Vec) -> Self { + pub fn new(block_id: &str, rows: Vec) -> Self { Self { id: block_id.to_owned(), - row_infos: row_orders, + rows, } } } #[derive(Debug, Default, Clone, ProtoBuf)] -pub struct RowInfo { +pub struct Row { #[pb(index = 1)] pub block_id: String, #[pb(index = 2)] - pub row_id: String, + pub id: String, #[pb(index = 3)] pub height: i32, } -impl RowInfo { +impl Row { pub fn row_id(&self) -> &str { - &self.row_id + &self.id } pub fn block_id(&self) -> &str { @@ -44,35 +44,26 @@ impl RowInfo { } } -impl std::convert::From<&RowRevision> for RowInfo { +impl std::convert::From<&RowRevision> for Row { fn from(rev: &RowRevision) -> Self { Self { block_id: rev.block_id.clone(), - row_id: rev.id.clone(), + id: rev.id.clone(), height: rev.height, } } } -impl std::convert::From<&Arc> for RowInfo { +impl std::convert::From<&Arc> for Row { fn from(rev: &Arc) -> Self { Self { block_id: rev.block_id.clone(), - row_id: rev.id.clone(), + id: rev.id.clone(), height: rev.height, } } } -#[derive(Debug, Default, ProtoBuf)] -pub struct Row { - #[pb(index = 1)] - pub id: String, - - #[pb(index = 2)] - pub height: i32, -} - #[derive(Debug, Default, ProtoBuf)] pub struct OptionalRow { #[pb(index = 1, one_of)] @@ -139,10 +130,10 @@ impl UpdatedRow { } } -impl std::convert::From for InsertedRow { - fn from(row_info: RowInfo) -> Self { +impl std::convert::From for InsertedRow { + fn from(row_info: Row) -> Self { Self { - row_id: row_info.row_id, + row_id: row_info.id, block_id: row_info.block_id, height: row_info.height, index: None, @@ -152,7 +143,7 @@ impl std::convert::From for InsertedRow { impl std::convert::From<&RowRevision> for InsertedRow { fn from(row: &RowRevision) -> Self { - let row_order = RowInfo::from(row); + let row_order = Row::from(row); Self::from(row_order) } } diff --git a/frontend/rust-lib/flowy-grid/src/entities/field_entities.rs b/frontend/rust-lib/flowy-grid/src/entities/field_entities.rs index d43e77e9ae..f7fa70455c 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/field_entities.rs +++ b/frontend/rust-lib/flowy-grid/src/entities/field_entities.rs @@ -57,24 +57,24 @@ impl std::convert::From> for Field { } } #[derive(Debug, Clone, Default, ProtoBuf)] -pub struct FieldOrder { +pub struct GridField { #[pb(index = 1)] pub field_id: String, } -impl std::convert::From<&str> for FieldOrder { +impl std::convert::From<&str> for GridField { fn from(s: &str) -> Self { - FieldOrder { field_id: s.to_owned() } + GridField { field_id: s.to_owned() } } } -impl std::convert::From for FieldOrder { +impl std::convert::From for GridField { fn from(s: String) -> Self { - FieldOrder { field_id: s } + GridField { field_id: s } } } -impl std::convert::From<&Arc> for FieldOrder { +impl std::convert::From<&Arc> for GridField { fn from(field_rev: &Arc) -> Self { Self { field_id: field_rev.id.clone(), @@ -90,7 +90,7 @@ pub struct GridFieldChangeset { pub inserted_fields: Vec, #[pb(index = 3)] - pub deleted_fields: Vec, + pub deleted_fields: Vec, #[pb(index = 4)] pub updated_fields: Vec, @@ -106,7 +106,7 @@ impl GridFieldChangeset { } } - pub fn delete(grid_id: &str, deleted_fields: Vec) -> Self { + pub fn delete(grid_id: &str, deleted_fields: Vec) -> Self { Self { grid_id: grid_id.to_string(), inserted_fields: vec![], @@ -259,18 +259,18 @@ impl std::convert::From> for RepeatedField { #[derive(Debug, Clone, Default, ProtoBuf)] pub struct RepeatedFieldOrder { #[pb(index = 1)] - pub items: Vec, + pub items: Vec, } impl std::ops::Deref for RepeatedFieldOrder { - type Target = Vec; + type Target = Vec; fn deref(&self) -> &Self::Target { &self.items } } -impl std::convert::From> for RepeatedFieldOrder { - fn from(field_orders: Vec) -> Self { +impl std::convert::From> for RepeatedFieldOrder { + fn from(field_orders: Vec) -> Self { RepeatedFieldOrder { items: field_orders } } } @@ -278,7 +278,7 @@ impl std::convert::From> for RepeatedFieldOrder { impl std::convert::From for RepeatedFieldOrder { fn from(s: String) -> Self { RepeatedFieldOrder { - items: vec![FieldOrder::from(s)], + items: vec![GridField::from(s)], } } } diff --git a/frontend/rust-lib/flowy-grid/src/entities/grid_entities.rs b/frontend/rust-lib/flowy-grid/src/entities/grid_entities.rs index c05df11414..1cc6f2ba45 100644 --- a/frontend/rust-lib/flowy-grid/src/entities/grid_entities.rs +++ b/frontend/rust-lib/flowy-grid/src/entities/grid_entities.rs @@ -1,4 +1,4 @@ -use crate::entities::{FieldOrder, GridBlock}; +use crate::entities::{GridBlock, GridField}; use flowy_derive::{ProtoBuf, ProtoBuf_Enum}; use flowy_error::ErrorCode; use flowy_grid_data_model::parser::NotEmptyStr; @@ -8,7 +8,7 @@ pub struct Grid { pub id: String, #[pb(index = 2)] - pub field_orders: Vec, + pub fields: Vec, #[pb(index = 3)] pub blocks: Vec, diff --git a/frontend/rust-lib/flowy-grid/src/services/block_manager.rs b/frontend/rust-lib/flowy-grid/src/services/block_manager.rs index a905a9640b..c52f0662ec 100644 --- a/frontend/rust-lib/flowy-grid/src/services/block_manager.rs +++ b/frontend/rust-lib/flowy-grid/src/services/block_manager.rs @@ -1,5 +1,5 @@ use crate::dart_notification::{send_dart_notification, GridNotification}; -use crate::entities::{CellChangeset, GridBlockChangeset, InsertedRow, Row, RowInfo, UpdatedRow}; +use crate::entities::{CellChangeset, GridBlockChangeset, InsertedRow, Row, UpdatedRow}; use crate::manager::GridUser; use crate::services::block_revision_editor::GridBlockRevisionEditor; use crate::services::persistence::block_index::BlockIndexCache; @@ -138,7 +138,7 @@ impl GridBlockManager { Some(row_info) => { let _ = editor.delete_rows(vec![Cow::Borrowed(&row_id)]).await?; let _ = self - .notify_did_update_block(&block_id, GridBlockChangeset::delete(&block_id, vec![row_info.row_id])) + .notify_did_update_block(&block_id, GridBlockChangeset::delete(&block_id, vec![row_info.id])) .await?; } } @@ -146,15 +146,12 @@ impl GridBlockManager { Ok(()) } - pub(crate) async fn delete_rows( - &self, - row_orders: Vec, - ) -> FlowyResult> { + pub(crate) async fn delete_rows(&self, row_orders: Vec) -> FlowyResult> { let mut changesets = vec![]; for grid_block in block_from_row_orders(row_orders) { let editor = self.get_editor(&grid_block.id).await?; let row_ids = grid_block - .row_infos + .rows .into_iter() .map(|row_info| Cow::Owned(row_info.row_id().to_owned())) .collect::>>(); @@ -217,7 +214,7 @@ impl GridBlockManager { } } - pub async fn get_row_orders(&self, block_id: &str) -> FlowyResult> { + pub async fn get_row_orders(&self, block_id: &str) -> FlowyResult> { let editor = self.get_editor(block_id).await?; editor.get_row_infos::<&str>(None).await } diff --git a/frontend/rust-lib/flowy-grid/src/services/block_revision_editor.rs b/frontend/rust-lib/flowy-grid/src/services/block_revision_editor.rs index e73a66c0fa..99d851a7d5 100644 --- a/frontend/rust-lib/flowy-grid/src/services/block_revision_editor.rs +++ b/frontend/rust-lib/flowy-grid/src/services/block_revision_editor.rs @@ -1,4 +1,4 @@ -use crate::entities::RowInfo; +use crate::entities::Row; use bytes::Bytes; use flowy_error::{FlowyError, FlowyResult}; use flowy_grid_data_model::revision::{CellRevision, GridBlockRevision, RowMetaChangeset, RowRevision}; @@ -123,12 +123,12 @@ impl GridBlockRevisionEditor { Ok(cell_revs) } - pub async fn get_row_info(&self, row_id: &str) -> FlowyResult> { + pub async fn get_row_info(&self, row_id: &str) -> FlowyResult> { let row_ids = Some(vec![Cow::Borrowed(row_id)]); Ok(self.get_row_infos(row_ids).await?.pop()) } - pub async fn get_row_infos(&self, row_ids: Option>>) -> FlowyResult> + pub async fn get_row_infos(&self, row_ids: Option>>) -> FlowyResult> where T: AsRef + ToOwned + ?Sized, { @@ -138,8 +138,8 @@ impl GridBlockRevisionEditor { .await .get_row_revs(row_ids)? .iter() - .map(RowInfo::from) - .collect::>(); + .map(Row::from) + .collect::>(); Ok(row_infos) } diff --git a/frontend/rust-lib/flowy-grid/src/services/grid_editor.rs b/frontend/rust-lib/flowy-grid/src/services/grid_editor.rs index 1d63b6dd69..e6a37ef203 100644 --- a/frontend/rust-lib/flowy-grid/src/services/grid_editor.rs +++ b/frontend/rust-lib/flowy-grid/src/services/grid_editor.rs @@ -189,7 +189,7 @@ impl GridRevisionEditor { pub async fn delete_field(&self, field_id: &str) -> FlowyResult<()> { let _ = self.modify(|grid_pad| Ok(grid_pad.delete_field_rev(field_id)?)).await?; - let field_order = FieldOrder::from(field_id); + let field_order = GridField::from(field_id); let notified_changeset = GridFieldChangeset::delete(&self.grid_id, vec![field_order]); let _ = self.notify_did_update_grid(notified_changeset).await?; Ok(()) @@ -269,14 +269,14 @@ impl GridRevisionEditor { Ok(()) } - pub async fn create_row(&self, start_row_id: Option) -> FlowyResult { + pub async fn create_row(&self, start_row_id: Option) -> FlowyResult { let field_revs = self.grid_pad.read().await.get_field_revs(None)?; let block_id = self.block_id().await?; // insert empty row below the row whose id is upper_row_id let row_rev_ctx = CreateRowRevisionBuilder::new(&field_revs).build(); let row_rev = make_row_rev_from_context(&block_id, row_rev_ctx); - let row_order = RowInfo::from(&row_rev); + let row_order = Row::from(&row_rev); // insert the row let row_count = self.block_manager.create_row(&block_id, row_rev, start_row_id).await?; @@ -287,13 +287,13 @@ impl GridRevisionEditor { Ok(row_order) } - pub async fn insert_rows(&self, contexts: Vec) -> FlowyResult> { + pub async fn insert_rows(&self, contexts: Vec) -> FlowyResult> { let block_id = self.block_id().await?; let mut rows_by_block_id: HashMap> = HashMap::new(); let mut row_orders = vec![]; for ctx in contexts { let row_rev = make_row_rev_from_context(&block_id, ctx); - row_orders.push(RowInfo::from(&row_rev)); + row_orders.push(Row::from(&row_rev)); rows_by_block_id .entry(block_id.clone()) .or_insert_with(Vec::new) @@ -421,7 +421,7 @@ impl GridRevisionEditor { Ok(block_meta_revs) } - pub async fn delete_rows(&self, row_orders: Vec) -> FlowyResult<()> { + pub async fn delete_rows(&self, row_orders: Vec) -> FlowyResult<()> { let changesets = self.block_manager.delete_rows(row_orders).await?; for changeset in changesets { let _ = self.update_block(changeset).await?; @@ -434,21 +434,21 @@ impl GridRevisionEditor { let field_orders = pad_read_guard .get_field_revs(None)? .iter() - .map(FieldOrder::from) + .map(GridField::from) .collect(); let mut block_orders = vec![]; for block_rev in pad_read_guard.get_block_meta_revs() { let row_orders = self.block_manager.get_row_orders(&block_rev.block_id).await?; let block_order = GridBlock { id: block_rev.block_id.clone(), - row_infos: row_orders, + rows: row_orders, }; block_orders.push(block_order); } Ok(Grid { id: self.grid_id.clone(), - field_orders, + fields: field_orders, blocks: block_orders, }) } @@ -517,7 +517,7 @@ impl GridRevisionEditor { .modify(|grid_pad| Ok(grid_pad.move_field(field_id, from as usize, to as usize)?)) .await?; if let Some((index, field_rev)) = self.grid_pad.read().await.get_field_rev(field_id) { - let delete_field_order = FieldOrder::from(field_id); + let delete_field_order = GridField::from(field_id); let insert_field = IndexField::from_field_rev(field_rev, index); let notified_changeset = GridFieldChangeset { grid_id: self.grid_id.clone(), diff --git a/frontend/rust-lib/flowy-grid/src/services/row/row_loader.rs b/frontend/rust-lib/flowy-grid/src/services/row/row_loader.rs index 1b9ce80101..9d6543b650 100644 --- a/frontend/rust-lib/flowy-grid/src/services/row/row_loader.rs +++ b/frontend/rust-lib/flowy-grid/src/services/row/row_loader.rs @@ -1,4 +1,4 @@ -use crate::entities::{GridBlock, RepeatedGridBlock, Row, RowInfo}; +use crate::entities::{GridBlock, RepeatedGridBlock, Row}; use flowy_error::FlowyResult; use flowy_grid_data_model::revision::{FieldRevision, RowRevision}; use std::collections::HashMap; @@ -9,7 +9,7 @@ pub struct GridBlockSnapshot { pub row_revs: Vec>, } -pub(crate) fn block_from_row_orders(row_orders: Vec) -> Vec { +pub(crate) fn block_from_row_orders(row_orders: Vec) -> Vec { let mut map: HashMap = HashMap::new(); row_orders.into_iter().for_each(|row_info| { // Memory Optimization: escape clone block_id @@ -17,7 +17,7 @@ pub(crate) fn block_from_row_orders(row_orders: Vec) -> Vec let cloned_block_id = block_id.clone(); map.entry(block_id) .or_insert_with(|| GridBlock::new(&cloned_block_id, vec![])) - .row_infos + .rows .push(row_info); }); map.into_values().collect::>() @@ -35,8 +35,8 @@ pub(crate) fn block_from_row_orders(row_orders: Vec) -> Vec // Some((field_id, cell)) // } -pub(crate) fn make_row_orders_from_row_revs(row_revs: &[Arc]) -> Vec { - row_revs.iter().map(RowInfo::from).collect::>() +pub(crate) fn make_row_orders_from_row_revs(row_revs: &[Arc]) -> Vec { + row_revs.iter().map(Row::from).collect::>() } pub(crate) fn make_row_from_row_rev(fields: &[Arc], row_rev: Arc) -> Option { @@ -58,6 +58,7 @@ pub(crate) fn make_rows_from_row_revs(_fields: &[Arc], row_revs: // .collect::>(); Row { + block_id: row_rev.block_id.clone(), id: row_rev.id.clone(), height: row_rev.height, } diff --git a/frontend/rust-lib/flowy-grid/tests/grid/block_test/script.rs b/frontend/rust-lib/flowy-grid/tests/grid/block_test/script.rs index 288133958b..5a9b29b76d 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/block_test/script.rs +++ b/frontend/rust-lib/flowy-grid/tests/grid/block_test/script.rs @@ -1,5 +1,5 @@ use crate::grid::grid_editor::GridEditorTest; -use flowy_grid::entities::RowInfo; +use flowy_grid::entities::Row; use flowy_grid::services::row::{CreateRowRevisionBuilder, CreateRowRevisionPayload}; use flowy_grid_data_model::revision::{ FieldRevision, GridBlockMetaRevision, GridBlockMetaRevisionChangeset, RowMetaChangeset, RowRevision, @@ -90,7 +90,7 @@ impl GridRowTest { let row_orders = row_ids .into_iter() .map(|row_id| self.row_order_by_row_id.get(&row_id).unwrap().clone()) - .collect::>(); + .collect::>(); self.editor.delete_rows(row_orders).await.unwrap(); self.row_revs = self.get_row_revs().await; diff --git a/frontend/rust-lib/flowy-grid/tests/grid/grid_editor.rs b/frontend/rust-lib/flowy-grid/tests/grid/grid_editor.rs index d944aac6c5..bfa9e6e0ba 100644 --- a/frontend/rust-lib/flowy-grid/tests/grid/grid_editor.rs +++ b/frontend/rust-lib/flowy-grid/tests/grid/grid_editor.rs @@ -30,7 +30,7 @@ pub struct GridEditorTest { pub block_meta_revs: Vec>, pub row_revs: Vec>, pub field_count: usize, - pub row_order_by_row_id: HashMap, + pub row_order_by_row_id: HashMap, } impl GridEditorTest {