| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 
							- import 'package:app_flowy/plugins/grid/application/field/field_service.dart';
 
- import 'package:appflowy_backend/log.dart';
 
- import 'package:flutter_bloc/flutter_bloc.dart';
 
- import 'package:freezed_annotation/freezed_annotation.dart';
 
- import 'dart:async';
 
- import '../field/field_controller.dart';
 
- part 'property_bloc.freezed.dart';
 
- class GridPropertyBloc extends Bloc<GridPropertyEvent, GridPropertyState> {
 
-   final GridFieldController _fieldController;
 
-   Function(List<FieldInfo>)? _onFieldsFn;
 
-   GridPropertyBloc(
 
-       {required String databaseId,
 
-       required GridFieldController fieldController})
 
-       : _fieldController = fieldController,
 
-         super(
 
-             GridPropertyState.initial(databaseId, fieldController.fieldInfos)) {
 
-     on<GridPropertyEvent>(
 
-       (event, emit) async {
 
-         await event.map(
 
-           initial: (_Initial value) {
 
-             _startListening();
 
-           },
 
-           setFieldVisibility: (_SetFieldVisibility value) async {
 
-             final fieldService =
 
-                 FieldService(databaseId: databaseId, fieldId: value.fieldId);
 
-             final result =
 
-                 await fieldService.updateField(visibility: value.visibility);
 
-             result.fold(
 
-               (l) => null,
 
-               (err) => Log.error(err),
 
-             );
 
-           },
 
-           didReceiveFieldUpdate: (_DidReceiveFieldUpdate value) {
 
-             emit(state.copyWith(fieldContexts: value.fields));
 
-           },
 
-           moveField: (_MoveField value) {
 
-             //
 
-           },
 
-         );
 
-       },
 
-     );
 
-   }
 
-   @override
 
-   Future<void> close() async {
 
-     if (_onFieldsFn != null) {
 
-       _fieldController.removeListener(onFieldsListener: _onFieldsFn!);
 
-       _onFieldsFn = null;
 
-     }
 
-     return super.close();
 
-   }
 
-   void _startListening() {
 
-     _onFieldsFn =
 
-         (fields) => add(GridPropertyEvent.didReceiveFieldUpdate(fields));
 
-     _fieldController.addListener(
 
-       onFields: _onFieldsFn,
 
-       listenWhen: () => !isClosed,
 
-     );
 
-   }
 
- }
 
- @freezed
 
- class GridPropertyEvent with _$GridPropertyEvent {
 
-   const factory GridPropertyEvent.initial() = _Initial;
 
-   const factory GridPropertyEvent.setFieldVisibility(
 
-       String fieldId, bool visibility) = _SetFieldVisibility;
 
-   const factory GridPropertyEvent.didReceiveFieldUpdate(
 
-       List<FieldInfo> fields) = _DidReceiveFieldUpdate;
 
-   const factory GridPropertyEvent.moveField(int fromIndex, int toIndex) =
 
-       _MoveField;
 
- }
 
- @freezed
 
- class GridPropertyState with _$GridPropertyState {
 
-   const factory GridPropertyState({
 
-     required String databaseId,
 
-     required List<FieldInfo> fieldContexts,
 
-   }) = _GridPropertyState;
 
-   factory GridPropertyState.initial(
 
-     String databaseId,
 
-     List<FieldInfo> fieldContexts,
 
-   ) =>
 
-       GridPropertyState(
 
-         databaseId: databaseId,
 
-         fieldContexts: fieldContexts,
 
-       );
 
- }
 
 
  |