Skip to content

Commit b7402a2

Browse files
committed
attempt to fix web backend git fetch
1 parent 4204e7f commit b7402a2

File tree

4 files changed

+12
-85
lines changed

4 files changed

+12
-85
lines changed

Cargo.lock

Lines changed: 0 additions & 37 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

site/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ instant = {version = "0.1.12", features = ['wasm-bindgen']}
1515
js-sys = "0.3"
1616
leptos = "0.6.11"
1717
leptos_meta = {version = "0.6.11", features = ["csr"]}
18-
leptos_query = {version = "0.5.3", features = ["csr"]}
1918
leptos_router = {version = "0.6.11", features = ["csr"]}
2019
pathdiff = "0.2.1"
2120
serde = {version = "1", features = ["derive"]}

site/src/backend.rs

Lines changed: 12 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ use std::{
99

1010
use crate::{editor::get_ast_time, weewuh};
1111
use leptos::*;
12-
use leptos_query::{create_query, QueryOptions};
1312
use uiua::{Handle, Report, SysBackend, EXAMPLE_TXT, EXAMPLE_UA};
1413
use wasm_bindgen::prelude::*;
1514
use wasm_bindgen_futures::JsFuture;
@@ -32,7 +31,6 @@ struct VirtualStream {
3231

3332
thread_local! {
3433
static GLOBAL_FILES: RefCell<HashMap<PathBuf, Vec<u8>>> = Default::default();
35-
static REQ: RefCell<Option<FetchReq>> = Default::default();
3634
}
3735

3836
pub fn drop_file(path: PathBuf, contents: Vec<u8>) {
@@ -370,20 +368,24 @@ impl SysBackend for WebBackend {
370368
url = format!("{url}/main/lib.ua");
371369
}
372370
thread_local! {
373-
static CACHE: RefCell<HashMap<String, Result<String, String>>> = Default::default();
371+
static CACHE: RefCell<HashMap<String, Result<String, String>>> = Default::default();
374372
}
375373
let res = CACHE.with(|cache| {
376-
let mut cache = cache.borrow_mut();
377-
if let Some(res) = cache.get(&url) {
374+
if let Some(res) = cache.borrow().get(&url) {
375+
logging::log!("Using cached module for {url:?}");
378376
Some(res.clone())
379377
} else {
380-
logging::log!("url: {url}");
381-
let res = try_fetch_sync(&url)?;
382-
logging::log!("res: {res:?}");
383-
cache.insert(url.clone(), res.clone());
384-
Some(res)
378+
logging::log!("Fetching url: {url}");
379+
spawn_local(async move {
380+
let res = fetch(&url).await;
381+
CACHE.with(|cache| {
382+
cache.borrow_mut().insert(url.clone(), res.clone());
383+
});
384+
});
385+
None
385386
}
386387
});
388+
387389
match res {
388390
Some(Ok(text)) => {
389391
let contents = text.as_bytes().to_vec();
@@ -396,41 +398,6 @@ impl SysBackend for WebBackend {
396398
}
397399
}
398400

399-
struct FetchReq {
400-
url: String,
401-
query: Box<dyn Fn() -> Option<Result<String, String>>>,
402-
tries: u32,
403-
}
404-
405-
pub fn try_fetch_sync(url: &str) -> Option<Result<String, String>> {
406-
REQ.with(|req| {
407-
let mut req = req.borrow_mut();
408-
let url = url.to_string();
409-
if let Some(req) = req.as_mut().filter(|req| req.url == url) {
410-
req.tries += 1;
411-
if req.tries > 20 {
412-
return Some(Err("Failed to fetch".into()));
413-
}
414-
(req.query)()
415-
} else {
416-
*req = Some(FetchReq {
417-
url: url.clone(),
418-
query: {
419-
let query_res = create_query(fetch_string, QueryOptions::default())
420-
.use_query(move || url.clone());
421-
Box::new(move || query_res.data.try_get().flatten())
422-
},
423-
tries: 0,
424-
});
425-
None
426-
}
427-
})
428-
}
429-
430-
async fn fetch_string(s: String) -> Result<String, String> {
431-
fetch(&s).await
432-
}
433-
434401
pub async fn fetch(url: &str) -> Result<String, String> {
435402
let mut opts = RequestInit::new();
436403
opts.method("GET");

site/src/main.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ use instant::Duration;
1818
use js_sys::Date;
1919
use leptos::*;
2020
use leptos_meta::*;
21-
use leptos_query::provide_query_client;
2221
use leptos_router::*;
2322
use uiua::{
2423
lsp::{BindingDocs, BindingDocsKind},
@@ -45,7 +44,6 @@ pub fn main() {
4544
pub fn Site() -> impl IntoView {
4645
use Primitive::*;
4746
provide_meta_context();
48-
provide_query_client();
4947

5048
// Choose a subtitle
5149
let subtitles_common = [

0 commit comments

Comments
 (0)