Compare commits
	
		
			7 Commits
		
	
	
		
			pierremtb/
			...
			coredump-e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 043bfe263f | |||
| 66064dca58 | |||
| cdb12f8e6f | |||
| 9f43dc5fc8 | |||
| 36dc589b32 | |||
| e7d6bccc60 | |||
| a76dcd76fc | 
							
								
								
									
										13
									
								
								src-tauri/Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13
									
								
								src-tauri/Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -2567,7 +2567,7 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "kcl-lib" | name = "kcl-lib" | ||||||
| version = "0.1.56" | version = "0.1.57" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "anyhow", | ||||||
|  "approx", |  "approx", | ||||||
| @ -6059,9 +6059,8 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "ts-rs" | name = "ts-rs" | ||||||
| version = "7.1.1" | version = "8.1.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "git+https://github.com/Aleph-Alpha/ts-rs#badbac08e61e65b312880aa64e9ece2976f1bbef" | ||||||
| checksum = "fc2cae1fc5d05d47aa24b64f9a4f7cba24cdc9187a2084dd97ac57bef5eccae6" |  | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "chrono", |  "chrono", | ||||||
|  "thiserror", |  "thiserror", | ||||||
| @ -6072,11 +6071,9 @@ dependencies = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "ts-rs-macros" | name = "ts-rs-macros" | ||||||
| version = "7.1.1" | version = "8.1.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "git+https://github.com/Aleph-Alpha/ts-rs#badbac08e61e65b312880aa64e9ece2976f1bbef" | ||||||
| checksum = "73f7f9b821696963053a89a7bd8b292dc34420aea8294d7b225274d488f3ec92" |  | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "Inflector", |  | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn 2.0.65", |  "syn 2.0.65", | ||||||
|  | |||||||
| @ -55,6 +55,10 @@ impl CoreDump for CoreDumper { | |||||||
|         Ok(crate::coredump::WebrtcStats::default()) |         Ok(crate::coredump::WebrtcStats::default()) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     async fn get_client_state(&self) -> Result<crate::coredump::ClientState> { | ||||||
|  |         Ok(crate::coredump::ClientState::default()) | ||||||
|  |     } | ||||||
|  |  | ||||||
|     async fn screenshot(&self) -> Result<String> { |     async fn screenshot(&self) -> Result<String> { | ||||||
|         // Take a screenshot of the engine. |         // Take a screenshot of the engine. | ||||||
|         todo!() |         todo!() | ||||||
|  | |||||||
| @ -27,6 +27,8 @@ pub trait CoreDump: Clone { | |||||||
|  |  | ||||||
|     async fn get_webrtc_stats(&self) -> Result<WebrtcStats>; |     async fn get_webrtc_stats(&self) -> Result<WebrtcStats>; | ||||||
|  |  | ||||||
|  |     async fn get_client_state(&self) -> Result<ClientState>; | ||||||
|  |  | ||||||
|     /// Return a screenshot of the app. |     /// Return a screenshot of the app. | ||||||
|     async fn screenshot(&self) -> Result<String>; |     async fn screenshot(&self) -> Result<String>; | ||||||
|  |  | ||||||
| @ -64,6 +66,7 @@ pub trait CoreDump: Clone { | |||||||
|         let webrtc_stats = self.get_webrtc_stats().await?; |         let webrtc_stats = self.get_webrtc_stats().await?; | ||||||
|         let os = self.os().await?; |         let os = self.os().await?; | ||||||
|         let screenshot_url = self.upload_screenshot().await?; |         let screenshot_url = self.upload_screenshot().await?; | ||||||
|  |         let client_state = self.get_client_state().await?; | ||||||
|  |  | ||||||
|         let mut app_info = AppInfo { |         let mut app_info = AppInfo { | ||||||
|             version: self.version()?, |             version: self.version()?, | ||||||
| @ -74,6 +77,7 @@ pub trait CoreDump: Clone { | |||||||
|             webrtc_stats, |             webrtc_stats, | ||||||
|             github_issue_url: None, |             github_issue_url: None, | ||||||
|             pool: self.pool()?, |             pool: self.pool()?, | ||||||
|  |             client_state, | ||||||
|         }; |         }; | ||||||
|         app_info.set_github_issue_url(&screenshot_url)?; |         app_info.set_github_issue_url(&screenshot_url)?; | ||||||
|  |  | ||||||
| @ -109,6 +113,9 @@ pub struct AppInfo { | |||||||
|  |  | ||||||
|     /// Engine pool the client is connected to. |     /// Engine pool the client is connected to. | ||||||
|     pub pool: String, |     pub pool: String, | ||||||
|  |  | ||||||
|  |     /// The client state (singletons and xstate) | ||||||
|  |     pub client_state: ClientState, | ||||||
| } | } | ||||||
|  |  | ||||||
| impl AppInfo { | impl AppInfo { | ||||||
| @ -197,3 +204,23 @@ pub struct WebrtcStats { | |||||||
|     /// Packet jitter for this synchronizing source, measured in seconds. |     /// Packet jitter for this synchronizing source, measured in seconds. | ||||||
|     pub jitter: f32, |     pub jitter: f32, | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Client State Structure | ||||||
|  | #[derive(Default, Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] | ||||||
|  | #[ts(export)] | ||||||
|  | #[serde(rename_all = "snake_case")] | ||||||
|  | pub struct ClientState { | ||||||
|  |     pub engine_command_manager: EngineCommandManager, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #[derive(Default, Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] | ||||||
|  | #[ts(export)] | ||||||
|  | #[serde(rename_all = "snake_case")] | ||||||
|  | pub struct EngineCommandManager { | ||||||
|  |     pub engine_connection: EngineConnection, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #[derive(Default, Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] | ||||||
|  | #[ts(export)] | ||||||
|  | pub struct EngineConnection { | ||||||
|  | } | ||||||
| @ -33,6 +33,9 @@ extern "C" { | |||||||
|  |  | ||||||
|     #[wasm_bindgen(method, js_name = screenshot, catch)] |     #[wasm_bindgen(method, js_name = screenshot, catch)] | ||||||
|     fn screenshot(this: &CoreDumpManager) -> Result<js_sys::Promise, js_sys::Error>; |     fn screenshot(this: &CoreDumpManager) -> Result<js_sys::Promise, js_sys::Error>; | ||||||
|  |  | ||||||
|  |     #[wasm_bindgen(method, js_name = getWebrtcStats, catch)] | ||||||
|  |     fn get_client_state(this: &CoreDumpManager) -> Result<js_sys::Promise, js_sys::Error>; | ||||||
| } | } | ||||||
|  |  | ||||||
| #[derive(Debug, Clone)] | #[derive(Debug, Clone)] | ||||||
| @ -140,4 +143,25 @@ impl CoreDump for CoreDumper { | |||||||
|  |  | ||||||
|         Ok(s) |         Ok(s) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     async fn get_client_state(&self) -> Result<crate::coredump::ClientState> { | ||||||
|  |         let promise = self | ||||||
|  |             .manager | ||||||
|  |             .get_client_state() | ||||||
|  |             .map_err(|e| anyhow::anyhow!("Failed to get promise from get client state: {:?}", e))?; | ||||||
|  |  | ||||||
|  |         let value = JsFuture::from(promise) | ||||||
|  |             .await | ||||||
|  |             .map_err(|e| anyhow::anyhow!("Failed to get response from client state: {:?}", e))?; | ||||||
|  |  | ||||||
|  |         // Parse the value as a string. | ||||||
|  |         let s = value | ||||||
|  |             .as_string() | ||||||
|  |             .ok_or_else(|| anyhow::anyhow!("Failed to get string from response from client stat: `{:?}`", value))?; | ||||||
|  |  | ||||||
|  |         let client_state: crate::coredump::ClientState = | ||||||
|  |             serde_json::from_str(&s).map_err(|e| anyhow::anyhow!("Failed to parse client state: {:?}", e))?; | ||||||
|  |  | ||||||
|  |         Ok(client_state) | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	