folder.rs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. use anyhow::Error;
  2. use client_api::entity::QueryCollabParams;
  3. use collab::core::origin::CollabOrigin;
  4. use collab_define::CollabType;
  5. use flowy_folder_deps::cloud::{Folder, FolderCloudService, FolderData, FolderSnapshot, Workspace};
  6. use lib_infra::future::FutureResult;
  7. use crate::af_cloud::AFServer;
  8. pub(crate) struct AFCloudFolderCloudServiceImpl<T>(pub T);
  9. impl<T> FolderCloudService for AFCloudFolderCloudServiceImpl<T>
  10. where
  11. T: AFServer,
  12. {
  13. fn create_workspace(&self, _uid: i64, _name: &str) -> FutureResult<Workspace, Error> {
  14. FutureResult::new(async move { todo!() })
  15. }
  16. fn get_folder_data(&self, workspace_id: &str) -> FutureResult<Option<FolderData>, Error> {
  17. let workspace_id = workspace_id.to_string();
  18. let try_get_client = self.0.try_get_client();
  19. FutureResult::new(async move {
  20. let params = QueryCollabParams {
  21. object_id: workspace_id.clone(),
  22. collab_type: CollabType::Folder,
  23. };
  24. let updates = vec![try_get_client?.get_collab(params).await?];
  25. let folder =
  26. Folder::from_collab_raw_data(CollabOrigin::Empty, updates, &workspace_id, vec![])?;
  27. Ok(folder.get_folder_data())
  28. })
  29. }
  30. fn get_folder_snapshots(
  31. &self,
  32. _workspace_id: &str,
  33. _limit: usize,
  34. ) -> FutureResult<Vec<FolderSnapshot>, Error> {
  35. FutureResult::new(async move { Ok(vec![]) })
  36. }
  37. fn get_folder_updates(&self, workspace_id: &str, _uid: i64) -> FutureResult<Vec<Vec<u8>>, Error> {
  38. let workspace_id = workspace_id.to_string();
  39. let try_get_client = self.0.try_get_client();
  40. FutureResult::new(async move {
  41. let params = QueryCollabParams {
  42. object_id: workspace_id,
  43. collab_type: CollabType::Folder,
  44. };
  45. let updates = vec![try_get_client?.get_collab(params).await?];
  46. Ok(updates)
  47. })
  48. }
  49. fn service_name(&self) -> String {
  50. "AppFlowy Cloud".to_string()
  51. }
  52. }