2021-07-14 21:12:52 +08:00
|
|
|
use crate::{
|
2022-07-19 14:11:29 +08:00
|
|
|
entities::app::{AppIdPB, AppPB, CreateAppParams, CreateAppPayloadPB, UpdateAppParams, UpdateAppPayloadPB},
|
2021-12-14 18:04:51 +08:00
|
|
|
errors::FlowyError,
|
2021-12-06 15:49:21 +08:00
|
|
|
services::{AppController, TrashController, ViewController},
|
2021-07-14 21:12:52 +08:00
|
|
|
};
|
2022-06-13 20:59:46 +08:00
|
|
|
use flowy_folder_data_model::revision::TrashRevision;
|
2022-02-25 22:27:44 +08:00
|
|
|
use lib_dispatch::prelude::{data_result, AppData, Data, DataResult};
|
2021-07-14 21:12:52 +08:00
|
|
|
use std::{convert::TryInto, sync::Arc};
|
|
|
|
|
2021-09-05 13:50:23 +08:00
|
|
|
pub(crate) async fn create_app_handler(
|
2022-07-19 14:11:29 +08:00
|
|
|
data: Data<CreateAppPayloadPB>,
|
2022-02-25 22:27:44 +08:00
|
|
|
controller: AppData<Arc<AppController>>,
|
2022-07-19 14:11:29 +08:00
|
|
|
) -> DataResult<AppPB, FlowyError> {
|
2021-07-14 21:12:52 +08:00
|
|
|
let params: CreateAppParams = data.into_inner().try_into()?;
|
2021-11-08 19:19:02 +08:00
|
|
|
let detail = controller.create_app_from_params(params).await?;
|
2021-09-05 13:50:23 +08:00
|
|
|
|
2021-07-31 10:50:56 +08:00
|
|
|
data_result(detail)
|
2021-07-14 21:12:52 +08:00
|
|
|
}
|
2021-07-20 15:51:49 +08:00
|
|
|
|
2021-10-01 19:39:08 +08:00
|
|
|
pub(crate) async fn delete_app_handler(
|
2022-07-19 14:11:29 +08:00
|
|
|
data: Data<AppIdPB>,
|
2022-02-25 22:27:44 +08:00
|
|
|
app_controller: AppData<Arc<AppController>>,
|
|
|
|
trash_controller: AppData<Arc<TrashController>>,
|
2021-12-14 18:04:51 +08:00
|
|
|
) -> Result<(), FlowyError> {
|
2022-07-19 14:11:29 +08:00
|
|
|
let params: AppIdPB = data.into_inner();
|
2022-01-14 09:09:25 +08:00
|
|
|
let trash = app_controller
|
2022-02-24 21:49:18 +08:00
|
|
|
.read_local_apps(vec![params.value])
|
2022-01-20 23:51:11 +08:00
|
|
|
.await?
|
2021-10-30 17:19:50 +08:00
|
|
|
.into_iter()
|
2022-06-13 20:59:46 +08:00
|
|
|
.map(|app_rev| app_rev.into())
|
|
|
|
.collect::<Vec<TrashRevision>>();
|
2021-10-30 17:19:50 +08:00
|
|
|
|
2021-12-29 00:34:00 +08:00
|
|
|
let _ = trash_controller.add(trash).await?;
|
2021-07-29 17:27:59 +08:00
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
2022-04-12 11:13:35 +08:00
|
|
|
#[tracing::instrument(level = "debug", skip(data, controller))]
|
2021-10-01 19:39:08 +08:00
|
|
|
pub(crate) async fn update_app_handler(
|
2022-07-19 14:11:29 +08:00
|
|
|
data: Data<UpdateAppPayloadPB>,
|
2022-02-25 22:27:44 +08:00
|
|
|
controller: AppData<Arc<AppController>>,
|
2021-12-14 18:04:51 +08:00
|
|
|
) -> Result<(), FlowyError> {
|
2021-07-29 17:27:59 +08:00
|
|
|
let params: UpdateAppParams = data.into_inner().try_into()?;
|
|
|
|
let _ = controller.update_app(params).await?;
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
2022-05-26 17:28:44 +08:00
|
|
|
#[tracing::instrument(level = "trace", skip(data, app_controller, view_controller))]
|
2021-09-05 13:50:23 +08:00
|
|
|
pub(crate) async fn read_app_handler(
|
2022-07-19 14:11:29 +08:00
|
|
|
data: Data<AppIdPB>,
|
2022-02-25 22:27:44 +08:00
|
|
|
app_controller: AppData<Arc<AppController>>,
|
|
|
|
view_controller: AppData<Arc<ViewController>>,
|
2022-07-19 14:11:29 +08:00
|
|
|
) -> DataResult<AppPB, FlowyError> {
|
|
|
|
let params: AppIdPB = data.into_inner();
|
2022-06-13 20:59:46 +08:00
|
|
|
let mut app_rev = app_controller.read_app(params.clone()).await?;
|
|
|
|
app_rev.belongings = view_controller.read_views_belong_to(¶ms.value).await?;
|
2021-07-20 15:51:49 +08:00
|
|
|
|
2022-06-13 20:59:46 +08:00
|
|
|
data_result(app_rev.into())
|
2021-07-20 15:51:49 +08:00
|
|
|
}
|