from pypos.core.base_service import BaseService
from pypos.core.utils.config_utils import (
    normalize_base_url,
    read_app_settings,
    read_endpoint_config,
    save_config,
)
from pypos.modules.auth.config.auth_config import get_auth_endpoint_config


class AuthConfigService(BaseService):
    def __init__(self):
        super().__init__()

    def load(self):
        endpoint_cfg = get_auth_endpoint_config()
        app_cfg = read_app_settings()
        return {
            "api_base_url": str(endpoint_cfg.get("api_base_url", "") or ""),
            "client_name": str(app_cfg.get("client_name", "") or ""),
            "request_timeout": int(endpoint_cfg.get("request_timeout", 3) or 3),
        }

    def save(self, api_base_url, client_name, request_timeout):
        current_endpoint = read_endpoint_config() or {}
        old_api_base_url = normalize_base_url(str(current_endpoint.get("api_base_url") or ""))
        try:
            timeout = int(request_timeout)
        except (TypeError, ValueError):
            timeout = 3
        new_api_base_url = normalize_base_url(str(api_base_url or "").strip())
        payload = {
            "api_base_url": new_api_base_url,
            "client_name": str(client_name or "").strip(),
            "request_timeout": timeout,
        }
        save_config(payload)
        return {
            "payload": payload,
            "restart_required": old_api_base_url != new_api_base_url,
        }
