from __future__ import annotations import json from app.app_config import PATH_STORE_FILE, SFM_DEFAULT_INPUT_DIR def get_user_path(user_id: str) -> str: payload = _load_data() value = payload.get(user_id) if isinstance(value, str) and value.strip(): return value return SFM_DEFAULT_INPUT_DIR def set_user_path(user_id: str, input_dir: str) -> None: payload = _load_data() payload[user_id] = input_dir _save_data(payload) def _load_data() -> dict[str, str]: if not PATH_STORE_FILE.exists(): return {} try: raw = json.loads(PATH_STORE_FILE.read_text(encoding="utf-8")) except json.JSONDecodeError: return {} if not isinstance(raw, dict): return {} normalized: dict[str, str] = {} for key, value in raw.items(): if isinstance(key, str) and isinstance(value, str): normalized[key] = value return normalized def _save_data(payload: dict[str, str]) -> None: PATH_STORE_FILE.parent.mkdir(parents=True, exist_ok=True) PATH_STORE_FILE.write_text( json.dumps(payload, ensure_ascii=False, indent=2, sort_keys=True), encoding="utf-8", )