(&mut self, session_id: &str)
| 3030 | } |
| 3031 | |
| 3032 | fn sync_session_from_server(&mut self, session_id: &str) -> anyhow::Result<()> { |
| 3033 | let Some(client) = self.context.get_api_client() else { |
| 3034 | return Ok(()); |
| 3035 | }; |
| 3036 | |
| 3037 | let session = client.get_session(session_id)?; |
| 3038 | let messages = client.get_messages(session_id)?; |
| 3039 | let revert = session.revert.as_ref().map(map_api_revert); |
| 3040 | |
| 3041 | let mut session_ctx = self.context.session.write(); |
| 3042 | session_ctx.upsert_session(map_api_session(&session)); |
| 3043 | session_ctx.set_messages( |
| 3044 | session_id, |
| 3045 | messages |
| 3046 | .iter() |
| 3047 | .map(map_api_message) |
| 3048 | .collect::<Vec<Message>>(), |
| 3049 | ); |
| 3050 | if let Some(revert_info) = revert { |
| 3051 | session_ctx |
| 3052 | .revert |
| 3053 | .insert(session_id.to_string(), revert_info); |
| 3054 | } else { |
| 3055 | session_ctx.revert.remove(session_id); |
| 3056 | } |
| 3057 | drop(session_ctx); |
| 3058 | |
| 3059 | self.last_session_sync = Instant::now(); |
| 3060 | Ok(()) |
| 3061 | } |
| 3062 | |
| 3063 | fn set_session_status(&mut self, session_id: &str, status: SessionStatus) { |
| 3064 | let mut session_ctx = self.context.session.write(); |
no test coverage detected