菜单

视图与文档管理

相关源文件

本文档涵盖了AppFlowy中的视图和文档管理系统,该系统负责组织、管理和同步工作区内文档、数据库和其他内容类型的分层结构。该系统处理视图的创建、组织、生命周期管理、发布、共享和云同步。

有关数据库特定数据管理的信息,请参阅数据库和协作系统。有关用户身份验证和工作区级操作的信息,请参阅用户身份验证和工作区管理

系统架构概览

视图和文档管理系统围绕分层文件夹结构构建,其中每个工作区包含可以具有子视图的视图,形成一种树状组织。该系统支持多种视图类型,包括文档、数据库(网格、看板、日历)和聊天界面。

来源: frontend/rust-lib/flowy-folder/src/manager.rs74-82 frontend/rust-lib/flowy-folder/src/event_map.rs11-62 frontend/rust-lib/flowy-folder/src/view_operation.rs42-135

核心组件

FolderManager

FolderManager是所有视图和文档管理操作的中央协调者。它使用协作数据结构维护文件夹状态,并提供视图生命周期管理的方法。

组件目的关键方法
mutex_folder线程安全的文件夹状态存储协作文件夹数据
collab_builder创建协作对象构建文件夹协作
operation_handlers处理视图特定的操作委托给布局特定的处理程序
cloud_service云同步将数据同步到AppFlowy云

来源: frontend/rust-lib/flowy-folder/src/manager.rs74-82 frontend/rust-lib/flowy-folder/src/manager.rs566-616

视图实体和类型

该系统支持多种视图布局,每种布局都有特定的特征和功能

来源: frontend/rust-lib/flowy-folder/src/entities/view.rs40-89 frontend/rust-lib/flowy-folder/src/entities/view.rs187-204

事件系统

文件夹系统使用全面的事件驱动架构来处理所有视图操作

事件类别事件目的
工作区ReadCurrentWorkspaceReadWorkspaceViews工作区级操作
视图 CRUDCreateViewGetViewUpdateViewDeleteView基本视图操作
组织架构MoveViewMoveNestedViewDuplicateView视图组织
合集ToggleFavoriteUpdateRecentViews管理收藏夹和最近使用的视图
发布PublishViewUnpublishViewsSetPublishName内容发布
共享SharePageWithUserGetSharedUsers视图共享

来源: frontend/rust-lib/flowy-folder/src/event_map.rs64-249 frontend/rust-lib/flowy-folder/src/event_handler.rs81-603

操作处理程序

FolderOperationHandler trait 定义了视图类型特定操作的接口。每个视图布局都有自己的处理程序实现

来源: frontend/rust-lib/flowy-folder/src/view_operation.rs42-135 frontend/rust-lib/flowy-folder/src/manager.rs122-128

视图生命周期管理

创建过程

视图创建遵循一个结构化过程,涉及验证、处理程序委托和文件夹状态更新

来源: frontend/rust-lib/flowy-folder/src/event_handler.rs81-93 frontend/rust-lib/flowy-folder/src/manager.rs566-616

更新和修改

可以通过各种操作更新视图,包括元数据更改、层次结构修改和内容更新

操作方法描述
元数据更新update_view_with_params()名称、描述、图标更改
层次结构移动move_nested_view()更改父子关系
位置移动move_view()在同一父节点下重新排序
收藏夹切换toggle_favorites()添加到收藏夹/从收藏夹移除
锁定/解锁lock_view()unlock_view()阻止/允许修改

来源: frontend/rust-lib/flowy-folder/src/manager.rs1037-1118 frontend/rust-lib/flowy-folder/src/manager.rs905-991

删除和垃圾箱管理

该系统通过垃圾箱机制实现软删除

来源: frontend/rust-lib/flowy-folder/src/manager.rs818-885 frontend/rust-lib/flowy-folder/src/manager.rs862-885

层次结构和组织

父子关系

视图以分层树结构组织,其中每个视图可以有多个子视图,但只有一个父视图

来源: frontend/rust-lib/flowy-folder/src/manager.rs994-1000 frontend/rust-lib/flowy-folder/src/manager.rs186-206

视图分区

视图分为不同的分区,具有不同的可见性和访问控制

章节目的访问
公开对工作区成员可见ViewSectionPB::Public
私有用户特定的视图ViewSectionPB::Private
共享与外部用户共享的视图通过共享系统管理
垃圾箱软删除的视图已删除项目的特殊分区

来源: frontend/rust-lib/flowy-folder/src/entities/view.rs344-350 frontend/rust-lib/flowy-folder/src/manager.rs196-206

发布和共享

发布系统

视图可以发布,使其可以通过网络公开访问

来源: frontend/rust-lib/flowy-folder/src/manager.rs167-177 frontend/rust-lib/flowy-folder/src/manager.rs1432-1472

用户共享

视图可以与具有不同访问级别的特定用户共享

访问级别功能
只读仅查看内容
读写评论查看并添加评论
读写查看、评论和编辑
完全访问包括共享在内的所有权限

来源: frontend/rust-lib/flowy-folder/src/entities/view.rs727-773 frontend/rust-lib/flowy-folder/src/manager.rs1599-1637

云集成

服务抽象

该系统通过 FolderCloudService trait 支持本地和云存储

来源: frontend/rust-lib/flowy-folder-pub/src/cloud.rs18-125 frontend/rust-lib/flowy-server/src/local_server/impls/folder.rs26-205 frontend/rust-lib/flowy-server/src/af_cloud/impls/folder.rs28-326

数据同步

该系统通过编码的协作对象处理协作数据同步

同步操作目的方法
完全同步完整对象同步full_sync_collab_object()
批量创建批量对象创建batch_create_folder_collab_objects()
文档状态获取当前状态get_folder_doc_state()

来源: frontend/rust-lib/flowy-folder-pub/src/cloud.rs70-86 frontend/rust-lib/flowy-folder-pub/src/cloud.rs134-139

系统数据流

来源: frontend/rust-lib/flowy-folder/src/event_handler.rs13-20 frontend/rust-lib/flowy-folder/src/manager.rs209-261 frontend/rust-lib/flowy-folder/src/manager_observer.rs