Skip to content

Commit ecd96c4

Browse files
committed
fix now on web
1 parent d3f789b commit ecd96c4

File tree

5 files changed

+17
-2
lines changed

5 files changed

+17
-2
lines changed

site/src/backend.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::{
77
sync::Mutex,
88
};
99

10-
use crate::{editor::get_ast_time, weewuh};
10+
use crate::{editor::get_ast_time, weewuh, START_TIME};
1111
use leptos::*;
1212
use uiua::{GitTarget, Handle, Report, SysBackend, EXAMPLE_TXT, EXAMPLE_UA};
1313
use wasm_bindgen::prelude::*;
@@ -337,6 +337,9 @@ impl SysBackend for WebBackend {
337337
)?;
338338
self.play_audio(bytes)
339339
}
340+
fn now(&self) -> f64 {
341+
*START_TIME.get().unwrap() + instant::now() / 1000.0
342+
}
340343
fn set_clipboard(&self, contents: &str) -> Result<(), String> {
341344
_ = window()
342345
.navigator()

site/src/main.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ mod tour;
1313
mod tutorial;
1414
mod uiuisms;
1515

16+
use std::sync::OnceLock;
17+
1618
use base64::engine::{general_purpose::URL_SAFE, Engine};
1719
use instant::Duration;
1820
use js_sys::Date;
@@ -40,10 +42,13 @@ pub fn main() {
4042
mount_to_body(|| view!( <Site/>));
4143
}
4244

45+
static START_TIME: OnceLock<f64> = OnceLock::new();
46+
4347
#[component]
4448
pub fn Site() -> impl IntoView {
4549
use Primitive::*;
4650
provide_meta_context();
51+
START_TIME.get_or_init(|| Date::now() / 1000.0);
4752

4853
// Choose a subtitle
4954
let subtitles_common = [

src/primitive/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -786,7 +786,7 @@ impl Primitive {
786786
let id = env.pop(1)?;
787787
env.try_recv(id)?;
788788
}
789-
Primitive::Now => env.push(instant::now() / 1000.0),
789+
Primitive::Now => env.push(env.rt.backend.now()),
790790
Primitive::SetInverse => {
791791
let f = env.pop_function()?;
792792
let _inv = env.pop_function()?;

src/sys.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -919,6 +919,12 @@ pub trait SysBackend: Any + Send + Sync + 'static {
919919
fn stream_audio(&self, f: AudioStreamFn) -> Result<(), String> {
920920
Err("Streaming audio not supported in this environment".into())
921921
}
922+
/// The result of the `now` function
923+
///
924+
/// Should be in seconds
925+
fn now(&self) -> f64 {
926+
instant::now() / 1000.0
927+
}
922928
/// Create a TCP listener and bind it to an address
923929
fn tcp_listen(&self, addr: &str) -> Result<Handle, String> {
924930
Err("TCP listeners are not supported in this environment".into())

todo.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Uiua Todo
22

33
- 0.12
4+
- Fix `fill`ed `windows` on list
45
- Deprecate swizzles
56
- Stabilize labels
67
- `orient` boxed

0 commit comments

Comments
 (0)