2023-12-29 05:02:27 +00:00
|
|
|
use collab_folder::Folder;
|
2023-12-17 19:14:05 +00:00
|
|
|
use std::sync::Arc;
|
2024-01-12 06:34:59 +00:00
|
|
|
use tracing::{event, instrument};
|
2023-12-17 19:14:05 +00:00
|
|
|
|
2024-01-04 16:05:38 +00:00
|
|
|
use collab_integrate::CollabKVAction;
|
2023-12-17 19:14:05 +00:00
|
|
|
use flowy_error::{ErrorCode, FlowyError, FlowyResult};
|
2024-01-11 06:42:03 +00:00
|
|
|
use flowy_folder_pub::folder_builder::ParentChildViews;
|
2023-12-17 19:14:05 +00:00
|
|
|
|
|
|
|
use crate::entities::UserFolderPB;
|
|
|
|
use crate::manager::FolderUser;
|
|
|
|
|
|
|
|
pub(crate) fn folder_not_init_error() -> FlowyError {
|
|
|
|
FlowyError::internal().with_context("Folder not initialized")
|
|
|
|
}
|
|
|
|
|
|
|
|
pub(crate) fn is_exist_in_local_disk(
|
|
|
|
user: &Arc<dyn FolderUser>,
|
|
|
|
doc_id: &str,
|
|
|
|
) -> FlowyResult<bool> {
|
|
|
|
let uid = user.user_id()?;
|
|
|
|
if let Some(collab_db) = user.collab_db(uid)?.upgrade() {
|
|
|
|
let read_txn = collab_db.read_txn();
|
|
|
|
Ok(read_txn.is_exist(uid, doc_id))
|
|
|
|
} else {
|
|
|
|
Ok(false)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub(crate) fn workspace_data_not_sync_error(uid: i64, workspace_id: &str) -> FlowyError {
|
|
|
|
FlowyError::from(ErrorCode::WorkspaceDataNotSync).with_payload(UserFolderPB {
|
|
|
|
uid,
|
|
|
|
workspace_id: workspace_id.to_string(),
|
|
|
|
})
|
|
|
|
}
|
2023-12-29 05:02:27 +00:00
|
|
|
|
2024-01-12 06:34:59 +00:00
|
|
|
#[instrument(level = "debug", skip(folder, view))]
|
2023-12-29 05:02:27 +00:00
|
|
|
pub(crate) fn insert_parent_child_views(folder: &Folder, view: ParentChildViews) {
|
2024-01-12 06:34:59 +00:00
|
|
|
event!(
|
|
|
|
tracing::Level::DEBUG,
|
|
|
|
"Inserting view: {}, view children: {}",
|
|
|
|
view.parent_view.id,
|
|
|
|
view.child_views.len()
|
|
|
|
);
|
2023-12-29 05:02:27 +00:00
|
|
|
folder.insert_view(view.parent_view, None);
|
|
|
|
for child_view in view.child_views {
|
|
|
|
insert_parent_child_views(folder, child_view);
|
|
|
|
}
|
|
|
|
}
|