import 'package:appflowy/startup/plugin/plugin.dart'; import 'package:appflowy/workspace/application/view/view_listener.dart'; import 'package:dartz/dartz.dart'; import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart'; import 'package:flutter/material.dart'; class ViewPluginNotifier extends PluginNotifier> { final ViewListener? _viewListener; ViewPB view; @override final ValueNotifier> isDeleted = ValueNotifier(none()); @override final ValueNotifier isDisplayChanged = ValueNotifier(0); ViewPluginNotifier({ required this.view, }) : _viewListener = ViewListener(view: view) { _viewListener?.start( onViewUpdated: (result) { result.fold( (updatedView) { view = updatedView; isDisplayChanged.value = updatedView.hashCode; }, (err) => Log.error(err), ); }, onViewMoveToTrash: (result) { result.fold( (deletedView) => isDeleted.value = some(deletedView), (err) => Log.error(err), ); }, ); } @override void dispose() { isDeleted.dispose(); isDisplayChanged.dispose(); _viewListener?.stop(); } }