@@ -18,10 +18,11 @@ use crate::biz::workspace::ops::{
1818 get_reactions_on_published_view, remove_comment_on_published_view, remove_reaction_on_comment,
1919} ;
2020use crate :: biz:: workspace:: page_view:: {
21- add_recent_pages, append_block_at_the_end_of_page, create_database_view, create_page,
22- create_space, delete_all_pages_from_trash, delete_trash, favorite_page, get_page_view_collab,
23- move_page, move_page_to_trash, publish_page, reorder_favorite_page, restore_all_pages_from_trash,
24- restore_page_from_trash, unpublish_page, update_page, update_page_collab_data, update_space,
21+ add_recent_pages, append_block_at_the_end_of_page, create_database_view, create_folder_view,
22+ create_page, create_space, delete_all_pages_from_trash, delete_trash, favorite_page,
23+ get_page_view_collab, move_page, move_page_to_trash, publish_page, reorder_favorite_page,
24+ restore_all_pages_from_trash, restore_page_from_trash, unpublish_page, update_page,
25+ update_page_collab_data, update_space,
2526} ;
2627use crate :: biz:: workspace:: publish:: get_workspace_default_publish_view_info_meta;
2728use crate :: biz:: workspace:: quick_note:: {
@@ -184,6 +185,9 @@ pub fn workspace_scope() -> Scope {
184185 . service (
185186 web:: resource ( "/{workspace_id}/space/{view_id}" ) . route ( web:: patch ( ) . to ( update_space_handler) ) ,
186187 )
188+ . service (
189+ web:: resource ( "/{workspace_id}/folder-view" ) . route ( web:: post ( ) . to ( post_folder_view_handler) ) ,
190+ )
187191 . service (
188192 web:: resource ( "/{workspace_id}/page-view" ) . route ( web:: post ( ) . to ( post_page_view_handler) ) ,
189193 )
@@ -1253,6 +1257,32 @@ async fn update_space_handler(
12531257 Ok ( Json ( AppResponse :: Ok ( ) ) )
12541258}
12551259
1260+ async fn post_folder_view_handler (
1261+ user_uuid : UserUuid ,
1262+ path : web:: Path < Uuid > ,
1263+ payload : Json < CreateFolderViewParams > ,
1264+ state : Data < AppState > ,
1265+ server : Data < RealtimeServerAddr > ,
1266+ req : HttpRequest ,
1267+ ) -> Result < Json < AppResponse < Page > > > {
1268+ let uid = state. user_cache . get_user_uid ( & user_uuid) . await ?;
1269+ let workspace_uuid = path. into_inner ( ) ;
1270+ let user = realtime_user_for_web_request ( req. headers ( ) , uid) ?;
1271+ let page = create_folder_view (
1272+ & state. metrics . appflowy_web_metrics ,
1273+ server,
1274+ user,
1275+ & state. collab_access_control_storage ,
1276+ workspace_uuid,
1277+ & payload. parent_view_id ,
1278+ payload. layout . clone ( ) ,
1279+ payload. name . as_deref ( ) ,
1280+ payload. view_id ,
1281+ )
1282+ . await ?;
1283+ Ok ( Json ( AppResponse :: Ok ( ) . with_data ( page) ) )
1284+ }
1285+
12561286async fn post_page_view_handler (
12571287 user_uuid : UserUuid ,
12581288 path : web:: Path < Uuid > ,
0 commit comments