Skip to content

Commit

Permalink
Update state handling
Browse files Browse the repository at this point in the history
  • Loading branch information
lucemans committed Feb 9, 2025
1 parent d7bdda5 commit 16bc0af
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 3 deletions.
31 changes: 29 additions & 2 deletions app/src/chrome.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use chromiumoxide::{
Browser, BrowserConfig, Page,
};

use crate::config::ChromiumConfig;
use crate::{config::ChromiumConfig, state::State};

pub struct ChromeController {
pub current_playlist: Arc<Mutex<Option<String>>>,
Expand All @@ -37,7 +37,7 @@ impl ChromeController {
Self::default()
}

pub async fn start(&self, config: &ChromiumConfig) -> Result<()> {
pub async fn start(&self, config: &ChromiumConfig, state: &State) -> Result<()> {
let home_path = std::env::var("HOME").unwrap();
let user_data_dir = format!("{}/.chromium-mission-data", home_path);
let browser_config = BrowserConfig::builder()
Expand Down Expand Up @@ -148,12 +148,27 @@ impl ChromeController {
loop {
if let Some(playlists) = &config.playlists {
if let Some(playlist) = self.current_playlist.lock().await.as_ref() {
state.hass.playlist_entity.update_state(
&state.hass.mqtt_client,
playlist,
);

if let Some(playlist_config) = playlists.get(playlist) {
// TODO: implement playlist logic
if let Some(tab) = playlist_config.tabs.get(current_tab) {
if let Some(page) = pages.get(tab) {
println!("Activated tab \"{}\"", tab);
page.activate().await.unwrap();

state
.hass
.tab_entity
.update_state(&state.hass.mqtt_client, tab);

state.hass.url_entity.update_state(
&state.hass.mqtt_client,
&config.tabs.as_ref().unwrap().get(tab).unwrap().url,
);
} else {
println!("On demand activating tab \"{}\"", tab);
if let Some(tab_config) = config.tabs.as_ref().unwrap().get(tab) {
Expand All @@ -166,6 +181,18 @@ impl ChromeController {
)
.await
.unwrap();

// TODO: update tab entity
state
.hass
.tab_entity
.update_state(&state.hass.mqtt_client, tab);

// TODO: update url entity
state
.hass
.url_entity
.update_state(&state.hass.mqtt_client, &tab_config.url);
} else {
println!("Tab \"{}\" config not found", tab);
current_tab = 0;
Expand Down
3 changes: 2 additions & 1 deletion app/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@ async fn main() -> Result<()> {
if let Some(chromium_config) = &state.config.chromium {
if chromium_config.enabled {
let chromium_config_clone = chromium_config.clone();
let state_clone = state.clone();

let chromium_2 = chromium.clone();

task::spawn(async move {
chromium_2.start(&chromium_config_clone).await.unwrap();
chromium_2.start(&chromium_config_clone, &state_clone).await.unwrap();
});
}
}
Expand Down

0 comments on commit 16bc0af

Please # to comment.