Save preferences to JSON file
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
"""Shared models."""
|
||||
|
||||
from dataclasses import dataclass
|
||||
import json
|
||||
import logging
|
||||
from dataclasses import asdict, dataclass, field
|
||||
from pathlib import Path
|
||||
from queue import Queue
|
||||
from typing import TYPE_CHECKING, Dict, List, Optional
|
||||
@@ -11,6 +13,8 @@ if TYPE_CHECKING:
|
||||
from .mpv_player import MpvMediaPlayer
|
||||
from .satellite import VoiceSatelliteProtocol
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@dataclass
|
||||
class AvailableWakeWord:
|
||||
@@ -20,6 +24,11 @@ class AvailableWakeWord:
|
||||
config_path: Path
|
||||
|
||||
|
||||
@dataclass
|
||||
class Preferences:
|
||||
active_wake_words: List[str] = field(default_factory=list)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ServerState:
|
||||
name: str
|
||||
@@ -33,5 +42,16 @@ class ServerState:
|
||||
tts_player: "MpvMediaPlayer"
|
||||
wakeup_sound: str
|
||||
timer_finished_sound: str
|
||||
preferences: Preferences
|
||||
preferences_path: Path
|
||||
media_player_entity: "Optional[MediaPlayerEntity]" = None
|
||||
satellite: "Optional[VoiceSatelliteProtocol]" = None
|
||||
|
||||
def save_preferences(self) -> None:
|
||||
"""Save preferences as JSON."""
|
||||
_LOGGER.debug("Saving preferences: %s", self.preferences_path)
|
||||
self.preferences_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
with open(self.preferences_path, "w", encoding="utf-8") as preferences_file:
|
||||
json.dump(
|
||||
asdict(self.preferences), preferences_file, ensure_ascii=False, indent=4
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user