Skip to content

Commit 8d766f3

Browse files
committed
refactor: cell data loader
1 parent 78e979e commit 8d766f3

File tree

10 files changed

+99
-100
lines changed

10 files changed

+99
-100
lines changed

frontend/app_flowy/lib/workspace/application/grid/cell/cell_service/data_loader.dart

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ abstract class IGridCellDataLoader<T> {
3030
IGridCellDataConfig get config;
3131
}
3232

33-
class GridCellDataLoader extends IGridCellDataLoader<Cell> {
33+
abstract class ICellDataParser<T> {
34+
T? parserData();
35+
}
36+
37+
class GridCellDataLoader extends IGridCellDataLoader<String> {
3438
final CellService service = CellService();
3539
final GridCell gridCell;
3640

@@ -43,16 +47,16 @@ class GridCellDataLoader extends IGridCellDataLoader<Cell> {
4347
});
4448

4549
@override
46-
Future<Cell?> loadData() {
50+
Future<String> loadData() {
4751
final fut = service.getCell(
4852
gridId: gridCell.gridId,
4953
fieldId: gridCell.field.id,
5054
rowId: gridCell.rowId,
5155
);
5256
return fut.then((result) {
53-
return result.fold((data) => data, (err) {
57+
return result.fold((Cell data) => data.content, (err) {
5458
Log.error(err);
55-
return null;
59+
return "";
5660
});
5761
});
5862
}

frontend/app_flowy/lib/workspace/application/grid/cell/checkbox_cell_bloc.dart

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import 'package:flowy_sdk/protobuf/flowy-grid-data-model/grid.pb.dart' show Cell;
21
import 'package:flutter_bloc/flutter_bloc.dart';
32
import 'package:freezed_annotation/freezed_annotation.dart';
43
import 'dart:async';
@@ -16,15 +15,15 @@ class CheckboxCellBloc extends Bloc<CheckboxCellEvent, CheckboxCellState> {
1615
}) : super(CheckboxCellState.initial(cellContext)) {
1716
on<CheckboxCellEvent>(
1817
(event, emit) async {
19-
await event.map(
20-
initial: (_Initial value) {
18+
await event.when(
19+
initial: () {
2120
_startListening();
2221
},
23-
select: (_Selected value) async {
22+
select: () async {
2423
_updateCellData();
2524
},
26-
didReceiveCellUpdate: (_DidReceiveCellUpdate value) {
27-
emit(state.copyWith(isSelected: _isSelected(value.cell)));
25+
didReceiveCellUpdate: (cellData) {
26+
emit(state.copyWith(isSelected: _isSelected(cellData)));
2827
},
2928
);
3029
},
@@ -43,9 +42,9 @@ class CheckboxCellBloc extends Bloc<CheckboxCellEvent, CheckboxCellState> {
4342
}
4443

4544
void _startListening() {
46-
_onCellChangedFn = cellContext.startListening(onCellChanged: ((cell) {
45+
_onCellChangedFn = cellContext.startListening(onCellChanged: ((cellData) {
4746
if (!isClosed) {
48-
add(CheckboxCellEvent.didReceiveCellUpdate(cell));
47+
add(CheckboxCellEvent.didReceiveCellUpdate(cellData));
4948
}
5049
}));
5150
}
@@ -59,7 +58,7 @@ class CheckboxCellBloc extends Bloc<CheckboxCellEvent, CheckboxCellState> {
5958
class CheckboxCellEvent with _$CheckboxCellEvent {
6059
const factory CheckboxCellEvent.initial() = _Initial;
6160
const factory CheckboxCellEvent.select() = _Selected;
62-
const factory CheckboxCellEvent.didReceiveCellUpdate(Cell cell) = _DidReceiveCellUpdate;
61+
const factory CheckboxCellEvent.didReceiveCellUpdate(String cellData) = _DidReceiveCellUpdate;
6362
}
6463

6564
@freezed
@@ -73,7 +72,6 @@ class CheckboxCellState with _$CheckboxCellState {
7372
}
7473
}
7574

76-
bool _isSelected(Cell? cell) {
77-
final content = cell?.content ?? "";
78-
return content == "Yes";
75+
bool _isSelected(String? cellData) {
76+
return cellData == "Yes";
7977
}

frontend/app_flowy/lib/workspace/application/grid/cell/number_cell_bloc.dart

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import 'package:flowy_sdk/protobuf/flowy-grid-data-model/grid.pb.dart';
21
import 'package:flutter_bloc/flutter_bloc.dart';
32
import 'package:freezed_annotation/freezed_annotation.dart';
43
import 'dart:async';
@@ -20,7 +19,7 @@ class NumberCellBloc extends Bloc<NumberCellEvent, NumberCellState> {
2019
_startListening();
2120
},
2221
didReceiveCellUpdate: (_DidReceiveCellUpdate value) {
23-
emit(state.copyWith(content: value.cell.content));
22+
emit(state.copyWith(content: value.cellContent));
2423
},
2524
updateCell: (_UpdateCell value) async {
2625
await _updateCellValue(value, emit);
@@ -46,9 +45,9 @@ class NumberCellBloc extends Bloc<NumberCellEvent, NumberCellState> {
4645

4746
void _startListening() {
4847
_onCellChangedFn = cellContext.startListening(
49-
onCellChanged: ((cell) {
48+
onCellChanged: ((cellContent) {
5049
if (!isClosed) {
51-
add(NumberCellEvent.didReceiveCellUpdate(cell));
50+
add(NumberCellEvent.didReceiveCellUpdate(cellContent));
5251
}
5352
}),
5453
);
@@ -59,7 +58,7 @@ class NumberCellBloc extends Bloc<NumberCellEvent, NumberCellState> {
5958
class NumberCellEvent with _$NumberCellEvent {
6059
const factory NumberCellEvent.initial() = _Initial;
6160
const factory NumberCellEvent.updateCell(String text) = _UpdateCell;
62-
const factory NumberCellEvent.didReceiveCellUpdate(Cell cell) = _DidReceiveCellUpdate;
61+
const factory NumberCellEvent.didReceiveCellUpdate(String cellContent) = _DidReceiveCellUpdate;
6362
}
6463

6564
@freezed
@@ -69,7 +68,7 @@ class NumberCellState with _$NumberCellState {
6968
}) = _NumberCellState;
7069

7170
factory NumberCellState.initial(GridCellContext context) {
72-
final cell = context.getCellData();
73-
return NumberCellState(content: cell?.content ?? "");
71+
final cellContent = context.getCellData() ?? "";
72+
return NumberCellState(content: cellContent);
7473
}
7574
}

frontend/app_flowy/lib/workspace/application/grid/cell/text_cell_bloc.dart

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import 'package:flowy_sdk/protobuf/flowy-grid-data-model/grid.pb.dart' show Cell;
21
import 'package:flutter_bloc/flutter_bloc.dart';
32
import 'package:freezed_annotation/freezed_annotation.dart';
43
import 'dart:async';
@@ -26,9 +25,7 @@ class TextCellBloc extends Bloc<TextCellEvent, TextCellState> {
2625
emit(state.copyWith(content: value.cellData.cell?.content ?? ""));
2726
},
2827
didReceiveCellUpdate: (_DidReceiveCellUpdate value) {
29-
emit(state.copyWith(
30-
content: value.cell.content,
31-
));
28+
emit(state.copyWith(content: value.cellContent));
3229
},
3330
);
3431
},
@@ -47,9 +44,9 @@ class TextCellBloc extends Bloc<TextCellEvent, TextCellState> {
4744

4845
void _startListening() {
4946
_onCellChangedFn = cellContext.startListening(
50-
onCellChanged: ((cell) {
47+
onCellChanged: ((cellContent) {
5148
if (!isClosed) {
52-
add(TextCellEvent.didReceiveCellUpdate(cell));
49+
add(TextCellEvent.didReceiveCellUpdate(cellContent));
5350
}
5451
}),
5552
);
@@ -60,7 +57,7 @@ class TextCellBloc extends Bloc<TextCellEvent, TextCellState> {
6057
class TextCellEvent with _$TextCellEvent {
6158
const factory TextCellEvent.initial() = _InitialCell;
6259
const factory TextCellEvent.didReceiveCellData(GridCell cellData) = _DidReceiveCellData;
63-
const factory TextCellEvent.didReceiveCellUpdate(Cell cell) = _DidReceiveCellUpdate;
60+
const factory TextCellEvent.didReceiveCellUpdate(String cellContent) = _DidReceiveCellUpdate;
6461
const factory TextCellEvent.updateText(String text) = _UpdateText;
6562
}
6663

@@ -71,6 +68,6 @@ class TextCellState with _$TextCellState {
7168
}) = _TextCellState;
7269

7370
factory TextCellState.initial(GridCellContext context) => TextCellState(
74-
content: context.getCellData()?.content ?? "",
71+
content: context.getCellData() ?? "",
7572
);
7673
}

frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-grid-data-model/grid.pb.dart

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-grid-data-model/grid.pbjson.dart

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/rust-lib/flowy-grid/src/services/row/cell_data_operation.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -226,23 +226,24 @@ where
226226

227227
#[derive(Default)]
228228
pub struct DecodedCellData {
229-
raw: String,
229+
pub data: Vec<u8>,
230230
pub content: String,
231231
}
232232

233233
impl DecodedCellData {
234234
pub fn from_content(content: String) -> Self {
235235
Self {
236-
raw: content.clone(),
236+
data: content.as_bytes().to_vec(),
237237
content,
238238
}
239239
}
240240

241-
pub fn new(raw: String, content: String) -> Self {
242-
Self { raw, content }
241+
pub fn new<T: AsRef<[u8]>>(data: T, content: String) -> Self {
242+
let data = data.as_ref().to_vec();
243+
Self { data, content }
243244
}
244245

245-
pub fn split(self) -> (String, String) {
246-
(self.raw, self.content)
246+
pub fn split(self) -> (Vec<u8>, String) {
247+
(self.data, self.content)
247248
}
248249
}

shared-lib/flowy-grid-data-model/src/entities/grid.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -487,11 +487,11 @@ pub struct Cell {
487487
pub content: String,
488488

489489
#[pb(index = 3)]
490-
pub data: String,
490+
pub data: Vec<u8>,
491491
}
492492

493493
impl Cell {
494-
pub fn new(field_id: &str, content: String, data: String) -> Self {
494+
pub fn new(field_id: &str, content: String, data: Vec<u8>) -> Self {
495495
Self {
496496
field_id: field_id.to_owned(),
497497
content,
@@ -503,7 +503,7 @@ impl Cell {
503503
Self {
504504
field_id: field_id.to_owned(),
505505
content: "".to_string(),
506-
data: "".to_string(),
506+
data: vec![],
507507
}
508508
}
509509
}

0 commit comments

Comments
 (0)