39 lines
1.0 KiB
Rust
Raw Normal View History

2021-07-23 08:14:45 +08:00
use crate::{
2021-07-31 10:50:56 +08:00
errors::DocError,
2021-07-23 08:14:45 +08:00
event::EditorEvent,
services::{doc_controller::DocController, file_manager::FileManager, server::construct_doc_server},
2021-07-23 08:14:45 +08:00
};
use flowy_database::DBConnection;
2021-07-22 22:26:38 +08:00
use flowy_dispatch::prelude::*;
2021-07-23 15:00:13 +08:00
use std::sync::Arc;
use tokio::sync::RwLock;
2021-07-22 22:26:38 +08:00
2021-07-31 10:50:56 +08:00
pub trait DocumentUser: Send + Sync {
fn user_doc_dir(&self) -> Result<String, DocError>;
fn user_id(&self) -> Result<String, DocError>;
fn token(&self) -> Result<String, DocError>;
}
2021-09-11 14:26:30 +08:00
pub enum DocumentType {
Doc,
}
pub struct Document {
user: Arc<dyn DocumentUser>,
file_manager: RwLock<FileManager>,
pub doc: Arc<DocController>,
}
2021-07-22 22:26:38 +08:00
2021-09-11 14:26:30 +08:00
impl Document {
pub fn new(user: Arc<dyn DocumentUser>) -> Document {
let server = construct_doc_server();
let doc_controller = Arc::new(DocController::new(server.clone(), user.clone()));
let file_manager = RwLock::new(FileManager::new(user.clone()));
Self {
user,
file_manager,
doc: doc_controller,
}
}
2021-07-22 22:26:38 +08:00
}