fix(metadata): refresh metadata sync settings

This commit is contained in:
pixelpaws
2025-10-08 10:38:05 +08:00
parent 0c023c9888
commit 08a449db99

View File

@@ -1,6 +1,7 @@
import logging import logging
import os import os
import re import re
from typing import TYPE_CHECKING, Optional
from ..recipes.constants import GEN_PARAM_KEYS from ..recipes.constants import GEN_PARAM_KEYS
from ..services.metadata_service import get_default_metadata_provider, get_metadata_provider from ..services.metadata_service import get_default_metadata_provider, get_metadata_provider
@@ -21,20 +22,31 @@ _preview_service = PreviewAssetService(
) )
_metadata_sync_service: MetadataSyncService | None = None _metadata_sync_service: MetadataSyncService | None = None
_metadata_sync_service_settings: Optional["SettingsManager"] = None
if TYPE_CHECKING: # pragma: no cover - import for type checkers only
from ..services.settings_manager import SettingsManager
def _get_metadata_sync_service() -> MetadataSyncService: def _get_metadata_sync_service() -> MetadataSyncService:
"""Return the shared metadata sync service, initialising it lazily.""" """Return the shared metadata sync service, initialising it lazily."""
global _metadata_sync_service global _metadata_sync_service, _metadata_sync_service_settings
if _metadata_sync_service is None:
settings_manager = get_settings_manager()
if (
_metadata_sync_service is None
or _metadata_sync_service_settings is not settings_manager
):
_metadata_sync_service = MetadataSyncService( _metadata_sync_service = MetadataSyncService(
metadata_manager=MetadataManager, metadata_manager=MetadataManager,
preview_service=_preview_service, preview_service=_preview_service,
settings=get_settings_manager(), settings=settings_manager,
default_metadata_provider_factory=get_default_metadata_provider, default_metadata_provider_factory=get_default_metadata_provider,
metadata_provider_selector=get_metadata_provider, metadata_provider_selector=get_metadata_provider,
) )
_metadata_sync_service_settings = settings_manager
return _metadata_sync_service return _metadata_sync_service