From 1f657f3bf8302b4787e504c0548c08f62e841ce1 Mon Sep 17 00:00:00 2001 From: appflowy Date: Fri, 8 Apr 2022 15:13:53 +0800 Subject: [PATCH] fix: blockService exception --- .../lib/workspace/application/grid/grid_bloc.dart | 14 +++++++------- .../flowy-grid/src/services/grid_editor.rs | 7 ++----- 2 files changed, 9 insertions(+), 12 deletions(-) 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 4b63ec0251..01db1f1300 100644 --- a/frontend/app_flowy/lib/workspace/application/grid/grid_bloc.dart +++ b/frontend/app_flowy/lib/workspace/application/grid/grid_bloc.dart @@ -16,12 +16,12 @@ part 'grid_bloc.freezed.dart'; class GridBloc extends Bloc { final View view; final GridService service; - late GridFieldsListener _fieldListener; - late GridBlockService _blockService; - - GridBloc({required this.view, required this.service}) : super(GridState.initial()) { - _fieldListener = GridFieldsListener(gridId: view.id); + final GridFieldsListener _fieldListener; + GridBlockService? _blockService; + GridBloc({required this.view, required this.service}) + : _fieldListener = GridFieldsListener(gridId: view.id), + super(GridState.initial()) { on( (event, emit) async { await event.map( @@ -48,7 +48,7 @@ class GridBloc extends Bloc { @override Future close() async { await _fieldListener.stop(); - await _blockService.stop(); + await _blockService?.stop(); return super.close(); } @@ -70,7 +70,7 @@ class GridBloc extends Bloc { blockOrders: grid.blockOrders, ); - _blockService.blocksUpdateNotifier?.addPublishListener((result) { + _blockService?.blocksUpdateNotifier?.addPublishListener((result) { result.fold( (blockMap) => add(GridEvent.didReceiveRowUpdate(_buildRows(blockMap))), (err) => Log.error('$err'), 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 a91f0bb606..05a82d9f13 100644 --- a/frontend/rust-lib/flowy-grid/src/services/grid_editor.rs +++ b/frontend/rust-lib/flowy-grid/src/services/grid_editor.rs @@ -365,11 +365,8 @@ impl ClientGridEditor { F: for<'a> FnOnce(&'a mut GridMetaPad) -> FlowyResult>, { let mut write_guard = self.pad.write().await; - match f(&mut *write_guard)? { - None => {} - Some(change) => { - let _ = self.apply_change(change).await?; - } + if let Some(changeset) = f(&mut *write_guard)? { + let _ = self.apply_change(changeset).await?; } Ok(()) }