builder.rs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. use crate::util::make_operations_from_revisions;
  2. use crate::{
  3. client_folder::{default_folder_operations, FolderPad},
  4. entities::revision::Revision,
  5. errors::CollaborateResult,
  6. };
  7. use crate::server_folder::FolderOperations;
  8. use flowy_folder_data_model::revision::{TrashRevision, WorkspaceRevision};
  9. use serde::{Deserialize, Serialize};
  10. #[derive(Serialize, Deserialize)]
  11. pub(crate) struct FolderPadBuilder {
  12. workspaces: Vec<WorkspaceRevision>,
  13. trash: Vec<TrashRevision>,
  14. }
  15. impl FolderPadBuilder {
  16. pub(crate) fn new() -> Self {
  17. Self {
  18. workspaces: vec![],
  19. trash: vec![],
  20. }
  21. }
  22. #[allow(dead_code)]
  23. pub(crate) fn with_workspace(mut self, workspaces: Vec<WorkspaceRevision>) -> Self {
  24. self.workspaces = workspaces;
  25. self
  26. }
  27. #[allow(dead_code)]
  28. pub(crate) fn with_trash(mut self, trash: Vec<TrashRevision>) -> Self {
  29. self.trash = trash;
  30. self
  31. }
  32. pub(crate) fn build_with_revisions(self, revisions: Vec<Revision>) -> CollaborateResult<FolderPad> {
  33. let mut operations: FolderOperations = make_operations_from_revisions(revisions)?;
  34. if operations.is_empty() {
  35. operations = default_folder_operations();
  36. }
  37. FolderPad::from_operations(operations)
  38. }
  39. #[allow(dead_code)]
  40. pub(crate) fn build(self) -> CollaborateResult<FolderPad> {
  41. FolderPad::new(self.workspaces, self.trash)
  42. }
  43. }