70 lines
2.5 KiB
Python
70 lines
2.5 KiB
Python
import logging
|
|
from modules.services import getInterface as getServices
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
async def start(eventUser) -> None:
|
|
""" Start feature triggers and background managers
|
|
|
|
Args:
|
|
eventUser: System-level event user for background operations (provided by app.py)
|
|
"""
|
|
|
|
# Feature Automation Events
|
|
if eventUser:
|
|
try:
|
|
from modules.features.automation import syncAutomationEvents
|
|
from modules.shared.callbackRegistry import callbackRegistry
|
|
|
|
# Get services for event user (provides access to interfaces)
|
|
services = getServices(eventUser, None)
|
|
|
|
# Register callback for automation changes
|
|
async def onAutomationChanged(chatInterface):
|
|
"""Callback triggered when automations are created/updated/deleted."""
|
|
await syncAutomationEvents(chatInterface, eventUser)
|
|
|
|
callbackRegistry.register('automation.changed', onAutomationChanged)
|
|
logger.info("Registered automation change callback")
|
|
|
|
# Initial sync on startup - use interface from services
|
|
await syncAutomationEvents(services.interfaceDbChat, eventUser)
|
|
logger.info("Automation events synced on startup")
|
|
except Exception as e:
|
|
logger.error(f"Error setting up automation events on startup: {str(e)}")
|
|
# Don't fail startup if automation sync fails
|
|
|
|
# Feature SyncDelta
|
|
from modules.features.syncDelta import mainSyncDelta
|
|
mainSyncDelta.startSyncManager(eventUser)
|
|
|
|
# Feature ChatAlthaus
|
|
from modules.features.chatAlthaus import mainChatAlthaus
|
|
mainChatAlthaus.startDataScheduler(eventUser)
|
|
await mainChatAlthaus.performDataUpdate(eventUser)
|
|
|
|
# Feature ...
|
|
|
|
return True
|
|
|
|
|
|
|
|
async def stop(eventUser) -> None:
|
|
""" Stop feature triggers and background managers
|
|
|
|
Args:
|
|
eventUser: System-level event user (provided by app.py)
|
|
"""
|
|
|
|
# Unregister automation callback
|
|
try:
|
|
from modules.shared.callbackRegistry import callbackRegistry
|
|
# Note: We'd need to store the callback reference to unregister it properly
|
|
# For now, callbacks will remain registered (acceptable for shutdown)
|
|
logger.info("Automation callbacks remain registered (will be cleaned up on process exit)")
|
|
except Exception as e:
|
|
logger.warning(f"Error during automation callback cleanup: {str(e)}")
|
|
|
|
# Feature ...
|
|
|
|
return True
|