|
@@ -1,4 +1,5 @@
|
|
import 'package:app_flowy/workspace/application/grid/cell_bloc/cell_listener.dart';
|
|
import 'package:app_flowy/workspace/application/grid/cell_bloc/cell_listener.dart';
|
|
|
|
+import 'package:app_flowy/workspace/application/grid/field/field_listener.dart';
|
|
import 'package:app_flowy/workspace/application/grid/row/row_service.dart';
|
|
import 'package:app_flowy/workspace/application/grid/row/row_service.dart';
|
|
import 'package:flowy_sdk/log.dart';
|
|
import 'package:flowy_sdk/log.dart';
|
|
import 'package:flowy_sdk/protobuf/flowy-grid-data-model/grid.pb.dart';
|
|
import 'package:flowy_sdk/protobuf/flowy-grid-data-model/grid.pb.dart';
|
|
@@ -11,12 +12,14 @@ part 'number_cell_bloc.freezed.dart';
|
|
|
|
|
|
class NumberCellBloc extends Bloc<NumberCellEvent, NumberCellState> {
|
|
class NumberCellBloc extends Bloc<NumberCellEvent, NumberCellState> {
|
|
final CellService _service;
|
|
final CellService _service;
|
|
- final CellListener _listener;
|
|
|
|
|
|
+ final CellListener _cellListener;
|
|
|
|
+ final FieldListener _fieldListener;
|
|
|
|
|
|
NumberCellBloc({
|
|
NumberCellBloc({
|
|
required CellData cellData,
|
|
required CellData cellData,
|
|
}) : _service = CellService(),
|
|
}) : _service = CellService(),
|
|
- _listener = CellListener(rowId: cellData.rowId, fieldId: cellData.field.id),
|
|
|
|
|
|
+ _cellListener = CellListener(rowId: cellData.rowId, fieldId: cellData.field.id),
|
|
|
|
+ _fieldListener = FieldListener(fieldId: cellData.field.id),
|
|
super(NumberCellState.initial(cellData)) {
|
|
super(NumberCellState.initial(cellData)) {
|
|
on<NumberCellEvent>(
|
|
on<NumberCellEvent>(
|
|
(event, emit) async {
|
|
(event, emit) async {
|
|
@@ -27,36 +30,36 @@ class NumberCellBloc extends Bloc<NumberCellEvent, NumberCellState> {
|
|
didReceiveCellUpdate: (_DidReceiveCellUpdate value) {
|
|
didReceiveCellUpdate: (_DidReceiveCellUpdate value) {
|
|
emit(state.copyWith(content: value.cell.content));
|
|
emit(state.copyWith(content: value.cell.content));
|
|
},
|
|
},
|
|
- updateCell: (_UpdateCell value) {
|
|
|
|
- _updateCellValue(value, emit);
|
|
|
|
|
|
+ updateCell: (_UpdateCell value) async {
|
|
|
|
+ await _updateCellValue(value, emit);
|
|
},
|
|
},
|
|
);
|
|
);
|
|
},
|
|
},
|
|
);
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
- void _updateCellValue(_UpdateCell value, Emitter<NumberCellState> emit) {
|
|
|
|
- final number = num.tryParse(value.text);
|
|
|
|
- if (number == null) {
|
|
|
|
- emit(state.copyWith(content: ""));
|
|
|
|
- } else {
|
|
|
|
- _service.updateCell(
|
|
|
|
- gridId: state.cellData.gridId,
|
|
|
|
- fieldId: state.cellData.field.id,
|
|
|
|
- rowId: state.cellData.rowId,
|
|
|
|
- data: value.text,
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
|
|
+ Future<void> _updateCellValue(_UpdateCell value, Emitter<NumberCellState> emit) async {
|
|
|
|
+ final result = await _service.updateCell(
|
|
|
|
+ gridId: state.cellData.gridId,
|
|
|
|
+ fieldId: state.cellData.field.id,
|
|
|
|
+ rowId: state.cellData.rowId,
|
|
|
|
+ data: value.text,
|
|
|
|
+ );
|
|
|
|
+ result.fold(
|
|
|
|
+ (field) => _getCellData(),
|
|
|
|
+ (err) => Log.error(err),
|
|
|
|
+ );
|
|
}
|
|
}
|
|
|
|
|
|
@override
|
|
@override
|
|
Future<void> close() async {
|
|
Future<void> close() async {
|
|
- await _listener.stop();
|
|
|
|
|
|
+ await _cellListener.stop();
|
|
|
|
+ await _fieldListener.stop();
|
|
return super.close();
|
|
return super.close();
|
|
}
|
|
}
|
|
|
|
|
|
void _startListening() {
|
|
void _startListening() {
|
|
- _listener.updateCellNotifier.addPublishListener((result) {
|
|
|
|
|
|
+ _cellListener.updateCellNotifier.addPublishListener((result) {
|
|
result.fold(
|
|
result.fold(
|
|
(notificationData) async {
|
|
(notificationData) async {
|
|
await _getCellData();
|
|
await _getCellData();
|
|
@@ -64,7 +67,15 @@ class NumberCellBloc extends Bloc<NumberCellEvent, NumberCellState> {
|
|
(err) => Log.error(err),
|
|
(err) => Log.error(err),
|
|
);
|
|
);
|
|
});
|
|
});
|
|
- _listener.start();
|
|
|
|
|
|
+ _cellListener.start();
|
|
|
|
+
|
|
|
|
+ _fieldListener.updateFieldNotifier.addPublishListener((result) {
|
|
|
|
+ result.fold(
|
|
|
|
+ (field) => _getCellData(),
|
|
|
|
+ (err) => Log.error(err),
|
|
|
|
+ );
|
|
|
|
+ });
|
|
|
|
+ _fieldListener.start();
|
|
}
|
|
}
|
|
|
|
|
|
Future<void> _getCellData() async {
|
|
Future<void> _getCellData() async {
|