wip, broke something

This commit is contained in:
Brandon Thomas committed 2025-12-18 18:36:32 -05:00
1 parent d0a489fe97
commit ccbcf683f6
3 files changed
+120 -114

No files matched your search

@@ -1,3 +1,4 @@
pub mod worldlabs_login_window_open;
pub (super) mod worldlabs_login_window_thread;
pub (super) mod worldlabs_login_webview_extract_cookies;
pub (super) mod worldlabs_javascript;
@@ -0,0 +1,105 @@
pub (super) const WORLDLABS_JAVASCRIPT_EXPORT_BEARER_TOKENS : &str = r#"
(async () => {
if (window.tokensExported) {
console.error(">>> Tokens already gotten !");
return;
}
console.error(">>> Getting tokens...");
const request = indexedDB.open("firebaseLocalStorageDb");
request.onerror = (event) => {};
request.onsuccess = (event) => {
const db = event.target.result;
console.error(">>> Start transaction...");
const tx = db.transaction("firebaseLocalStorage", "readonly");
console.error(">>> Object store open ...");
const store = tx.objectStore("firebaseLocalStorage");
console.error(">>> key request...");
const keysRequest = store.getAllKeys();
keysRequest.onerror = (event) => {};
keysRequest.onsuccess = () => {
console.error(">>> keys array...");
const keys = keysRequest.result; // array of keys
const key = keys[0];
console.error(">>> get key...");
const getKeyRequest = store.getKey(key);
getKeyRequest.onsuccess = () => {};
store.openCursor().onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
let tokens = cursor.value?.value?.stsTokenManager;
if (tokens?.accessToken && tokens?.refreshToken) {
// Send to Tauri
let result = await window.__TAURI__.core.invoke("worldlabs_receive_bearer_command", {
request: {
bearer_token: window.tokens.accessToken,
refresh_token: window.tokens.refreshToken,
}
});
window.tokens = tokens;
window.tokensExported = true;
}
cursor.continue();
}
}; // end cursor
}; // end keyRequest
}; // end DB
})();
"#;
/// Take the Bearer tokens and send them to Tauri
pub (super) const WORLDLABS_JAVASCRIPT_SEND_BEARER_TO_TAURI : &str = r#"
(async () => {
if (!(window.tokens?.accessToken && window.tokens?.refreshToken)) {
console.error(">>> No tokens to export");
return;
}
console.error(">>> Sending to Tauri");
let result = await window.__TAURI__.core.invoke("worldlabs_receive_bearer_command", {
request: {
bearer_token: window.tokens.accessToken,
refresh_token: window.tokens.refreshToken,
}
});
error.log('>>> result', result);
})();
"#;
/// See if the pricing button exists.
/// This is only for the logged-in state.
/// We can use redirection to detect completion.
pub (super) const WORLDLABS_JAVASCRIPT_SEE_IF_PRICING_EXISTS : &str = r#"
(() => {
let pricing = document.querySelectorAll("a[href='/pricing']");
if (pricing.length > 0) {
window.location.href = "https://www.worldlabs.ai/about";
}
})();
"#;
@@ -12,6 +12,7 @@ use crate::services::sora::state::sora_credential_manager::SoraCredentialManager
use crate::services::sora::windows::sora_login_window::extract_sora_webview_cookies::extract_sora_webview_cookies;
use crate::services::worldlabs::state::worldlabs_bearer_bridge::WorldlabsBearerBridge;
use crate::services::worldlabs::state::worldlabs_credential_manager::WorldlabsCredentialManager;
use crate::services::worldlabs::windows::worldlabs_login_window::worldlabs_javascript::WORLDLABS_JAVASCRIPT_EXPORT_BEARER_TOKENS;
use crate::services::worldlabs::windows::worldlabs_login_window::worldlabs_login_webview_extract_cookies::worldlabs_login_webview_extract_cookies;
use crate::services::worldlabs::windows::worldlabs_login_window::worldlabs_login_window_open::WORLDLABS_LOGIN_WINDOW_NAME;
use anyhow::anyhow;
@@ -23,6 +24,7 @@ use openai_sora_client::creds::sora_credential_set::SoraCredentialSet;
use openai_sora_client::recipes::maybe_upgrade_or_renew_session::maybe_upgrade_or_renew_session;
use openai_sora_client::utils::has_session_cookie::{has_session_cookie, SessionCookiePresence};
use tauri::{AppHandle, Manager, WebviewWindow};
use world_labs_client::credentials::world_labs_bearer_token::WorldLabsBearerToken;
pub async fn worldlabs_login_window_thread(
app: AppHandle,
@@ -82,132 +84,31 @@ async fn check_login_window(
// World labs has no distinct login page. Everything is in a single SPA.
let mut is_logged_in = false;
// See if pricing exists.
// We'll use redirection to detect if we're done.
let pricing_script = r#"
(() => {
let pricing = document.querySelectorAll("a[href='/pricing']");
console.log('pricing', pricing);
if (pricing.length > 0) {
window.location.href = "https://www.worldlabs.ai/about";
}
})();
"#;
//webview_window.eval(pricing_script)?;
let extract_bearer_tokens= r#"
(() => {
if (window.tokens) {
console.error(">>> Tokens already gotten !");
return;
}
console.error(">>> Getting tokens...");
const request = indexedDB.open("firebaseLocalStorageDb");
request.onerror = (event) => {};
request.onsuccess = (event) => {
const db = event.target.result;
const tx = db.transaction("firebaseLocalStorage", "readonly");
const store = tx.objectStore("firebaseLocalStorage");
const keysRequest = store.getAllKeys();
keysRequest.onerror = (event) => {};
keysRequest.onsuccess = () => {
const keys = keysRequest.result; // array of keys
const key = keys[0];
const getKeyRequest = store.getKey(key);
getKeyRequest.onsuccess = () => {};
store.openCursor().onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
let tokens = cursor.value?.value?.stsTokenManager;
if (tokens?.accessToken && tokens?.refreshToken) {
window.tokens = tokens;
}
cursor.continue();
}
};
};
};
})();
"#;
webview_window.eval(extract_bearer_tokens)?;
let export_bearer_tokens= r#"
(async () => {
if (!(window.tokens?.accessToken && window.tokens?.refreshToken)) {
console.error(">>> No tokens to export");
return;
}
console.error(">>> Sending to Tauri");
let result = await window.__TAURI__.core.invoke("worldlabs_receive_bearer_command", {
request: {
bearer_token: window.tokens.accessToken,
refresh_token: window.tokens.refreshToken,
}
});
error.log('>>> result', result);
})();
"#;
webview_window.eval(export_bearer_tokens)?;
webview_window.eval(WORLDLABS_JAVASCRIPT_EXPORT_BEARER_TOKENS)?;
let maybe_bearer = worldlabs_bearer_bridge.get()?;
if let Some(bearer) = maybe_bearer {
info!("Rust Got bearer: {:?}", bearer);
}
let hostname = get_webview_window_hostname(webview_window)?;
let path = get_webview_window_url_path(webview_window)?;
match hostname.as_str() {
"www.worldlabs.ai" => {
is_logged_in = true;
},
_ => {}
}
match path.as_str() {
"/about" => {
is_logged_in = true;
},
_ => {}
}
is_logged_in = false;
if !is_logged_in {
return Ok(false);
}
let bearer_info = match maybe_bearer {
Some(bearer) => bearer,
None => {
return Ok(false); // Not logged in.
}
};
let cookie_store = worldlabs_login_webview_extract_cookies(webview_window)?;
info!("Current cookies (len {}): {:?}", cookie_store.len(), cookie_store.to_cookie_string());
worldlabs_creds_manager.replace_cookie_store(cookie_store)?;
let bearer_token = WorldLabsBearerToken::new(bearer_info.bearer_token);
worldlabs_creds_manager.replace_bearer_token(bearer_token)?;
let result = worldlabs_creds_manager.persist_to_disk();
if let Err(err) = result {
error!("Error persisting grok cookies to disk: {:?}", err);
error!("Error persisting WorldLabs credentials to disk: {:?}", err);
return Ok(false);
}
@@ -221,4 +122,3 @@ async fn check_login_window(
Ok(true)
}