Ver código fonte

Merge pull request #861 from AppFlowy-IO/feat/delete_board_card

chore: delete board card
Nathan.fooo 2 anos atrás
pai
commit
a0363e349d

+ 0 - 8
frontend/app_flowy/lib/plugins/board/application/board_bloc.dart

@@ -138,14 +138,6 @@ class BoardBloc extends Bloc<BoardEvent, BoardState> {
 
   List<AFColumnItem> _buildRows(List<RowPB> rows) {
     final items = rows.map((row) {
-      // final rowInfo = RowInfo(
-      //   gridId: _dataController.gridId,
-      //   blockId: row.blockId,
-      //   id: row.id,
-      //   fields: _dataController.fieldCache.unmodifiableFields,
-      //   height: row.height.toDouble(),
-      //   rawRow: row,
-      // );
       return BoardColumnItem(row: row);
     }).toList();
 

+ 11 - 0
frontend/app_flowy/lib/plugins/board/application/card/card_bloc.dart

@@ -58,6 +58,17 @@ class BoardCardBloc extends Bloc<BoardCardEvent, BoardCardState> {
     return super.close();
   }
 
+  RowInfo rowInfo() {
+    return RowInfo(
+      gridId: _rowService.gridId,
+      blockId: _rowService.blockId,
+      fields: UnmodifiableListView(
+        state.cells.map((cell) => cell._field).toList(),
+      ),
+      rowPB: state.rowPB,
+    );
+  }
+
   Future<void> _startListening() async {
     _dataController.addListener(
       onRowChanged: (cells, reason) {

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

@@ -1,9 +1,10 @@
 import 'package:app_flowy/plugins/board/application/card/card_bloc.dart';
 import 'package:app_flowy/plugins/board/application/card/card_data_controller.dart';
 import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart';
+import 'package:app_flowy/plugins/grid/presentation/widgets/row/row_action_sheet.dart';
 import 'package:flowy_infra/image.dart';
 import 'package:flowy_infra/theme.dart';
-import 'package:flowy_sdk/log.dart';
+import 'package:flowy_infra_ui/flowy_infra_ui_web.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_bloc/flutter_bloc.dart';
 import 'card_cell_builder.dart';
@@ -85,6 +86,8 @@ class _CardMoreOption extends StatelessWidget with CardAccessory {
 
   @override
   void onTap(BuildContext context) {
-    Log.debug('show options');
+    GridRowActionSheet(
+      rowData: context.read<BoardCardBloc>().rowInfo(),
+    ).show(context, direction: AnchorDirection.bottomWithCenterAligned);
   }
 }

+ 5 - 2
frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_action_sheet.dart

@@ -53,7 +53,10 @@ class GridRowActionSheet extends StatelessWidget {
     );
   }
 
-  void show(BuildContext overlayContext) {
+  void show(
+    BuildContext overlayContext, {
+    AnchorDirection direction = AnchorDirection.leftWithCenterAligned,
+  }) {
     FlowyOverlay.of(overlayContext).insertWithAnchor(
       widget: OverlayContainer(
         child: this,
@@ -61,7 +64,7 @@ class GridRowActionSheet extends StatelessWidget {
       ),
       identifier: GridRowActionSheet.identifier(),
       anchorContext: overlayContext,
-      anchorDirection: AnchorDirection.leftWithCenterAligned,
+      anchorDirection: direction,
     );
   }
 

+ 5 - 2
frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board_column/board_column_data.dart

@@ -51,8 +51,11 @@ class AFBoardColumnDataController extends ChangeNotifier with EquatableMixin {
     return item;
   }
 
-  int removeWhere(bool Function(AFColumnItem) condition) {
-    return items.indexWhere(condition);
+  void removeWhere(bool Function(AFColumnItem) condition) {
+    final index = items.indexWhere(condition);
+    if (index != -1) {
+      removeAt(index);
+    }
   }
 
   /// Move the item from [fromIndex] to [toIndex]. It will do nothing if the

+ 1 - 0
frontend/rust-lib/flowy-grid/src/services/block_manager.rs

@@ -122,6 +122,7 @@ impl GridBlockManager {
         Ok(())
     }
 
+    #[tracing::instrument(level = "trace", skip_all, err)]
     pub async fn delete_row(&self, row_id: &str) -> FlowyResult<()> {
         let row_id = row_id.to_owned();
         let block_id = self.persistence.get_block_id(&row_id)?;