本文档涵盖了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是所有视图和文档管理操作的中央协调者。它使用协作数据结构维护文件夹状态,并提供视图生命周期管理的方法。
| 组件 | 目的 | 关键方法 |
|---|---|---|
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
文件夹系统使用全面的事件驱动架构来处理所有视图操作
| 事件类别 | 事件 | 目的 |
|---|---|---|
| 工作区 | ReadCurrentWorkspace、ReadWorkspaceViews | 工作区级操作 |
| 视图 CRUD | CreateView、GetView、UpdateView、DeleteView | 基本视图操作 |
| 组织架构 | MoveView、MoveNestedView、DuplicateView | 视图组织 |
| 合集 | ToggleFavorite、UpdateRecentViews | 管理收藏夹和最近使用的视图 |
| 发布 | PublishView、UnpublishViews、SetPublishName | 内容发布 |
| 共享 | SharePageWithUser、GetSharedUsers | 视图共享 |
来源: 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