Browse Source

fix: rebuild card when create new field from row detail page

appflowy 2 years ago
parent
commit
3ae28186e8

+ 7 - 6
frontend/app_flowy/lib/plugins/board/application/card/card_bloc.dart

@@ -13,12 +13,12 @@ import 'card_data_controller.dart';
 part 'card_bloc.freezed.dart';
 
 class BoardCardBloc extends Bloc<BoardCardEvent, BoardCardState> {
-  final String fieldId;
+  final String groupFieldId;
   final RowFFIService _rowService;
   final CardDataController _dataController;
 
   BoardCardBloc({
-    required this.fieldId,
+    required this.groupFieldId,
     required String gridId,
     required CardDataController dataController,
   })  : _rowService = RowFFIService(
@@ -29,7 +29,7 @@ class BoardCardBloc extends Bloc<BoardCardEvent, BoardCardState> {
         super(
           BoardCardState.initial(
             dataController.rowPB,
-            _makeCells(fieldId, dataController.loadData()),
+            _makeCells(groupFieldId, dataController.loadData()),
           ),
         ) {
     on<BoardCardEvent>(
@@ -69,7 +69,7 @@ class BoardCardBloc extends Bloc<BoardCardEvent, BoardCardState> {
     _dataController.addListener(
       onRowChanged: (cellMap, reason) {
         if (!isClosed) {
-          final cells = _makeCells(fieldId, cellMap);
+          final cells = _makeCells(groupFieldId, cellMap);
           add(BoardCardEvent.didReceiveCells(cells, reason));
         }
       },
@@ -78,10 +78,11 @@ class BoardCardBloc extends Bloc<BoardCardEvent, BoardCardState> {
 }
 
 UnmodifiableListView<BoardCellEquatable> _makeCells(
-    String fieldId, GridCellMap originalCellMap) {
+    String groupFieldId, GridCellMap originalCellMap) {
   List<BoardCellEquatable> cells = [];
   for (final entry in originalCellMap.entries) {
-    if (entry.value.fieldId != fieldId) {
+    // Filter out the cell if it's fieldId equal to the groupFieldId
+    if (entry.value.fieldId != groupFieldId) {
       cells.add(BoardCellEquatable(entry.value));
     }
   }

+ 11 - 4
frontend/app_flowy/lib/plugins/board/presentation/card/board_date_cell.dart

@@ -5,6 +5,8 @@ import 'package:flowy_infra_ui/style_widget/text.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 
+import 'define.dart';
+
 class BoardDateCell extends StatefulWidget {
   final String groupId;
   final GridCellControllerBuilder cellControllerBuilder;
@@ -44,10 +46,15 @@ class _BoardDateCellState extends State<BoardDateCell> {
           } else {
             return Align(
               alignment: Alignment.centerLeft,
-              child: FlowyText.regular(
-                state.dateStr,
-                fontSize: 13,
-                color: context.read<AppTheme>().shader3,
+              child: Padding(
+                padding: EdgeInsets.symmetric(
+                  vertical: BoardSizes.cardCellVPadding,
+                ),
+                child: FlowyText.regular(
+                  state.dateStr,
+                  fontSize: 13,
+                  color: context.read<AppTheme>().shader3,
+                ),
               ),
             );
           }

+ 10 - 3
frontend/app_flowy/lib/plugins/board/presentation/card/board_number_cell.dart

@@ -4,6 +4,8 @@ import 'package:flowy_infra_ui/style_widget/text.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 
+import 'define.dart';
+
 class BoardNumberCell extends StatefulWidget {
   final String groupId;
   final GridCellControllerBuilder cellControllerBuilder;
@@ -43,9 +45,14 @@ class _BoardNumberCellState extends State<BoardNumberCell> {
           } else {
             return Align(
               alignment: Alignment.centerLeft,
-              child: FlowyText.medium(
-                state.content,
-                fontSize: 14,
+              child: Padding(
+                padding: EdgeInsets.symmetric(
+                  vertical: BoardSizes.cardCellVPadding,
+                ),
+                child: FlowyText.medium(
+                  state.content,
+                  fontSize: 14,
+                ),
               ),
             );
           }

+ 15 - 8
frontend/app_flowy/lib/plugins/board/presentation/card/board_url_cell.dart

@@ -4,6 +4,8 @@ import 'package:flowy_infra/theme.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 
+import 'define.dart';
+
 class BoardUrlCell extends StatefulWidget {
   final String groupId;
   final GridCellControllerBuilder cellControllerBuilder;
@@ -43,14 +45,19 @@ class _BoardUrlCellState extends State<BoardUrlCell> {
           } else {
             return Align(
               alignment: Alignment.centerLeft,
-              child: RichText(
-                textAlign: TextAlign.left,
-                text: TextSpan(
-                  text: state.content,
-                  style: TextStyle(
-                    color: theme.main2,
-                    fontSize: 14,
-                    decoration: TextDecoration.underline,
+              child: Padding(
+                padding: EdgeInsets.symmetric(
+                  vertical: BoardSizes.cardCellVPadding,
+                ),
+                child: RichText(
+                  textAlign: TextAlign.left,
+                  text: TextSpan(
+                    text: state.content,
+                    style: TextStyle(
+                      color: theme.main2,
+                      fontSize: 14,
+                      decoration: TextDecoration.underline,
+                    ),
                   ),
                 ),
               ),

+ 2 - 2
frontend/app_flowy/lib/plugins/board/presentation/card/card.dart

@@ -44,7 +44,7 @@ class _BoardCardState extends State<BoardCard> {
     rowNotifier = EditableRowNotifier();
     _cardBloc = BoardCardBloc(
       gridId: widget.gridId,
-      fieldId: widget.fieldId,
+      groupFieldId: widget.fieldId,
       dataController: widget.dataController,
     )..add(const BoardCardEvent.initial());
     super.initState();
@@ -56,7 +56,7 @@ class _BoardCardState extends State<BoardCard> {
       value: _cardBloc,
       child: BlocBuilder<BoardCardBloc, BoardCardState>(
         buildWhen: (previous, current) {
-          return previous.cells.length != current.cells.length;
+          return previous.cells != current.cells;
         },
         builder: (context, state) {
           return BoardCardContainer(

+ 2 - 1
frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/date_cell/date_cell.dart

@@ -43,7 +43,8 @@ class _DateCellState extends GridCellState<GridDateCell> {
 
   @override
   void initState() {
-    final cellController = widget.cellControllerBuilder.build();
+    final cellController =
+        widget.cellControllerBuilder.build() as GridDateCellController;
     _cellBloc = getIt<DateCellBloc>(param1: cellController)
       ..add(const DateCellEvent.initial());
     super.initState();

+ 1 - 1
frontend/rust-lib/flowy-grid/src/services/group/controller.rs

@@ -243,7 +243,7 @@ where
             let cell_data = cell_bytes.parser::<P>()?;
             let mut changesets = self.add_row_if_match(row_rev, &cell_data);
             let default_group_changeset = self.update_default_group(row_rev, &changesets);
-            tracing::info!("default_group_changeset: {}", default_group_changeset);
+            tracing::trace!("default_group_changeset: {}", default_group_changeset);
             if !default_group_changeset.is_empty() {
                 changesets.push(default_group_changeset);
             }