@@ -3869,8 +3869,8 @@ fn parse_assistant_thread_open_stream(
38693869
38703870fn parse_assistant_thread_open_html ( html : & str ) -> Result < AssistantThread , KagiError > {
38713871 let document = Html :: parse_fragment ( html) ;
3872- let thread_selector = selector ( ".thread" ) ? ;
3873- let title_selector = selector ( ".title" ) ? ;
3872+ let thread_selector = Selector :: parse ( ".thread" ) . expect ( "valid CSS selector" ) ;
3873+ let title_selector = Selector :: parse ( ".title" ) . expect ( "valid CSS selector" ) ;
38743874
38753875 let element = document
38763876 . select ( & thread_selector)
@@ -3890,6 +3890,11 @@ fn parse_assistant_thread_open_html(html: &str) -> Result<AssistantThread, KagiE
38903890 . filter ( |value| !value. is_empty ( ) )
38913891 . ok_or_else ( || KagiError :: Parse ( "assistant thread html missing title" . to_string ( ) ) ) ?;
38923892
3893+ let folder_ids = serde_json:: from_str :: < Vec < String > > (
3894+ element. value ( ) . attr ( "data-folders" ) . unwrap_or ( "[]" ) ,
3895+ )
3896+ . unwrap_or_default ( ) ;
3897+
38933898 Ok ( AssistantThread {
38943899 id,
38953900 title,
@@ -3905,7 +3910,7 @@ fn parse_assistant_thread_open_html(html: &str) -> Result<AssistantThread, KagiE
39053910 . attr ( "data-public" )
39063911 . is_some_and ( |value| value == "true" ) ,
39073912 branch_id : String :: new ( ) ,
3908- folder_ids : Vec :: new ( ) ,
3913+ folder_ids,
39093914 } )
39103915}
39113916
@@ -3917,11 +3922,6 @@ fn format_received_frame_tags(tags: &[String]) -> String {
39173922 }
39183923}
39193924
3920- fn selector ( value : & str ) -> Result < Selector , KagiError > {
3921- Selector :: parse ( value)
3922- . map_err ( |error| KagiError :: Parse ( format ! ( "failed to parse selector `{value}`: {error:?}" ) ) )
3923- }
3924-
39253925fn parse_assistant_thread_list_stream (
39263926 body : & str ,
39273927) -> Result < AssistantThreadListResponse , KagiError > {
@@ -5862,6 +5862,7 @@ mod tests {
58625862 " data-saved=\" false\" \n " ,
58635863 " data-public=\" false\" \n " ,
58645864 " data-tags=\" []\" \n " ,
5865+ " data-folders='[\" folder-1\" , \" folder-2\" ]'\n " ,
58655866 " data-snippet=\" none\" \n " ,
58665867 " >\n " ,
58675868 " <i title=\" Temporary\" >temp</i>\n " ,
@@ -5883,7 +5884,7 @@ mod tests {
58835884 assert ! ( parsed. thread. created_at. is_empty( ) ) ;
58845885 assert ! ( parsed. thread. expires_at. is_empty( ) ) ;
58855886 assert ! ( parsed. thread. branch_id. is_empty( ) ) ;
5886- assert ! ( parsed. thread. folder_ids. is_empty ( ) ) ;
5887+ assert_eq ! ( parsed. thread. folder_ids, vec! [ "folder-1" , "folder-2" ] ) ;
58875888 assert_eq ! ( parsed. messages. len( ) , 1 ) ;
58885889 }
58895890
0 commit comments