diff --git a/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart b/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart index 2cb03a6c64..5bf941ef99 100644 --- a/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart +++ b/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart @@ -56,6 +56,9 @@ class BoardBloc extends Bloc { didReceiveGridUpdate: (GridPB grid) { emit(state.copyWith(grid: Some(grid))); }, + groupByField: (GridFieldPB field) { + emit(state.copyWith(groupField: Some(field))); + }, ); }, ); @@ -97,11 +100,16 @@ class BoardBloc extends Bloc { } void _buildColumns(UnmodifiableListView fields) { + GridFieldPB? groupField; for (final field in fields) { if (field.fieldType == FieldType.SingleSelect) { + groupField = field; _buildColumnsFromSingleSelect(field); } } + + assert(groupField != null); + add(BoardEvent.groupByField(groupField!)); } void _buildColumnsFromSingleSelect(GridFieldPB field) { diff --git a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_service.dart b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_service.dart index 78b6551f0f..7dc15a01ee 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_service.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/cell/cell_service/cell_service.dart @@ -17,7 +17,7 @@ import 'package:app_flowy/plugins/grid/application/field/field_service.dart'; import 'dart:convert' show utf8; import '../../field/field_cache.dart'; -import '../../field/type_option/type_option_data_controller.dart'; +import '../../field/type_option/type_option_context.dart'; import 'cell_field_notifier.dart'; part 'cell_service.freezed.dart'; part 'cell_data_loader.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/field_editor_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/field_editor_bloc.dart index 05c61eaf55..fc80964a87 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/field_editor_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/field_editor_bloc.dart @@ -2,9 +2,11 @@ import 'package:flowy_sdk/protobuf/flowy-grid/field_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'dart:async'; import 'package:dartz/dartz.dart'; -import 'type_option/type_option_data_controller.dart'; +import 'type_option/type_option_context.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; +import 'type_option/type_option_data_controller.dart'; + part 'field_editor_bloc.freezed.dart'; class FieldEditorBloc extends Bloc { diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/field_type_option_edit_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/field_type_option_edit_bloc.dart index ec18c7e5b5..5aa380cd72 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/field_type_option_edit_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/field_type_option_edit_bloc.dart @@ -2,6 +2,7 @@ import 'package:flowy_sdk/protobuf/flowy-grid/field_entities.pb.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; + import 'type_option/type_option_data_controller.dart'; part 'field_type_option_edit_bloc.freezed.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/date_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/date_bloc.dart index 1b9c3841ff..2b2a853bba 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/date_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/date_bloc.dart @@ -5,16 +5,9 @@ import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; import 'package:protobuf/protobuf.dart'; -import 'type_option_data_controller.dart'; +import 'type_option_context.dart'; part 'date_bloc.freezed.dart'; -class DateTypeOptionDataParser extends TypeOptionDataParser { - @override - DateTypeOption fromBuffer(List buffer) { - return DateTypeOption.fromBuffer(buffer); - } -} - class DateTypeOptionBloc extends Bloc { DateTypeOptionBloc({required DateTypeOptionContext typeOptionContext}) diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/multi_select_type_option.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/multi_select_type_option.dart index acf46a0b37..1e99859a27 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/multi_select_type_option.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/multi_select_type_option.dart @@ -3,6 +3,7 @@ import 'package:flowy_sdk/protobuf/flowy-grid/multi_select_type_option.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-grid/select_option.pb.dart'; import 'dart:async'; import 'select_option_type_option_bloc.dart'; +import 'type_option_context.dart'; import 'type_option_data_controller.dart'; import 'type_option_service.dart'; import 'package:protobuf/protobuf.dart'; @@ -72,11 +73,3 @@ class MultiSelectTypeOptionContext }; } } - -class MultiSelectTypeOptionWidgetDataParser - extends TypeOptionDataParser { - @override - MultiSelectTypeOption fromBuffer(List buffer) { - return MultiSelectTypeOption.fromBuffer(buffer); - } -} diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_bloc.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_bloc.dart index 7b723324bf..d53c5b9cda 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_bloc.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/number_bloc.dart @@ -4,18 +4,10 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'dart:async'; import 'package:protobuf/protobuf.dart'; -import 'type_option_data_controller.dart'; +import 'type_option_context.dart'; part 'number_bloc.freezed.dart'; -class NumberTypeOptionWidgetDataParser - extends TypeOptionDataParser { - @override - NumberTypeOption fromBuffer(List buffer) { - return NumberTypeOption.fromBuffer(buffer); - } -} - class NumberTypeOptionBloc extends Bloc { NumberTypeOptionBloc({required NumberTypeOptionContext typeOptionContext}) diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/single_select_type_option.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/single_select_type_option.dart index d8f728f1b5..8ba03c0bc7 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/single_select_type_option.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/single_select_type_option.dart @@ -4,20 +4,26 @@ import 'package:flowy_sdk/protobuf/flowy-grid/single_select_type_option.pb.dart' import 'dart:async'; import 'package:protobuf/protobuf.dart'; import 'select_option_type_option_bloc.dart'; -import 'type_option_data_controller.dart'; +import 'type_option_context.dart'; import 'type_option_service.dart'; -class SingleSelectTypeOptionContext with ISelectOptionAction { +class SingleSelectAction with ISelectOptionAction { + final String gridId; + final String fieldId; + final SingleSelectTypeOptionContext typeOptionContext; final TypeOptionFFIService service; - SingleSelectTypeOptionContext({ - required SingleSelectTypeOptionWidgetDataParser dataBuilder, - required TypeOptionDataController dataController, - }) : service = TypeOptionFFIService( - gridId: dataController.gridId, - fieldId: dataController.field.id, - ), - super(dataParser: dataBuilder, dataController: dataController); + SingleSelectAction({ + required this.gridId, + required this.fieldId, + required this.typeOptionContext, + }) : service = TypeOptionFFIService(gridId: gridId, fieldId: fieldId); + + SingleSelectTypeOptionPB get typeOption => typeOptionContext.typeOption; + + set typeOption(SingleSelectTypeOptionPB newTypeOption) { + typeOptionContext.typeOption = newTypeOption; + } @override List Function(SelectOptionPB) get deleteOption { @@ -71,11 +77,3 @@ class SingleSelectTypeOptionContext with ISelectOptionAction { }; } } - -class SingleSelectTypeOptionWidgetDataParser - extends TypeOptionDataParser { - @override - SingleSelectTypeOptionPB fromBuffer(List buffer) { - return SingleSelectTypeOptionPB.fromBuffer(buffer); - } -} diff --git a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_data_controller.dart b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_data_controller.dart index 424abc87ce..b28cdcdb7d 100644 --- a/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_data_controller.dart +++ b/frontend/app_flowy/lib/plugins/grid/application/field/type_option/type_option_data_controller.dart @@ -1,127 +1,12 @@ import 'package:flowy_infra/notifier.dart'; -import 'package:flowy_sdk/dispatch/dispatch.dart'; import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart'; -import 'package:flowy_sdk/protobuf/flowy-grid/checkbox_type_option.pb.dart'; -import 'package:flowy_sdk/protobuf/flowy-grid/date_type_option.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-grid/field_entities.pb.dart'; import 'package:app_flowy/plugins/grid/application/field/field_service.dart'; import 'package:dartz/dartz.dart'; -import 'package:flowy_sdk/protobuf/flowy-grid/number_type_option.pb.dart'; -import 'package:flowy_sdk/protobuf/flowy-grid/single_select_type_option.pb.dart'; -import 'package:flowy_sdk/protobuf/flowy-grid/text_type_option.pb.dart'; -import 'package:flowy_sdk/protobuf/flowy-grid/url_type_option.pb.dart'; import 'package:protobuf/protobuf.dart'; import 'package:flowy_sdk/log.dart'; -abstract class TypeOptionDataParser { - T fromBuffer(List buffer); -} - -typedef NumberTypeOptionContext = TypeOptionContext; -typedef RichTextTypeOptionContext = TypeOptionContext; -typedef CheckboxTypeOptionContext = TypeOptionContext; -typedef URLTypeOptionContext = TypeOptionContext; -typedef DateTypeOptionContext = TypeOptionContext; - -typedef SingleSelectTypeOptionContext - = TypeOptionContext; - -class TypeOptionContext { - T? _typeOptionObject; - final TypeOptionDataParser dataParser; - final TypeOptionDataController _dataController; - - TypeOptionContext({ - required this.dataParser, - required TypeOptionDataController dataController, - }) : _dataController = dataController; - - String get gridId => _dataController.gridId; - - Future loadTypeOptionData({ - required void Function(T) onCompleted, - required void Function(FlowyError) onError, - }) async { - await _dataController.loadTypeOptionData().then((result) { - result.fold((l) => null, (err) => onError(err)); - }); - - onCompleted(typeOption); - } - - T get typeOption { - if (_typeOptionObject != null) { - return _typeOptionObject!; - } - - final T object = _dataController.getTypeOption(dataParser); - _typeOptionObject = object; - return object; - } - - set typeOption(T typeOption) { - _dataController.typeOptionData = typeOption.writeToBuffer(); - _typeOptionObject = typeOption; - } -} - -abstract class TypeOptionFieldDelegate { - void onFieldChanged(void Function(String) callback); - void dispose(); -} - -abstract class IFieldTypeOptionLoader { - String get gridId; - Future> load(); - - Future> switchToField( - String fieldId, FieldType fieldType) { - final payload = EditFieldPayloadPB.create() - ..gridId = gridId - ..fieldId = fieldId - ..fieldType = fieldType; - - return GridEventSwitchToField(payload).send(); - } -} - -class NewFieldTypeOptionLoader extends IFieldTypeOptionLoader { - @override - final String gridId; - NewFieldTypeOptionLoader({ - required this.gridId, - }); - - @override - Future> load() { - final payload = CreateFieldPayloadPB.create() - ..gridId = gridId - ..fieldType = FieldType.RichText; - - return GridEventCreateFieldTypeOption(payload).send(); - } -} - -class FieldTypeOptionLoader extends IFieldTypeOptionLoader { - @override - final String gridId; - final GridFieldPB field; - - FieldTypeOptionLoader({ - required this.gridId, - required this.field, - }); - - @override - Future> load() { - final payload = GridFieldTypeOptionIdPB.create() - ..gridId = gridId - ..fieldId = field.id - ..fieldType = field.fieldType; - - return GridEventGetFieldTypeOption(payload).send(); - } -} +import 'type_option_context.dart'; class TypeOptionDataController { final String gridId; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/date_cell/date_editor.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/date_cell/date_editor.dart index a439506815..bfcc36439c 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/date_cell/date_editor.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/cell/date_cell/date_editor.dart @@ -1,5 +1,6 @@ import 'package:app_flowy/generated/locale_keys.g.dart'; import 'package:app_flowy/plugins/grid/application/cell/date_cal_bloc.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra/image.dart'; import 'package:flowy_infra/theme.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell.dart index f66d5bf6d8..cb8df60591 100755 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_cell.dart @@ -1,6 +1,6 @@ import 'package:app_flowy/plugins/grid/application/field/field_cell_bloc.dart'; import 'package:app_flowy/plugins/grid/application/field/field_service.dart'; -import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:flowy_infra/image.dart'; import 'package:flowy_infra/theme.dart'; import 'package:flowy_infra_ui/style_widget/button.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_editor.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_editor.dart index 1a9a0ead83..efa70bb81a 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_editor.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/field_editor.dart @@ -1,5 +1,5 @@ import 'package:app_flowy/plugins/grid/application/field/field_editor_bloc.dart'; -import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/style_widget/text.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/grid_header.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/grid_header.dart index cad7e300f8..4b5f364c0d 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/grid_header.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/grid_header.dart @@ -1,5 +1,5 @@ import 'package:app_flowy/plugins/grid/application/field/field_cache.dart'; -import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:app_flowy/startup/startup.dart'; import 'package:app_flowy/plugins/grid/application/prelude.dart'; import 'package:flowy_infra/image.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/builder.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/builder.dart index d89dc26a68..8a6edcbf2c 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/builder.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/builder.dart @@ -1,6 +1,7 @@ import 'dart:typed_data'; import 'package:app_flowy/plugins/grid/application/field/type_option/multi_select_type_option.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; import 'package:flowy_sdk/protobuf/flowy-grid/checkbox_type_option.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-grid/date_type_option.pb.dart'; @@ -86,7 +87,7 @@ TypeOptionWidgetBuilder makeTypeOptionWidgetBuilder({ gridId: gridId, fieldType: fieldType, dataController: dataController, - ) as SingleSelectTypeOptionContext, + ), overlayDelegate, ); case FieldType.MultiSelect: @@ -165,7 +166,7 @@ TypeOptionContext case FieldType.SingleSelect: return SingleSelectTypeOptionContext( dataController: dataController, - dataBuilder: SingleSelectTypeOptionWidgetDataParser(), + dataParser: SingleSelectTypeOptionWidgetDataParser(), ) as TypeOptionContext; case FieldType.MultiSelect: return MultiSelectTypeOptionContext( diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/checkbox.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/checkbox.dart index fc4c4c16a7..92511a888a 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/checkbox.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/checkbox.dart @@ -1,18 +1,7 @@ -import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; -import 'package:flowy_sdk/protobuf/flowy-grid/checkbox_type_option.pb.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:flutter/material.dart'; import 'builder.dart'; -typedef CheckboxTypeOptionContext = TypeOptionContext; - -class CheckboxTypeOptionWidgetDataParser - extends TypeOptionDataParser { - @override - CheckboxTypeOption fromBuffer(List buffer) { - return CheckboxTypeOption.fromBuffer(buffer); - } -} - class CheckboxTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder { CheckboxTypeOptionWidgetBuilder(CheckboxTypeOptionContext typeOptionContext); diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/date.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/date.dart index c162595b88..51433037a3 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/date.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/date.dart @@ -1,4 +1,5 @@ import 'package:app_flowy/plugins/grid/application/field/type_option/date_bloc.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:easy_localization/easy_localization.dart' hide DateFormat; import 'package:app_flowy/generated/locale_keys.g.dart'; import 'package:flowy_infra/image.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/number.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/number.dart index 8e4e53b40c..d15be4a6a0 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/number.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/number.dart @@ -1,5 +1,6 @@ import 'package:app_flowy/plugins/grid/application/field/type_option/number_bloc.dart'; import 'package:app_flowy/plugins/grid/application/field/type_option/number_format_bloc.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:flowy_infra/image.dart'; import 'package:flowy_infra/theme.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/rich_text.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/rich_text.dart index c24f98a28f..1ca0386c31 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/rich_text.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/rich_text.dart @@ -1,16 +1,7 @@ -import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; -import 'package:flowy_sdk/protobuf/flowy-grid/text_type_option.pb.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:flutter/material.dart'; import 'builder.dart'; -class RichTextTypeOptionWidgetDataParser - extends TypeOptionDataParser { - @override - RichTextTypeOption fromBuffer(List buffer) { - return RichTextTypeOption.fromBuffer(buffer); - } -} - class RichTextTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder { RichTextTypeOptionWidgetBuilder(RichTextTypeOptionContext typeOptionContext); diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/single_select.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/single_select.dart index 57940ecbee..d9d699fdff 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/single_select.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/single_select.dart @@ -1,4 +1,5 @@ import 'package:app_flowy/plugins/grid/application/field/type_option/single_select_type_option.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:flutter/material.dart'; import '../field_type_option_editor.dart'; import 'builder.dart'; @@ -8,10 +9,14 @@ class SingleSelectTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder { final SingleSelectTypeOptionWidget _widget; SingleSelectTypeOptionWidgetBuilder( - SingleSelectTypeOptionContext typeOptionContext, + SingleSelectTypeOptionContext singleSelectTypeOption, TypeOptionOverlayDelegate overlayDelegate, ) : _widget = SingleSelectTypeOptionWidget( - typeOptionContext: typeOptionContext, + selectOptionAction: SingleSelectAction( + fieldId: singleSelectTypeOption.fieldId, + gridId: singleSelectTypeOption.gridId, + typeOptionContext: singleSelectTypeOption, + ), overlayDelegate: overlayDelegate, ); @@ -20,11 +25,11 @@ class SingleSelectTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder { } class SingleSelectTypeOptionWidget extends TypeOptionWidget { - final SingleSelectTypeOptionContext typeOptionContext; + final SingleSelectAction selectOptionAction; final TypeOptionOverlayDelegate overlayDelegate; const SingleSelectTypeOptionWidget({ - required this.typeOptionContext, + required this.selectOptionAction, required this.overlayDelegate, Key? key, }) : super(key: key); @@ -32,10 +37,10 @@ class SingleSelectTypeOptionWidget extends TypeOptionWidget { @override Widget build(BuildContext context) { return SelectOptionTypeOptionWidget( - options: typeOptionContext.typeOption.options, + options: selectOptionAction.typeOption.options, beginEdit: () => overlayDelegate.hideOverlay(context), overlayDelegate: overlayDelegate, - typeOptionAction: typeOptionContext, + typeOptionAction: selectOptionAction, // key: ValueKey(state.typeOption.hashCode), ); } diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/url.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/url.dart index 07a341493a..9997837d63 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/url.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/header/type_option/url.dart @@ -1,16 +1,7 @@ -import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; -import 'package:flowy_sdk/protobuf/flowy-grid/url_type_option.pb.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:flutter/material.dart'; import 'builder.dart'; -class URLTypeOptionWidgetDataParser - extends TypeOptionDataParser { - @override - URLTypeOption fromBuffer(List buffer) { - return URLTypeOption.fromBuffer(buffer); - } -} - class URLTypeOptionWidgetBuilder extends TypeOptionWidgetBuilder { URLTypeOptionWidgetBuilder(URLTypeOptionContext typeOptionContext); diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_detail.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_detail.dart index 3412d54e1e..a98fcfa688 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_detail.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_detail.dart @@ -1,5 +1,5 @@ import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; -import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:app_flowy/plugins/grid/application/row/row_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/row/row_detail_bloc.dart'; import 'package:flowy_infra/image.dart'; diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_property.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_property.dart index 290da43f95..b49cce1f11 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_property.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/toolbar/grid_property.dart @@ -1,4 +1,4 @@ -import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_data_controller.dart'; +import 'package:app_flowy/plugins/grid/application/field/type_option/type_option_context.dart'; import 'package:app_flowy/startup/startup.dart'; import 'package:app_flowy/plugins/grid/application/setting/property_bloc.dart'; import 'package:app_flowy/plugins/grid/presentation/widgets/header/field_type_extension.dart';