feat: support updating the view name and icon through document (#3099)

* feat: support updating the view name and icon through document

* fix: store expand pages

* fix: refactor text link

* fix: update cargo.toml

* fix: update test

* fix: update event map

* fix: move deal with icon codes to a single file

* fix: delete useless code from flutter

* fix: document banner

* fix: build error

* fix: update rust library

---------

Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
This commit is contained in:
Kilu.He
2023-08-04 19:27:14 +08:00
committed by GitHub
parent 70914e6228
commit 16a01e11ed
91 changed files with 1293 additions and 1295 deletions

View File

@ -1,5 +1,6 @@
use crate::script::{FolderScript::*, FolderTest};
use collab_folder::core::ViewLayout;
use flowy_folder2::entities::icon::{ViewIconPB, ViewIconTypePB};
#[tokio::test]
async fn read_all_workspace_test() {
@ -152,6 +153,32 @@ async fn view_update() {
assert_eq!(test.child_view.name, new_name);
}
#[tokio::test]
async fn view_icon_update_test() {
let mut test = FolderTest::new().await;
let view = test.child_view.clone();
let new_icon = ViewIconPB {
ty: ViewIconTypePB::Emoji,
value: "👍".to_owned(),
};
assert!(view.icon.is_none());
test
.run_scripts(vec![
UpdateViewIcon {
icon: Some(new_icon.clone()),
},
ReadView(view.id.clone()),
])
.await;
assert_eq!(test.child_view.icon, Some(new_icon));
test
.run_scripts(vec![UpdateViewIcon { icon: None }, ReadView(view.id)])
.await;
assert_eq!(test.child_view.icon, None);
}
#[tokio::test]
#[should_panic]
async fn view_delete() {
@ -263,8 +290,8 @@ async fn toggle_favorites() {
ReadView(view.id.clone()),
])
.await;
assert_eq!(test.child_view.is_favorite, true);
assert!(test.favorites.len() != 0);
assert!(test.child_view.is_favorite);
assert_ne!(test.favorites.len(), 0);
assert_eq!(test.favorites[0].id, view.id);
let view = test.child_view.clone();
@ -293,12 +320,12 @@ async fn delete_favorites() {
ReadView(view.id.clone()),
])
.await;
assert_eq!(test.child_view.is_favorite, true);
assert!(test.favorites.len() != 0);
assert!(test.child_view.is_favorite);
assert_ne!(test.favorites.len(), 0);
assert_eq!(test.favorites[0].id, view.id);
test.run_scripts(vec![DeleteView, ReadFavorites]).await;
assert!(test.favorites.len() == 0);
assert_eq!(test.favorites.len(), 0);
}
#[tokio::test]

View File

@ -1,5 +1,6 @@
use collab_folder::core::ViewLayout;
use flowy_folder2::entities::icon::{UpdateViewIconPayloadPB, ViewIconPB};
use flowy_folder2::entities::*;
use flowy_folder2::event_map::FolderEvent::*;
use flowy_test::event_builder::EventBuilder;
@ -42,6 +43,9 @@ pub enum FolderScript {
desc: Option<String>,
is_favorite: Option<bool>,
},
UpdateViewIcon {
icon: Option<ViewIconPB>,
},
DeleteView,
DeleteViews(Vec<String>),
MoveView {
@ -164,6 +168,9 @@ impl FolderTest {
} => {
update_view(sdk, &self.child_view.id, name, desc, is_favorite).await;
},
FolderScript::UpdateViewIcon { icon } => {
update_view_icon(sdk, &self.child_view.id, icon).await;
},
FolderScript::DeleteView => {
delete_view(sdk, vec![self.child_view.id.clone()]).await;
},
@ -333,6 +340,18 @@ pub async fn update_view(
.await;
}
pub async fn update_view_icon(sdk: &FlowyCoreTest, view_id: &str, icon: Option<ViewIconPB>) {
let request = UpdateViewIconPayloadPB {
view_id: view_id.to_string(),
icon,
};
EventBuilder::new(sdk.clone())
.event(UpdateViewIcon)
.payload(request)
.async_send()
.await;
}
pub async fn delete_view(sdk: &FlowyCoreTest, view_ids: Vec<String>) {
let request = RepeatedViewIdPB { items: view_ids };
EventBuilder::new(sdk.clone())