@@ -6,6 +6,14 @@ import createBlock from "roamjs-components/writes/createBlock";
66import deleteBlock from "roamjs-components/writes/deleteBlock" ;
77import getAllPageNames from "roamjs-components/queries/getAllPageNames" ;
88import { type PageGroup } from "~/utils/getSuggestiveModeConfigSettings" ;
9+ import { setGlobalSetting } from "~/components/settings/utils/accessors" ;
10+
11+ const syncPageGroupsToBlockProps = ( groups : PageGroup [ ] ) => {
12+ setGlobalSetting (
13+ [ "Suggestive Mode" , "Page Groups" ] ,
14+ groups . map ( ( g ) => ( { name : g . name , pages : g . pages . map ( ( p ) => p . name ) } ) ) ,
15+ ) ;
16+ } ;
917
1018const PageGroupsPanel = ( {
1119 uid,
@@ -31,7 +39,12 @@ const PageGroupsPanel = ({
3139 parentUid : uid ,
3240 node : { text : name } ,
3341 } ) ;
34- setPageGroups ( [ ...pageGroups , { uid : newGroupUid , name, pages : [ ] } ] ) ;
42+ const updatedGroups = [
43+ ...pageGroups ,
44+ { uid : newGroupUid , name, pages : [ ] } ,
45+ ] ;
46+ setPageGroups ( updatedGroups ) ;
47+ syncPageGroupsToBlockProps ( updatedGroups ) ;
3548 setNewGroupName ( "" ) ;
3649 setGroupKeys ( ( prev ) => prev + 1 ) ;
3750 } catch ( e ) {
@@ -42,7 +55,9 @@ const PageGroupsPanel = ({
4255 const removeGroup = async ( groupUid : string ) => {
4356 try {
4457 await deleteBlock ( groupUid ) ;
45- setPageGroups ( pageGroups . filter ( ( g ) => g . uid !== groupUid ) ) ;
58+ const updatedGroups = pageGroups . filter ( ( g ) => g . uid !== groupUid ) ;
59+ setPageGroups ( updatedGroups ) ;
60+ syncPageGroupsToBlockProps ( updatedGroups ) ;
4661 } catch ( e ) {
4762 console . error ( "Error removing group" , e ) ;
4863 }
@@ -58,13 +73,13 @@ const PageGroupsPanel = ({
5873 parentUid : groupUid ,
5974 node : { text : page } ,
6075 } ) ;
61- setPageGroups (
62- pageGroups . map ( ( g ) =>
63- g . uid === groupUid
64- ? { ...g , pages : [ ...g . pages , { uid : newPageUid , name : page } ] }
65- : g ,
66- ) ,
76+ const updatedGroups = pageGroups . map ( ( g ) =>
77+ g . uid === groupUid
78+ ? { ...g , pages : [ ...g . pages , { uid : newPageUid , name : page } ] }
79+ : g ,
6780 ) ;
81+ setPageGroups ( updatedGroups ) ;
82+ syncPageGroupsToBlockProps ( updatedGroups ) ;
6883 setNewPageInputs ( ( prev ) => ( {
6984 ...prev ,
7085 [ groupUid ] : "" ,
@@ -81,13 +96,13 @@ const PageGroupsPanel = ({
8196 const removePageFromGroup = async ( groupUid : string , pageUid : string ) => {
8297 try {
8398 await deleteBlock ( pageUid ) ;
84- setPageGroups (
85- pageGroups . map ( ( g ) =>
86- g . uid === groupUid
87- ? { ...g , pages : g . pages . filter ( ( p ) => p . uid !== pageUid ) }
88- : g ,
89- ) ,
99+ const updatedGroups = pageGroups . map ( ( g ) =>
100+ g . uid === groupUid
101+ ? { ...g , pages : g . pages . filter ( ( p ) => p . uid !== pageUid ) }
102+ : g ,
90103 ) ;
104+ setPageGroups ( updatedGroups ) ;
105+ syncPageGroupsToBlockProps ( updatedGroups ) ;
91106 } catch ( e ) {
92107 console . error ( "Error removing page from group" , e ) ;
93108 }
0 commit comments