Skip to content

Commit 5f8902e

Browse files
authored
Fix cookies not being persisted after HTTP requests (#328)
1 parent 089c7e8 commit 5f8902e

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

src-tauri/src/http_request.rs

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::error::Error::GenericError;
22
use crate::error::Result;
33
use crate::render::render_http_request;
44
use crate::response_err;
5-
use log::debug;
5+
use log::{debug, warn};
66
use reqwest_cookie_store::{CookieStore, CookieStoreMutex};
77
use std::sync::Arc;
88
use std::time::{Duration, Instant};
@@ -19,8 +19,8 @@ use yaak_http::sender::ReqwestSender;
1919
use yaak_http::transaction::HttpTransaction;
2020
use yaak_http::types::{SendableHttpRequest, SendableHttpRequestOptions, append_query_params};
2121
use yaak_models::models::{
22-
CookieJar, Environment, HttpRequest, HttpResponse, HttpResponseEvent, HttpResponseHeader,
23-
HttpResponseState, ProxySetting, ProxySettingAuth,
22+
Cookie, CookieJar, Environment, HttpRequest, HttpResponse, HttpResponseEvent,
23+
HttpResponseHeader, HttpResponseState, ProxySetting, ProxySettingAuth,
2424
};
2525
use yaak_models::query_manager::QueryManagerExt;
2626
use yaak_models::util::UpdateSource;
@@ -207,6 +207,29 @@ async fn send_http_request_inner<R: Runtime>(
207207
)
208208
.await;
209209

210+
// Persist cookies back to the database after the request completes
211+
if let Some((cookie_store, mut cj)) = maybe_cookie_manager {
212+
match cookie_store.lock() {
213+
Ok(store) => {
214+
let cookies: Vec<Cookie> = store
215+
.iter_any()
216+
.filter_map(|c| {
217+
// Convert cookie_store::Cookie -> yaak_models::Cookie via serde
218+
let json_cookie = serde_json::to_value(c).ok()?;
219+
serde_json::from_value(json_cookie).ok()
220+
})
221+
.collect();
222+
cj.cookies = cookies;
223+
if let Err(e) = window.db().upsert_cookie_jar(&cj, &update_source) {
224+
warn!("Failed to persist cookies to database: {}", e);
225+
}
226+
}
227+
Err(e) => {
228+
warn!("Failed to lock cookie store: {}", e);
229+
}
230+
}
231+
}
232+
210233
match final_resp {
211234
Ok(r) => Ok(r),
212235
Err(e) => match app_handle.db().get_http_response(&resp_id) {

0 commit comments

Comments
 (0)