| 
									
										
										
										
											2023-02-26 16:27:17 +08:00
										 |  |  | import 'package:appflowy/startup/plugin/plugin.dart'; | 
					
						
							|  |  |  | import 'package:appflowy/workspace/application/view/view_listener.dart'; | 
					
						
							| 
									
										
										
										
											2022-09-26 16:59:58 +08:00
										 |  |  | import 'package:dartz/dartz.dart'; | 
					
						
							| 
									
										
										
										
											2023-01-08 12:10:53 +08:00
										 |  |  | import 'package:appflowy_backend/log.dart'; | 
					
						
							| 
									
										
										
										
											2023-04-04 08:41:16 +08:00
										 |  |  | import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart'; | 
					
						
							| 
									
										
										
										
											2022-09-22 13:08:48 +08:00
										 |  |  | import 'package:flutter/material.dart'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-26 16:59:58 +08:00
										 |  |  | class ViewPluginNotifier extends PluginNotifier<Option<DeletedViewPB>> { | 
					
						
							| 
									
										
										
										
											2022-09-22 13:08:48 +08:00
										 |  |  |   final ViewListener? _viewListener; | 
					
						
							|  |  |  |   ViewPB view; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							| 
									
										
										
										
											2022-09-26 16:59:58 +08:00
										 |  |  |   final ValueNotifier<Option<DeletedViewPB>> isDeleted = ValueNotifier(none()); | 
					
						
							| 
									
										
										
										
											2022-09-22 13:08:48 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   ViewPluginNotifier({ | 
					
						
							|  |  |  |     required this.view, | 
					
						
							| 
									
										
										
										
											2023-06-14 22:16:33 +08:00
										 |  |  |   }) : _viewListener = ViewListener(viewId: view.id) { | 
					
						
							| 
									
										
										
										
											2023-06-20 23:48:34 +08:00
										 |  |  |     _viewListener?.start( | 
					
						
							|  |  |  |       onViewUpdated: (updatedView) { | 
					
						
							|  |  |  |         view = updatedView; | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       onViewMoveToTrash: (result) { | 
					
						
							|  |  |  |         result.fold( | 
					
						
							|  |  |  |           (deletedView) => isDeleted.value = some(deletedView), | 
					
						
							|  |  |  |           (err) => Log.error(err), | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2022-09-22 13:08:48 +08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   void dispose() { | 
					
						
							|  |  |  |     isDeleted.dispose(); | 
					
						
							|  |  |  |     _viewListener?.stop(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |