From d390ef9a3a23ccef424ce63f211cb5fb546c9625 Mon Sep 17 00:00:00 2001 From: appflowy Date: Mon, 25 Apr 2022 22:03:10 +0800 Subject: [PATCH] chore: fix warnings --- .../application/grid/cell/cell_service.dart | 7 +++- .../workspace/application/grid/grid_bloc.dart | 3 +- .../application/grid/grid_service.dart | 40 ++++++++++++++++--- .../cell/selection_cell/selection_cell.dart | 13 +++--- .../app_flowy/packages/flowy_sdk/lib/log.dart | 2 +- .../src/services/block_meta_manager.rs | 10 ++--- .../flowy-grid/src/services/grid_editor.rs | 5 --- .../flowy-grid/src/services/row/row_loader.rs | 2 +- 8 files changed, 53 insertions(+), 29 deletions(-) diff --git a/frontend/app_flowy/lib/workspace/application/grid/cell/cell_service.dart b/frontend/app_flowy/lib/workspace/application/grid/cell/cell_service.dart index d2188776cd..1aa090d443 100644 --- a/frontend/app_flowy/lib/workspace/application/grid/cell/cell_service.dart +++ b/frontend/app_flowy/lib/workspace/application/grid/cell/cell_service.dart @@ -17,6 +17,7 @@ part 'cell_service.freezed.dart'; typedef GridDefaultCellContext = GridCellContext; typedef GridSelectOptionCellContext = GridCellContext; +// ignore: must_be_immutable class GridCellContext extends Equatable { final GridCell gridCell; final GridCellCache cellCache; @@ -76,7 +77,6 @@ class GridCellContext extends Equatable { if (cellDataLoader.reloadOnFieldChanged) { _onFieldChangedFn = () { - Log.info("reloadCellData "); _loadData(); }; cellCache.addListener(cacheKey, _onFieldChangedFn!); @@ -200,6 +200,7 @@ class GridCellCacheKey { abstract class GridCellFieldDelegate { void onFieldChanged(void Function(String) callback); + void dispose(); } class GridCellCache { @@ -279,6 +280,10 @@ class GridCellCache { } } } + + Future dispose() async { + fieldDelegate.dispose(); + } } class CellService { 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 30ae08f6fd..4915d77087 100644 --- a/frontend/app_flowy/lib/workspace/application/grid/grid_bloc.dart +++ b/frontend/app_flowy/lib/workspace/application/grid/grid_bloc.dart @@ -55,8 +55,9 @@ class GridBloc extends Bloc { @override Future close() async { await _gridService.closeGrid(); - await fieldCache.dispose(); + await cellCache.dispose(); await rowCache.dispose(); + await fieldCache.dispose(); return super.close(); } 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 7911b46eef..d217d2c6b7 100644 --- a/frontend/app_flowy/lib/workspace/application/grid/grid_service.dart +++ b/frontend/app_flowy/lib/workspace/application/grid/grid_service.dart @@ -54,10 +54,14 @@ class FieldsNotifier extends ChangeNotifier { List get fields => _fields; } +typedef ChangesetListener = void Function(GridFieldChangeset); + class GridFieldCache { final String gridId; late final GridFieldsListener _fieldListener; final FieldsNotifier _fieldNotifier = FieldsNotifier(); + final List _changesetListener = []; + GridFieldCache({required this.gridId}) { _fieldListener = GridFieldsListener(gridId: gridId); _fieldListener.start(onFieldsChanged: (result) { @@ -66,6 +70,9 @@ class GridFieldCache { _deleteFields(changeset.deletedFields); _insertFields(changeset.insertedFields); _updateFields(changeset.updatedFields); + for (final listener in _changesetListener) { + listener(changeset); + } }, (err) => Log.error(err), ); @@ -77,8 +84,6 @@ class GridFieldCache { _fieldNotifier.dispose(); } - void applyChangeset(GridFieldChangeset changeset) {} - UnmodifiableListView get unmodifiableFields => UnmodifiableListView(_fieldNotifier.fields); List get clonedFields => [..._fieldNotifier.fields]; @@ -111,6 +116,17 @@ class GridFieldCache { _fieldNotifier.removeListener(f); } + void addChangesetListener(ChangesetListener listener) { + _changesetListener.add(listener); + } + + void removeChangesetListener(ChangesetListener listener) { + final index = _changesetListener.indexWhere((element) => element == listener); + if (index != -1) { + _changesetListener.removeAt(index); + } + } + void _deleteFields(List deletedFields) { if (deletedFields.isEmpty) { return; @@ -172,14 +188,26 @@ class GridRowCacheDelegateImpl extends GridRowFieldDelegate { class GridCellCacheDelegateImpl extends GridCellFieldDelegate { final GridFieldCache _cache; + ChangesetListener? _changesetFn; GridCellCacheDelegateImpl(GridFieldCache cache) : _cache = cache; @override void onFieldChanged(void Function(String) callback) { - _cache.addListener(onChanged: (fields) { - for (final field in fields) { - callback(field.id); + changesetFn(GridFieldChangeset changeset) { + for (final updatedField in changeset.updatedFields) { + callback(updatedField.id); } - }); + } + + _cache.addChangesetListener(changesetFn); + _changesetFn = changesetFn; + } + + @override + void dispose() { + if (_changesetFn != null) { + _cache.removeChangesetListener(_changesetFn!); + _changesetFn = null; + } } } diff --git a/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/selection_cell/selection_cell.dart b/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/selection_cell/selection_cell.dart index ff29d745c7..939594f19c 100644 --- a/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/selection_cell/selection_cell.dart +++ b/frontend/app_flowy/lib/workspace/presentation/plugins/grid/src/widgets/cell/selection_cell/selection_cell.dart @@ -3,6 +3,7 @@ import 'package:app_flowy/workspace/application/grid/prelude.dart'; import 'package:app_flowy/workspace/presentation/plugins/grid/src/widgets/cell/cell_builder.dart'; import 'package:flowy_infra/theme.dart'; import 'package:flowy_infra_ui/style_widget/text.dart'; +// ignore: unused_import import 'package:flowy_sdk/log.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; @@ -43,7 +44,7 @@ class _SingleSelectCellState extends State { @override void initState() { - Log.info("init widget $hashCode"); + // Log.trace("init widget $hashCode"); _cellBloc = getIt(param1: widget.cellContext)..add(const SelectionCellEvent.initial()); super.initState(); } @@ -51,7 +52,7 @@ class _SingleSelectCellState extends State { @override Widget build(BuildContext context) { final theme = context.watch(); - Log.info("build widget $hashCode"); + // Log.trace("build widget $hashCode"); return BlocProvider.value( value: _cellBloc, child: BlocBuilder( @@ -83,18 +84,14 @@ class _SingleSelectCellState extends State { @override void didUpdateWidget(covariant SingleSelectCell oldWidget) { if (oldWidget.cellContext != widget.cellContext) { - // setState(() { - - // }); - // _cellBloc = getIt(param1: widget.cellContext)..add(const SelectionCellEvent.initial()); - Log.info("did update widget $hashCode"); + // Log.trace("did update widget $hashCode"); } super.didUpdateWidget(oldWidget); } @override Future dispose() async { - Log.info("dispose widget $hashCode"); + // Log.trace("dispose widget $hashCode"); _cellBloc.close(); super.dispose(); } diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/log.dart b/frontend/app_flowy/packages/flowy_sdk/lib/log.dart index a34faaff0e..ad61b70c4f 100644 --- a/frontend/app_flowy/packages/flowy_sdk/lib/log.dart +++ b/frontend/app_flowy/packages/flowy_sdk/lib/log.dart @@ -31,7 +31,7 @@ class Log { } static void trace(dynamic msg) { - Log.shared._logger.d(msg); + Log.shared._logger.v(msg); } static void error(dynamic msg) { diff --git a/frontend/rust-lib/flowy-grid/src/services/block_meta_manager.rs b/frontend/rust-lib/flowy-grid/src/services/block_meta_manager.rs index 7853d99c18..229afe75a2 100644 --- a/frontend/rust-lib/flowy-grid/src/services/block_meta_manager.rs +++ b/frontend/rust-lib/flowy-grid/src/services/block_meta_manager.rs @@ -3,17 +3,15 @@ use crate::manager::GridUser; use crate::services::block_meta_editor::ClientGridBlockMetaEditor; use crate::services::persistence::block_index::BlockIndexPersistence; use crate::services::row::{group_row_orders, GridBlockSnapshot}; -use std::borrow::Cow; - use dashmap::DashMap; -use flowy_error::{FlowyError, FlowyResult}; +use flowy_error::FlowyResult; use flowy_grid_data_model::entities::{ - Cell, CellChangeset, CellMeta, GridBlockMeta, GridBlockMetaChangeset, GridRowsChangeset, IndexRowOrder, Row, - RowMeta, RowMetaChangeset, RowOrder, UpdatedRowOrder, + CellChangeset, CellMeta, GridBlockMeta, GridBlockMetaChangeset, GridRowsChangeset, IndexRowOrder, Row, RowMeta, + RowMetaChangeset, RowOrder, UpdatedRowOrder, }; use flowy_revision::disk::SQLiteGridBlockMetaRevisionPersistence; use flowy_revision::{RevisionManager, RevisionPersistence}; -use lib_infra::future::FutureResult; +use std::borrow::Cow; use std::collections::HashMap; use std::sync::Arc; 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 05437f46cd..d8d909cabe 100644 --- a/frontend/rust-lib/flowy-grid/src/services/grid_editor.rs +++ b/frontend/rust-lib/flowy-grid/src/services/grid_editor.rs @@ -430,11 +430,6 @@ impl ClientGridEditor { self.grid_pad.read().await.delta_bytes() } - async fn row_builder(&self, row_meta: Arc) -> FlowyResult> { - let field_metas = self.get_field_metas::(None).await?; - Ok(make_rows_from_row_metas(&field_metas, &[row_meta]).pop()) - } - async fn modify(&self, f: F) -> FlowyResult<()> where F: for<'a> FnOnce(&'a mut GridMetaPad) -> FlowyResult>, 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 35357a0c83..93b40f4d51 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 @@ -48,7 +48,7 @@ pub(crate) fn make_row_orders_from_row_metas(row_metas: &[Arc]) -> Vec< } pub(crate) fn make_row_from_row_meta(fields: &[FieldMeta], row_meta: Arc) -> Option { - make_rows_from_row_metas(fields, &vec![row_meta]).pop() + make_rows_from_row_metas(fields, &[row_meta]).pop() } pub(crate) fn make_rows_from_row_metas(fields: &[FieldMeta], row_metas: &[Arc]) -> Vec {