@@ -88,6 +88,24 @@ def __init__(
88
88
89
89
def start_monitoring (self ):
90
90
self ._monitor .poll_async ()
91
+
92
+ def _fetch_guest_space_data (self , records ):
93
+ """
94
+ guest users have an empty `space` dict, so get the space_id from the `space_view` dict instead,
95
+ and fetch the space data from the getPublicSpaceData endpoint.
96
+
97
+ Note: This mutates the records dict
98
+ """
99
+ space_id = list (records ["space_view" ].values ())[0 ]["value" ]["space_id" ]
100
+
101
+ space_data = self .post (
102
+ "getPublicSpaceData" , {"type" : "space-ids" , "spaceIds" : [space_id ]}
103
+ ).json ()
104
+
105
+ records ["space" ] = {
106
+ space ["id" ]: {"value" : space } for space in space_data ["results" ]
107
+ }
108
+
91
109
92
110
def _set_token (self , email = None , password = None ):
93
111
if not email :
@@ -98,6 +116,9 @@ def _set_token(self, email=None, password=None):
98
116
99
117
def _update_user_info (self ):
100
118
records = self .post ("loadUserContent" , {}).json ()["recordMap" ]
119
+ if not records ["space" ]:
120
+ self ._fetch_guest_space_data (records )
121
+
101
122
self ._store .store_recordmap (records )
102
123
self .current_user = self .get_user (list (records ["notion_user" ].keys ())[0 ])
103
124
self .current_space = self .get_space (list (records ["space" ].keys ())[0 ])
0 commit comments