Encapsulate target-type dispatch via polymorphism (Phase 1)
Replace isinstance checks with polymorphic methods on PictureTarget hierarchy: register_with_manager, sync_with_manager, update_fields, and has_picture_source property. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -23,8 +23,6 @@ from wled_controller.storage.postprocessing_template_store import Postprocessing
|
||||
from wled_controller.storage.pattern_template_store import PatternTemplateStore
|
||||
from wled_controller.storage.picture_source_store import PictureSourceStore
|
||||
from wled_controller.storage.picture_target_store import PictureTargetStore
|
||||
from wled_controller.storage.wled_picture_target import WledPictureTarget
|
||||
from wled_controller.storage.key_colors_picture_target import KeyColorsPictureTarget
|
||||
from wled_controller.storage.profile_store import ProfileStore
|
||||
from wled_controller.core.profiles.profile_engine import ProfileEngine
|
||||
from wled_controller.utils import setup_logging, get_logger
|
||||
@@ -182,29 +180,12 @@ async def lifespan(app: FastAPI):
|
||||
targets = picture_target_store.get_all_targets()
|
||||
registered_targets = 0
|
||||
for target in targets:
|
||||
if isinstance(target, WledPictureTarget) and target.device_id:
|
||||
try:
|
||||
processor_manager.add_target(
|
||||
target_id=target.id,
|
||||
device_id=target.device_id,
|
||||
settings=target.settings,
|
||||
picture_source_id=target.picture_source_id,
|
||||
)
|
||||
registered_targets += 1
|
||||
logger.info(f"Registered target: {target.name} ({target.id})")
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to register target {target.id}: {e}")
|
||||
elif isinstance(target, KeyColorsPictureTarget):
|
||||
try:
|
||||
processor_manager.add_kc_target(
|
||||
target_id=target.id,
|
||||
picture_source_id=target.picture_source_id,
|
||||
settings=target.settings,
|
||||
)
|
||||
registered_targets += 1
|
||||
logger.info(f"Registered KC target: {target.name} ({target.id})")
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to register KC target {target.id}: {e}")
|
||||
try:
|
||||
target.register_with_manager(processor_manager)
|
||||
registered_targets += 1
|
||||
logger.info(f"Registered target: {target.name} ({target.id})")
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to register target {target.id}: {e}")
|
||||
|
||||
logger.info(f"Registered {registered_targets} picture target(s)")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user