mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-10-31 18:15:09 +00:00 
			
		
		
		
	 74d9d427bd
			
		
	
	
		74d9d427bd
		
			
		
	
	
	
	
		
			
			* feat: show block in notification item * feat: jump to block action * fix: conflict after merge main * fix: missing import after merge main
		
			
				
	
	
		
			104 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:appflowy_backend/dispatch/dispatch.dart';
 | |
| import 'package:appflowy_backend/protobuf/flowy-document2/entities.pb.dart';
 | |
| import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';
 | |
| import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
 | |
| import 'package:dartz/dartz.dart';
 | |
| 
 | |
| class DocumentService {
 | |
|   // unused now.
 | |
|   Future<Either<FlowyError, Unit>> createDocument({
 | |
|     required ViewPB view,
 | |
|   }) async {
 | |
|     final canOpen = await openDocument(viewId: view.id);
 | |
|     if (canOpen.isRight()) {
 | |
|       return const Right(unit);
 | |
|     }
 | |
|     final payload = CreateDocumentPayloadPB()..documentId = view.id;
 | |
|     final result = await DocumentEventCreateDocument(payload).send();
 | |
|     return result.swap();
 | |
|   }
 | |
| 
 | |
|   Future<Either<FlowyError, DocumentDataPB>> openDocument({
 | |
|     required String viewId,
 | |
|   }) async {
 | |
|     final payload = OpenDocumentPayloadPB()..documentId = viewId;
 | |
|     final result = await DocumentEventOpenDocument(payload).send();
 | |
|     return result.swap();
 | |
|   }
 | |
| 
 | |
|   Future<Either<FlowyError, BlockPB>> getBlockFromDocument({
 | |
|     required DocumentDataPB document,
 | |
|     required String blockId,
 | |
|   }) async {
 | |
|     final block = document.blocks[blockId];
 | |
| 
 | |
|     if (block != null) {
 | |
|       return right(block);
 | |
|     }
 | |
| 
 | |
|     return left(
 | |
|       FlowyError(
 | |
|         msg: 'Block($blockId) not found in Document(${document.pageId})',
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   Future<Either<FlowyError, Unit>> closeDocument({
 | |
|     required ViewPB view,
 | |
|   }) async {
 | |
|     final payload = CloseDocumentPayloadPB()..documentId = view.id;
 | |
|     final result = await DocumentEventCloseDocument(payload).send();
 | |
|     return result.swap();
 | |
|   }
 | |
| 
 | |
|   Future<Either<FlowyError, Unit>> applyAction({
 | |
|     required String documentId,
 | |
|     required Iterable<BlockActionPB> actions,
 | |
|   }) async {
 | |
|     final payload = ApplyActionPayloadPB(
 | |
|       documentId: documentId,
 | |
|       actions: actions,
 | |
|     );
 | |
|     final result = await DocumentEventApplyAction(payload).send();
 | |
|     return result.swap();
 | |
|   }
 | |
| 
 | |
|   /// Creates a new external text.
 | |
|   ///
 | |
|   /// Normally, it's used to the block that needs sync long text.
 | |
|   ///
 | |
|   /// the delta parameter is the json representation of the delta.
 | |
|   Future<Either<FlowyError, Unit>> createExternalText({
 | |
|     required String documentId,
 | |
|     required String textId,
 | |
|     String? delta,
 | |
|   }) async {
 | |
|     final payload = TextDeltaPayloadPB(
 | |
|       documentId: documentId,
 | |
|       textId: textId,
 | |
|       delta: delta,
 | |
|     );
 | |
|     final result = await DocumentEventCreateText(payload).send();
 | |
|     return result.swap();
 | |
|   }
 | |
| 
 | |
|   /// Updates the external text.
 | |
|   ///
 | |
|   /// this function is compatible with the [createExternalText] function.
 | |
|   ///
 | |
|   /// the delta parameter is the json representation of the delta too.
 | |
|   Future<Either<FlowyError, Unit>> updateExternalText({
 | |
|     required String documentId,
 | |
|     required String textId,
 | |
|     String? delta,
 | |
|   }) async {
 | |
|     final payload = TextDeltaPayloadPB(
 | |
|       documentId: documentId,
 | |
|       textId: textId,
 | |
|       delta: delta,
 | |
|     );
 | |
|     final result = await DocumentEventApplyTextDeltaEvent(payload).send();
 | |
|     return result.swap();
 | |
|   }
 | |
| }
 |