From 906606ae6cebfb7d3c2e4edb300efbe327a7f62f Mon Sep 17 00:00:00 2001 From: Ethan O'Brien <77750390+ethanaobrien@users.noreply.github.com> Date: Sun, 5 May 2024 16:10:28 -0500 Subject: [PATCH] Add time progression along with server time set --- src/router/global.rs | 33 +++++++++++++++++++++++++-------- src/router/userdata/mod.rs | 3 ++- webui/src/home/Home.jsx | 4 ++-- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/router/global.rs b/src/router/global.rs index c8eead7..79b5bab 100644 --- a/src/router/global.rs +++ b/src/router/global.rs @@ -80,22 +80,39 @@ pub fn timestamp_since_midnight() -> u64 { rv } +fn init_time(server_data: &mut JsonValue, token: &str) { + let mut edited = false; + if server_data["server_time_set"].as_u64().is_none() { + server_data["server_time_set"] = timestamp().into(); + edited = true; + } + if server_data["server_time"].as_u64().is_none() { + server_data["server_time"] = 1709272800.into(); + edited = true; + } + if edited { + userdata::save_server_data(&token, server_data.clone()); + } +} + fn set_time(data: &mut JsonValue, req: HttpRequest) { - data["server_time"] = 1711741114.into(); let blank_header = HeaderValue::from_static(""); let uid = req.headers().get("aoharu-user-id").unwrap_or(&blank_header).to_str().unwrap_or("").parse::().unwrap_or(0); if uid == 0 { return; } - let server_data = userdata::get_server_data(&userdata::get_login_token(uid)); + let token = userdata::get_login_token(uid); + let mut server_data = userdata::get_server_data(&token); + init_time(&mut server_data, &token); - if !server_data["server_time"].as_i64().is_none() { - if server_data["server_time"].as_i64().unwrap() == 0 { - data["server_time"] = timestamp().into(); - return; - } - data["server_time"] = server_data["server_time"].clone(); + let time_set = server_data["server_time_set"].as_u64().unwrap_or(timestamp()); + let server_time = server_data["server_time"].as_u64().unwrap_or(0);//1711741114 + if server_time == 0 { + return; } + + let time_since_set = timestamp() - time_set; + data["server_time"] = (server_time + time_since_set).into(); } pub fn send(mut data: JsonValue, req: HttpRequest) -> HttpResponse { diff --git a/src/router/userdata/mod.rs b/src/router/userdata/mod.rs index a6b9a02..1cdb2c3 100644 --- a/src/router/userdata/mod.rs +++ b/src/router/userdata/mod.rs @@ -89,7 +89,7 @@ fn create_acc(uid: i64, login: &str) { 0, include_str!("new_user_event.json"), format!(r#"{{"last_rewarded": 0, "bonus_list": [], "start_time": {}}}"#, global::timestamp()), - "{}" + format!(r#"{{"server_time_set":{},server_time:1709272800}}"#, global::timestamp()) )); DATABASE.lock_and_exec("DELETE FROM tokens WHERE token=?1", params!(login)); @@ -539,6 +539,7 @@ pub fn set_server_time(time: i64, token: &str) -> JsonValue { } let login_token = login_token.unwrap(); let mut server_data = get_server_data(&login_token); + server_data["server_time_set"] = global::timestamp().into(); server_data["server_time"] = time.into(); save_server_data(&login_token, server_data); diff --git a/webui/src/home/Home.jsx b/webui/src/home/Home.jsx index df5ffae..6c59ddc 100644 --- a/webui/src/home/Home.jsx +++ b/webui/src/home/Home.jsx @@ -72,7 +72,7 @@ function Home() { } const handleSubmit = async (event) => { event.preventDefault(); - let time = Math.round((new Date(inputValue.trim()).getTime() + 70000) / 1000); + let time = Math.round(new Date(inputValue.trim()).getTime() / 1000); if (inputValue.trim() === "-1") { time = 1711741114; } else if (inputValue.trim() === "0") { @@ -142,7 +142,7 @@ function Home() { { user }

Server time

{ error[0] ?

Error: { error[0] }

:

}
-

Currently set to { serverTime }. Setting to 0 will set it to now, and -1 will reset it.

+

Currently set to { serverTime }. Setting to 0 will set it to now, and -1 will reset it. Time will still progress, based off of when you set this timestamp.