| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- import 'package:app_flowy/plugins/grid/application/setting/setting_service.dart';
 
- import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
 
- import 'package:flowy_sdk/protobuf/flowy-grid/setting_entities.pb.dart';
 
- import 'setting_listener.dart';
 
- typedef OnError = void Function(FlowyError);
 
- typedef OnSettingUpdated = void Function(GridSettingPB);
 
- class SettingController {
 
-   final String viewId;
 
-   final SettingFFIService _ffiService;
 
-   final SettingListener _listener;
 
-   OnSettingUpdated? _onSettingUpdated;
 
-   OnError? _onError;
 
-   GridSettingPB? _setting;
 
-   GridSettingPB? get setting => _setting;
 
-   SettingController({
 
-     required this.viewId,
 
-   })  : _ffiService = SettingFFIService(viewId: viewId),
 
-         _listener = SettingListener(gridId: viewId) {
 
-     // Load setting
 
-     _ffiService.getSetting().then((result) {
 
-       result.fold(
 
-         (newSetting) => updateSetting(newSetting),
 
-         (err) => _onError?.call(err),
 
-       );
 
-     });
 
-     // Listen on the seting changes
 
-     _listener.start(onSettingUpdated: (result) {
 
-       result.fold(
 
-         (newSetting) => updateSetting(newSetting),
 
-         (err) => _onError?.call(err),
 
-       );
 
-     });
 
-   }
 
-   void startListeing({
 
-     required OnSettingUpdated onSettingUpdated,
 
-     required OnError onError,
 
-   }) {
 
-     assert(_onSettingUpdated == null, 'Should call once');
 
-     assert(_onError == null, 'Should call once');
 
-     _onSettingUpdated = onSettingUpdated;
 
-     _onError = onError;
 
-   }
 
-   void updateSetting(GridSettingPB newSetting) {
 
-     _setting = newSetting;
 
-     _onSettingUpdated?.call(newSetting);
 
-   }
 
-   void dispose() {
 
-     _onSettingUpdated = null;
 
-     _onError = null;
 
-     _listener.stop();
 
-   }
 
- }
 
 
  |