From da4220e02737d282df8f0ec9f4425be488580cad Mon Sep 17 00:00:00 2001 From: Neshura <neshura@neshweb.net> Date: Tue, 22 Apr 2025 13:27:32 +0200 Subject: [PATCH] Iterate over all returned posts from API rather than only the first one since pins stay at the top --- src/lemmy.rs | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/src/lemmy.rs b/src/lemmy.rs index 6afe1e5..2af495b 100644 --- a/src/lemmy.rs +++ b/src/lemmy.rs @@ -23,6 +23,15 @@ macro_rules! debug { }; } +macro_rules! info { + ($msg:tt) => { + match connected_to_journal() { + true => log::info!("[INFO] {}", $msg), + false => println!("[INFO] {}", $msg), + } + }; +} + macro_rules! error { ($msg:tt) => { match connected_to_journal() { @@ -397,24 +406,32 @@ impl Lemmy { let response: String = match self.get_data_query("/api/v3/post/list", &get_params).await { Some(data) => data, - None => return None, + None => { + error!("Unable to query post list"); + return None + }, }; let json_data: GetPostsResponse = match self.parse_json(&response).await { Some(data) => data, - None => return None, + None => { + error!("Unable to parse post data"); + return None + }, }; - if json_data.posts[0].post.name == post.name { - Some(json_data.posts[0].post.id) - } else { - None + for api_post in json_data.posts { + if api_post.post.name == post.name { + return Some(api_post.post.id); + } } + info!("Unable to find post {}", post.name); + None } async fn post_data_json<T: Serialize>(&self, route: &str, json: &T ) -> Option<String> { let res = HTTP_CLIENT .post(format!("{}{route}", &self.instance)) - .bearer_auth(&self.jwt_token.to_string()) + .bearer_auth(self.jwt_token.to_string()) .json(&json) .send() .await; @@ -424,7 +441,7 @@ impl Lemmy { async fn get_data_query<T: Serialize>(&self, route: &str, param: &T ) -> Option<String> { let res = HTTP_CLIENT .get(format!("{}{route}", &self.instance)) - .bearer_auth(&self.jwt_token.to_string()) + .bearer_auth(self.jwt_token.to_string()) .query(¶m) .send() .await;