Skip to content

Commit 54d6f37

Browse files
committed
chore: replace FieldPB with GridField
1 parent f57ba8b commit 54d6f37

39 files changed

+338
-278
lines changed

frontend/app_flowy/lib/plugins/board/application/board_bloc.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ class BoardBloc extends Bloc<BoardEvent, BoardState> {
2525
final MoveRowFFIService _rowService;
2626
LinkedHashMap<String, GroupController> groupControllers = LinkedHashMap();
2727

28-
GridFieldCache get fieldCache => _gridDataController.fieldCache;
28+
GridFieldController get fieldController =>
29+
_gridDataController.fieldController;
2930
String get gridId => _gridDataController.gridId;
3031

3132
BoardBloc({required ViewPB view})

frontend/app_flowy/lib/plugins/board/application/board_data_controller.dart

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import 'package:flowy_sdk/protobuf/flowy-grid/protobuf.dart';
1212

1313
import 'board_listener.dart';
1414

15-
typedef OnFieldsChanged = void Function(UnmodifiableListView<FieldPB>);
15+
typedef OnFieldsChanged = void Function(UnmodifiableListView<GridFieldContext>);
1616
typedef OnGridChanged = void Function(GridPB);
1717
typedef DidLoadGroups = void Function(List<GroupPB>);
1818
typedef OnUpdatedGroup = void Function(List<GroupPB>);
@@ -29,7 +29,7 @@ typedef OnError = void Function(FlowyError);
2929
class BoardDataController {
3030
final String gridId;
3131
final GridFFIService _gridFFIService;
32-
final GridFieldCache fieldCache;
32+
final GridFieldController fieldController;
3333
final BoardListener _listener;
3434

3535
// key: the block id
@@ -56,7 +56,7 @@ class BoardDataController {
5656
// ignore: prefer_collection_literals
5757
_blocks = LinkedHashMap(),
5858
_gridFFIService = GridFFIService(gridId: view.id),
59-
fieldCache = GridFieldCache(gridId: view.id);
59+
fieldController = GridFieldController(gridId: view.id);
6060

6161
void addListener({
6262
required OnGridChanged onGridChanged,
@@ -75,7 +75,7 @@ class BoardDataController {
7575
_onRowsChanged = onRowsChanged;
7676
_onError = onError;
7777

78-
fieldCache.addListener(onFields: (fields) {
78+
fieldController.addListener(onFields: (fields) {
7979
_onFieldsChanged?.call(UnmodifiableListView(fields));
8080
});
8181

@@ -113,16 +113,15 @@ class BoardDataController {
113113
() => result.fold(
114114
(grid) async {
115115
_onGridChanged?.call(grid);
116-
117-
return await _loadFields(grid).then((result) {
118-
return result.fold(
119-
(l) {
120-
_loadGroups(grid.blocks);
121-
return left(l);
122-
},
123-
(err) => right(err),
124-
);
125-
});
116+
return await fieldController.loadFields(fieldIds: grid.fields).then(
117+
(result) => result.fold(
118+
(l) {
119+
_loadGroups(grid.blocks);
120+
return left(l);
121+
},
122+
(err) => right(err),
123+
),
124+
);
126125
},
127126
(err) => right(err),
128127
),
@@ -136,33 +135,19 @@ class BoardDataController {
136135

137136
Future<void> dispose() async {
138137
await _gridFFIService.closeGrid();
139-
await fieldCache.dispose();
138+
await fieldController.dispose();
140139

141140
for (final blockCache in _blocks.values) {
142141
blockCache.dispose();
143142
}
144143
}
145144

146-
Future<Either<Unit, FlowyError>> _loadFields(GridPB grid) async {
147-
final result = await _gridFFIService.getFields(fieldIds: grid.fields);
148-
return Future(
149-
() => result.fold(
150-
(fields) {
151-
fieldCache.fields = fields.items;
152-
_onFieldsChanged?.call(UnmodifiableListView(fieldCache.fields));
153-
return left(unit);
154-
},
155-
(err) => right(err),
156-
),
157-
);
158-
}
159-
160145
Future<void> _loadGroups(List<BlockPB> blocks) async {
161146
for (final block in blocks) {
162147
final cache = GridBlockCache(
163148
gridId: gridId,
164149
block: block,
165-
fieldCache: fieldCache,
150+
fieldController: fieldController,
166151
);
167152

168153
cache.addListener(onRowsChanged: (reason) {

frontend/app_flowy/lib/plugins/board/application/card/board_date_cell_bloc.dart

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart';
2+
import 'package:app_flowy/plugins/grid/application/field/field_cache.dart';
23
import 'package:flowy_sdk/protobuf/flowy-grid/date_type_option_entities.pb.dart';
3-
import 'package:flowy_sdk/protobuf/flowy-grid/field_entities.pb.dart';
44
import 'package:flutter_bloc/flutter_bloc.dart';
55
import 'package:freezed_annotation/freezed_annotation.dart';
66
import 'dart:async';
@@ -20,8 +20,6 @@ class BoardDateCellBloc extends Bloc<BoardDateCellEvent, BoardDateCellState> {
2020
emit(state.copyWith(
2121
data: cellData, dateStr: _dateStrFromCellData(cellData)));
2222
},
23-
didReceiveFieldUpdate: (FieldPB value) =>
24-
emit(state.copyWith(field: value)),
2523
);
2624
},
2725
);
@@ -53,23 +51,21 @@ class BoardDateCellEvent with _$BoardDateCellEvent {
5351
const factory BoardDateCellEvent.initial() = _InitialCell;
5452
const factory BoardDateCellEvent.didReceiveCellUpdate(DateCellDataPB? data) =
5553
_DidReceiveCellUpdate;
56-
const factory BoardDateCellEvent.didReceiveFieldUpdate(FieldPB field) =
57-
_DidReceiveFieldUpdate;
5854
}
5955

6056
@freezed
6157
class BoardDateCellState with _$BoardDateCellState {
6258
const factory BoardDateCellState({
6359
required DateCellDataPB? data,
6460
required String dateStr,
65-
required FieldPB field,
61+
required GridFieldContext fieldContext,
6662
}) = _BoardDateCellState;
6763

6864
factory BoardDateCellState.initial(GridDateCellController context) {
6965
final cellData = context.getCellData();
7066

7167
return BoardDateCellState(
72-
field: context.field,
68+
fieldContext: context.fieldContext,
7369
data: cellData,
7470
dateStr: _dateStrFromCellData(cellData),
7571
);

frontend/app_flowy/lib/plugins/board/application/card/card_bloc.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class BoardCardBloc extends Bloc<BoardCardEvent, BoardCardState> {
5959
return RowInfo(
6060
gridId: _rowService.gridId,
6161
fields: UnmodifiableListView(
62-
state.cells.map((cell) => cell.identifier.field).toList(),
62+
state.cells.map((cell) => cell.identifier.fieldContext).toList(),
6363
),
6464
rowPB: state.rowPB,
6565
);
@@ -120,9 +120,9 @@ class BoardCellEquatable extends Equatable {
120120

121121
@override
122122
List<Object?> get props => [
123-
identifier.field.id,
124-
identifier.field.fieldType,
125-
identifier.field.visibility,
126-
identifier.field.width,
123+
identifier.fieldContext.id,
124+
identifier.fieldContext.fieldType,
125+
identifier.fieldContext.visibility,
126+
identifier.fieldContext.width,
127127
];
128128
}

frontend/app_flowy/lib/plugins/board/application/card/card_data_controller.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ typedef OnCardChanged = void Function(GridCellMap, RowsChangedReason);
1010

1111
class CardDataController extends BoardCellBuilderDelegate {
1212
final RowPB rowPB;
13-
final GridFieldCache _fieldCache;
13+
final GridFieldController _fieldController;
1414
final GridRowCache _rowCache;
1515
final List<VoidCallback> _onCardChangedListeners = [];
1616

1717
CardDataController({
1818
required this.rowPB,
19-
required GridFieldCache fieldCache,
19+
required GridFieldController fieldController,
2020
required GridRowCache rowCache,
21-
}) : _fieldCache = fieldCache,
21+
}) : _fieldController = fieldController,
2222
_rowCache = rowCache;
2323

2424
GridCellMap loadData() {
@@ -41,7 +41,7 @@ class CardDataController extends BoardCellBuilderDelegate {
4141
@override
4242
GridCellFieldNotifier buildFieldNotifier() {
4343
return GridCellFieldNotifier(
44-
notifier: GridCellFieldNotifierImpl(_fieldCache));
44+
notifier: GridCellFieldNotifierImpl(_fieldController));
4545
}
4646

4747
@override

frontend/app_flowy/lib/plugins/board/presentation/board_page.dart

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,10 @@ class _BoardContentState extends State<BoardContent> {
222222
/// Return placeholder widget if the rowCache is null.
223223
if (rowCache == null) return SizedBox(key: ObjectKey(columnItem));
224224

225-
final fieldCache = context.read<BoardBloc>().fieldCache;
225+
final fieldController = context.read<BoardBloc>().fieldController;
226226
final gridId = context.read<BoardBloc>().gridId;
227227
final cardController = CardDataController(
228-
fieldCache: fieldCache,
228+
fieldController: fieldController,
229229
rowCache: rowCache,
230230
rowPB: rowPB,
231231
);
@@ -252,7 +252,7 @@ class _BoardContentState extends State<BoardContent> {
252252
dataController: cardController,
253253
openCard: (context) => _openCard(
254254
gridId,
255-
fieldCache,
255+
fieldController,
256256
rowPB,
257257
rowCache,
258258
context,
@@ -271,17 +271,17 @@ class _BoardContentState extends State<BoardContent> {
271271
);
272272
}
273273

274-
void _openCard(String gridId, GridFieldCache fieldCache, RowPB rowPB,
275-
GridRowCache rowCache, BuildContext context) {
274+
void _openCard(String gridId, GridFieldController fieldController,
275+
RowPB rowPB, GridRowCache rowCache, BuildContext context) {
276276
final rowInfo = RowInfo(
277277
gridId: gridId,
278-
fields: UnmodifiableListView(fieldCache.fields),
278+
fields: UnmodifiableListView(fieldController.fieldContexts),
279279
rowPB: rowPB,
280280
);
281281

282282
final dataController = GridRowDataController(
283283
rowInfo: rowInfo,
284-
fieldCache: fieldCache,
284+
fieldController: fieldController,
285285
rowCache: rowCache,
286286
);
287287

@@ -302,7 +302,7 @@ class _ToolbarBlocAdaptor extends StatelessWidget {
302302
final bloc = context.read<BoardBloc>();
303303
final toolbarContext = BoardToolbarContext(
304304
viewId: bloc.gridId,
305-
fieldCache: bloc.fieldCache,
305+
fieldController: bloc.fieldController,
306306
);
307307

308308
return BoardToolbar(toolbarContext: toolbarContext);

frontend/app_flowy/lib/plugins/board/presentation/toolbar/board_setting.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ import 'board_toolbar.dart';
1919

2020
class BoardSettingContext {
2121
final String viewId;
22-
final GridFieldCache fieldCache;
22+
final GridFieldController fieldController;
2323
BoardSettingContext({
2424
required this.viewId,
25-
required this.fieldCache,
25+
required this.fieldController,
2626
});
2727

2828
factory BoardSettingContext.from(BoardToolbarContext toolbarContext) =>
2929
BoardSettingContext(
3030
viewId: toolbarContext.viewId,
31-
fieldCache: toolbarContext.fieldCache,
31+
fieldController: toolbarContext.fieldController,
3232
);
3333
}
3434

@@ -93,13 +93,13 @@ class BoardSettingList extends StatelessWidget {
9393
case BoardSettingAction.properties:
9494
GridPropertyList(
9595
gridId: settingContext.viewId,
96-
fieldCache: settingContext.fieldCache)
96+
fieldController: settingContext.fieldController)
9797
.show(context);
9898
break;
9999
case BoardSettingAction.groups:
100100
GridGroupList(
101101
viewId: settingContext.viewId,
102-
fieldCache: settingContext.fieldCache)
102+
fieldController: settingContext.fieldController)
103103
.show(context);
104104
break;
105105
}

frontend/app_flowy/lib/plugins/board/presentation/toolbar/board_toolbar.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import 'board_setting.dart';
99

1010
class BoardToolbarContext {
1111
final String viewId;
12-
final GridFieldCache fieldCache;
12+
final GridFieldController fieldController;
1313

1414
BoardToolbarContext({
1515
required this.viewId,
16-
required this.fieldCache,
16+
required this.fieldController,
1717
});
1818
}
1919

frontend/app_flowy/lib/plugins/grid/application/block/block_cache.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ class GridBlockCache {
1919
GridBlockCache({
2020
required this.gridId,
2121
required this.block,
22-
required GridFieldCache fieldCache,
22+
required GridFieldController fieldController,
2323
}) {
2424
_rowCache = GridRowCache(
2525
gridId: gridId,
2626
block: block,
27-
notifier: GridRowFieldNotifierImpl(fieldCache),
27+
notifier: GridRowFieldNotifierImpl(fieldController),
2828
);
2929

3030
_listener = GridBlockListener(blockId: block.id);

frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_controller.dart

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,10 @@ class IGridCellController<T, D> extends Equatable {
148148
_cellDataLoader = cellDataLoader,
149149
_cellDataPersistence = cellDataPersistence,
150150
_fieldNotifier = fieldNotifier,
151-
_fieldService =
152-
FieldService(gridId: cellId.gridId, fieldId: cellId.field.id),
153-
_cacheKey =
154-
GridCellCacheKey(rowId: cellId.rowId, fieldId: cellId.field.id);
151+
_fieldService = FieldService(
152+
gridId: cellId.gridId, fieldId: cellId.fieldContext.id),
153+
_cacheKey = GridCellCacheKey(
154+
rowId: cellId.rowId, fieldId: cellId.fieldContext.id);
155155

156156
IGridCellController<T, D> clone() {
157157
return IGridCellController(
@@ -166,11 +166,11 @@ class IGridCellController<T, D> extends Equatable {
166166

167167
String get rowId => cellId.rowId;
168168

169-
String get fieldId => cellId.field.id;
169+
String get fieldId => cellId.fieldContext.id;
170170

171-
FieldPB get field => cellId.field;
171+
GridFieldContext get fieldContext => cellId.fieldContext;
172172

173-
FieldType get fieldType => cellId.field.fieldType;
173+
FieldType get fieldType => cellId.fieldContext.fieldType;
174174

175175
VoidCallback? startListening(
176176
{required void Function(T?) onCellChanged,
@@ -182,7 +182,8 @@ class IGridCellController<T, D> extends Equatable {
182182
isListening = true;
183183

184184
_cellDataNotifier = ValueNotifier(_cellsCache.get(_cacheKey));
185-
_cellListener = CellListener(rowId: cellId.rowId, fieldId: cellId.field.id);
185+
_cellListener =
186+
CellListener(rowId: cellId.rowId, fieldId: cellId.fieldContext.id);
186187

187188
/// 1.Listen on user edit event and load the new cell data if needed.
188189
/// For example:
@@ -308,14 +309,14 @@ class IGridCellController<T, D> extends Equatable {
308309

309310
@override
310311
List<Object> get props =>
311-
[_cellsCache.get(_cacheKey) ?? "", cellId.rowId + cellId.field.id];
312+
[_cellsCache.get(_cacheKey) ?? "", cellId.rowId + cellId.fieldContext.id];
312313
}
313314

314315
class GridCellFieldNotifierImpl extends IGridCellFieldNotifier {
315-
final GridFieldCache _cache;
316-
FieldChangesetCallback? _onChangesetFn;
316+
final GridFieldController _cache;
317+
OnChangeset? _onChangesetFn;
317318

318-
GridCellFieldNotifierImpl(GridFieldCache cache) : _cache = cache;
319+
GridCellFieldNotifierImpl(GridFieldController cache) : _cache = cache;
319320

320321
@override
321322
void onCellDispose() {

0 commit comments

Comments
 (0)