replace items record with full end-of-game stats record
All checks were successful
record-daemon / Build, check and test (push) Successful in 2m5s

- record-daemon: remove items parsing module
- tauri-app: add items parsing from recorded end-of-game stats
This commit is contained in:
2026-03-26 18:47:19 +01:00
parent 506fc9827b
commit 0871703b11
8 changed files with 144 additions and 314 deletions

View File

@@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize};
use uuid::Uuid;
use crate::error::{Result, TimelineError};
use crate::lqp::{GameEvent, ItemBuild, RunePage, SummonerSpells};
use crate::lqp::{GameEvent, RunePage, SummonerSpells};
use crate::recording::RecordingResult;
/// A timestamped event in the timeline.
@@ -69,9 +69,9 @@ pub struct RecordingMetadata {
/// Player's summoner spells.
#[serde(default)]
pub summoner_spells: Option<SummonerSpells>,
/// Final item build at game end.
/// Raw end-of-game stats JSON from the API.
#[serde(default)]
pub final_items: Option<ItemBuild>,
pub raw_end_game_stats: Option<serde_json::Value>,
/// All players in the game (puuid -> summoner name mapping).
#[serde(default)]
pub all_players: Vec<PlayerIdentityInfo>,
@@ -148,7 +148,7 @@ pub struct MetadataUpdate {
pub final_stats: Option<GameFinalStats>,
pub runes: Option<RunePage>,
pub summoner_spells: Option<SummonerSpells>,
pub final_items: Option<ItemBuild>,
pub raw_end_game_stats: Option<serde_json::Value>,
pub all_players: Vec<PlayerIdentityInfo>,
}
@@ -172,7 +172,7 @@ impl RecordingMetadata {
final_stats: None,
runes: None,
summoner_spells: None,
final_items: None,
raw_end_game_stats: None,
all_players: Vec::new(),
start_time: result.start_time,
end_time: Some(result.end_time),
@@ -239,7 +239,7 @@ impl TimelineStore {
final_stats: None,
runes: None,
summoner_spells: None,
final_items: None,
raw_end_game_stats: None,
all_players: Vec::new(),
start_time: Utc::now(),
end_time: None,
@@ -300,7 +300,7 @@ impl TimelineStore {
final_stats: None,
runes: None,
summoner_spells: None,
final_items: None,
raw_end_game_stats: None,
all_players: Vec::new(),
start_time: result.start_time,
end_time: Some(result.end_time),
@@ -386,8 +386,8 @@ impl TimelineStore {
if let Some(summoner_spells) = update.summoner_spells {
metadata.summoner_spells = Some(summoner_spells);
}
if let Some(final_items) = update.final_items {
metadata.final_items = Some(final_items);
if let Some(raw_end_game_stats) = update.raw_end_game_stats {
metadata.raw_end_game_stats = Some(raw_end_game_stats);
}
if !update.all_players.is_empty() {
metadata.all_players = update.all_players;
@@ -442,7 +442,7 @@ impl TimelineStore {
final_stats: metadata.final_stats.clone(),
runes: metadata.runes.clone(),
summoner_spells: metadata.summoner_spells.clone(),
final_items: metadata.final_items.clone(),
raw_end_game_stats: metadata.raw_end_game_stats.clone(),
all_players: metadata.all_players.clone(),
})
}
@@ -493,7 +493,7 @@ impl TimelineStore {
final_stats: metadata.final_stats,
runes: metadata.runes,
summoner_spells: metadata.summoner_spells,
final_items: metadata.final_items,
raw_end_game_stats: metadata.raw_end_game_stats,
all_players: metadata.all_players,
};
@@ -535,7 +535,7 @@ impl TimelineStore {
final_stats: None,
runes: None,
summoner_spells: None,
final_items: None,
raw_end_game_stats: None,
all_players: Vec::new(),
start_time: timeline.start_time,
end_time: timeline.end_time,