chore: add read view info event

This commit is contained in:
appflowy
2022-06-14 08:37:44 +08:00
parent f8ec4b3e24
commit ae4cc496fc
23 changed files with 289 additions and 96 deletions

View File

@ -59,6 +59,7 @@ pub fn create(folder: Arc<FolderManager>) -> Module {
module = module
.event(FolderEvent::CreateView, create_view_handler)
.event(FolderEvent::ReadView, read_view_handler)
.event(FolderEvent::ReadViewInfo, read_view_info_handler)
.event(FolderEvent::UpdateView, update_view_handler)
.event(FolderEvent::DeleteView, delete_view_handler)
.event(FolderEvent::DuplicateView, duplicate_view_handler)
@ -124,17 +125,20 @@ pub enum FolderEvent {
#[event(input = "ViewId")]
DuplicateView = 205,
#[event(input = "ViewId")]
CloseView = 206,
#[event(input = "ViewId", output = "ViewInfo")]
ReadViewInfo = 207,
#[event()]
CopyLink = 206,
CopyLink = 220,
#[event(input = "ViewId")]
SetLatestView = 207,
#[event(input = "ViewId")]
CloseView = 208,
SetLatestView = 221,
#[event(input = "MoveFolderItemPayload")]
MoveFolderItem = 209,
MoveFolderItem = 230,
#[event(output = "RepeatedTrash")]
ReadTrash = 300,

View File

@ -40,10 +40,11 @@ pub enum FolderEvent {
UpdateView = 203,
DeleteView = 204,
DuplicateView = 205,
CopyLink = 206,
SetLatestView = 207,
CloseView = 208,
MoveFolderItem = 209,
CloseView = 206,
ReadViewInfo = 207,
CopyLink = 220,
SetLatestView = 221,
MoveFolderItem = 230,
ReadTrash = 300,
PutbackTrash = 301,
DeleteTrash = 302,
@ -73,10 +74,11 @@ impl ::protobuf::ProtobufEnum for FolderEvent {
203 => ::std::option::Option::Some(FolderEvent::UpdateView),
204 => ::std::option::Option::Some(FolderEvent::DeleteView),
205 => ::std::option::Option::Some(FolderEvent::DuplicateView),
206 => ::std::option::Option::Some(FolderEvent::CopyLink),
207 => ::std::option::Option::Some(FolderEvent::SetLatestView),
208 => ::std::option::Option::Some(FolderEvent::CloseView),
209 => ::std::option::Option::Some(FolderEvent::MoveFolderItem),
206 => ::std::option::Option::Some(FolderEvent::CloseView),
207 => ::std::option::Option::Some(FolderEvent::ReadViewInfo),
220 => ::std::option::Option::Some(FolderEvent::CopyLink),
221 => ::std::option::Option::Some(FolderEvent::SetLatestView),
230 => ::std::option::Option::Some(FolderEvent::MoveFolderItem),
300 => ::std::option::Option::Some(FolderEvent::ReadTrash),
301 => ::std::option::Option::Some(FolderEvent::PutbackTrash),
302 => ::std::option::Option::Some(FolderEvent::DeleteTrash),
@ -103,9 +105,10 @@ impl ::protobuf::ProtobufEnum for FolderEvent {
FolderEvent::UpdateView,
FolderEvent::DeleteView,
FolderEvent::DuplicateView,
FolderEvent::CloseView,
FolderEvent::ReadViewInfo,
FolderEvent::CopyLink,
FolderEvent::SetLatestView,
FolderEvent::CloseView,
FolderEvent::MoveFolderItem,
FolderEvent::ReadTrash,
FolderEvent::PutbackTrash,
@ -140,19 +143,19 @@ impl ::protobuf::reflect::ProtobufValue for FolderEvent {
}
static file_descriptor_proto_data: &'static [u8] = b"\
\n\x0fevent_map.proto*\xc3\x03\n\x0bFolderEvent\x12\x13\n\x0fCreateWorks\
\n\x0fevent_map.proto*\xd6\x03\n\x0bFolderEvent\x12\x13\n\x0fCreateWorks\
pace\x10\0\x12\x14\n\x10ReadCurWorkspace\x10\x01\x12\x12\n\x0eReadWorksp\
aces\x10\x02\x12\x13\n\x0fDeleteWorkspace\x10\x03\x12\x11\n\rOpenWorkspa\
ce\x10\x04\x12\x15\n\x11ReadWorkspaceApps\x10\x05\x12\r\n\tCreateApp\x10\
e\x12\r\n\tDeleteApp\x10f\x12\x0b\n\x07ReadApp\x10g\x12\r\n\tUpdateApp\
\x10h\x12\x0f\n\nCreateView\x10\xc9\x01\x12\r\n\x08ReadView\x10\xca\x01\
\x12\x0f\n\nUpdateView\x10\xcb\x01\x12\x0f\n\nDeleteView\x10\xcc\x01\x12\
\x12\n\rDuplicateView\x10\xcd\x01\x12\r\n\x08CopyLink\x10\xce\x01\x12\
\x12\n\rSetLatestView\x10\xcf\x01\x12\x0e\n\tCloseView\x10\xd0\x01\x12\
\x13\n\x0eMoveFolderItem\x10\xd1\x01\x12\x0e\n\tReadTrash\x10\xac\x02\
\x12\x11\n\x0cPutbackTrash\x10\xad\x02\x12\x10\n\x0bDeleteTrash\x10\xae\
\x02\x12\x14\n\x0fRestoreAllTrash\x10\xaf\x02\x12\x13\n\x0eDeleteAllTras\
h\x10\xb0\x02b\x06proto3\
\x12\n\rDuplicateView\x10\xcd\x01\x12\x0e\n\tCloseView\x10\xce\x01\x12\
\x11\n\x0cReadViewInfo\x10\xcf\x01\x12\r\n\x08CopyLink\x10\xdc\x01\x12\
\x12\n\rSetLatestView\x10\xdd\x01\x12\x13\n\x0eMoveFolderItem\x10\xe6\
\x01\x12\x0e\n\tReadTrash\x10\xac\x02\x12\x11\n\x0cPutbackTrash\x10\xad\
\x02\x12\x10\n\x0bDeleteTrash\x10\xae\x02\x12\x14\n\x0fRestoreAllTrash\
\x10\xaf\x02\x12\x13\n\x0eDeleteAllTrash\x10\xb0\x02b\x06proto3\
";
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;

View File

@ -16,10 +16,11 @@ enum FolderEvent {
UpdateView = 203;
DeleteView = 204;
DuplicateView = 205;
CopyLink = 206;
SetLatestView = 207;
CloseView = 208;
MoveFolderItem = 209;
CloseView = 206;
ReadViewInfo = 207;
CopyLink = 220;
SetLatestView = 221;
MoveFolderItem = 230;
ReadTrash = 300;
PutbackTrash = 301;
DeleteTrash = 302;

View File

@ -9,7 +9,6 @@ use crate::{
};
use flowy_database::ConnectionPool;
use flowy_error::{FlowyError, FlowyResult};
use flowy_folder_data_model::revision::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision};
use flowy_revision::disk::{RevisionRecord, RevisionState};
use flowy_revision::mk_revision_disk_cache;

View File

@ -10,6 +10,7 @@ use flowy_database::DBConnection;
use flowy_error::FlowyResult;
use flowy_folder_data_model::revision::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision};
/// V1Transaction is deprecated since version 0.0.2 version
pub struct V1Transaction<'a>(pub &'a DBConnection);
impl<'a> FolderPersistenceTransaction for V1Transaction<'a> {

View File

@ -3,7 +3,6 @@ use crate::services::{
persistence::{AppChangeset, FolderPersistenceTransaction, ViewChangeset, WorkspaceChangeset},
};
use flowy_error::{FlowyError, FlowyResult};
use flowy_folder_data_model::revision::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision};
use std::sync::Arc;

View File

@ -15,6 +15,7 @@ use crate::{
use bytes::Bytes;
use flowy_database::kv::KV;
use flowy_folder_data_model::entities::view::{gen_view_id, ViewDataType};
use flowy_folder_data_model::entities::{ViewExtData, ViewInfo};
use flowy_folder_data_model::revision::ViewRevision;
use flowy_sync::entities::text_block_info::TextBlockId;
use futures::{FutureExt, StreamExt};
@ -121,6 +122,36 @@ impl ViewController {
Ok(view_rev)
}
#[tracing::instrument(level = "debug", skip(self, view_id), fields(view_id = %view_id.value), err)]
pub(crate) async fn read_view_info(&self, view_id: ViewId) -> Result<ViewInfo, FlowyError> {
let view_info = self
.persistence
.begin_transaction(|transaction| {
let view_rev = transaction.read_view(&view_id.value)?;
let items: Vec<View> = view_rev
.belongings
.into_iter()
.map(|view_rev| view_rev.into())
.collect();
let ext_data = ViewExtData::from(view_rev.ext_data);
let view_info = ViewInfo {
id: view_rev.id,
belong_to_id: view_rev.belong_to_id,
name: view_rev.name,
desc: view_rev.desc,
data_type: view_rev.data_type,
belongings: RepeatedView { items },
ext_data,
};
Ok(view_info)
})
.await?;
Ok(view_info)
}
pub(crate) async fn read_local_views(&self, ids: Vec<String>) -> Result<Vec<ViewRevision>, FlowyError> {
self.persistence
.begin_transaction(|transaction| {

View File

@ -35,13 +35,12 @@ pub(crate) async fn read_view_handler(
}
pub(crate) async fn read_view_info_handler(
_data: Data<ViewId>,
_controller: AppData<Arc<ViewController>>,
data: Data<ViewId>,
controller: AppData<Arc<ViewController>>,
) -> DataResult<ViewInfo, FlowyError> {
// For the moment, app and view can contains lots of views. Reading the view
// belongings using the view_id.
// view.belongings = controller.read_views_belong_to(&view_id.value).await?;
todo!()
let view_id: ViewId = data.into_inner();
let view_info = controller.read_view_info(view_id.clone()).await?;
data_result(view_info)
}
#[tracing::instrument(level = "debug", skip(data, controller), err)]