UNPKG

matterbridge-roborock-vacuum-plugin

Version:
57 lines 2.5 kB
import { DeviceModel } from '../../../roborockCommunication/models/index.js'; import { CleaningModeHandler } from '../handlers/cleaningModeHandler.js'; import { CustomCleanModeHandler } from '../handlers/customCleanModeHandler.js'; import { DefaultCleanModeHandler } from '../handlers/defaultCleanModeHandler.js'; import { GoVacationHandler } from '../handlers/goVacationHandler.js'; import { PresetCleanModeHandler } from '../handlers/presetCleanModeHandler.js'; import { SmartPlanHandler } from '../handlers/smartPlanHandler.js'; import { CleanModeDisplayLabel, CleanModeLabelInfo, getModeDisplayMap, getModeSettingsMap } from './cleanModeConfig.js'; import { getAllModesForDevice, hasSmartPlan } from './deviceCapabilityRegistry.js'; import { ModeHandlerRegistry } from './modeHandlerRegistry.js'; import { baseRunModeConfigs } from './runModeConfig.js'; const goVacationEntry = { [CleanModeLabelInfo[CleanModeDisplayLabel.GoVacation].mode]: CleanModeLabelInfo[CleanModeDisplayLabel.GoVacation].label, }; const configCache = new Map(); /** * Build a BehaviorConfig for the given device model. * Extra modes are resolved from the device capability registry. * Results are cached per model for efficiency. */ export function buildBehaviorConfig(model) { if (configCache.has(model)) { return configCache.get(model); } const withSmartPlan = hasSmartPlan(model); const allModes = getAllModesForDevice(model); const registry = new ModeHandlerRegistry().register(new CleaningModeHandler()).register(new GoVacationHandler()); if (withSmartPlan) { registry.register(new SmartPlanHandler()); } registry .register(new DefaultCleanModeHandler()) .register(new PresetCleanModeHandler()) .register(new CustomCleanModeHandler()); const config = { name: withSmartPlan ? 'BehaviorSmart' : 'DefaultBehavior', cleanModes: { ...getModeDisplayMap(allModes), ...goVacationEntry }, cleanSettings: getModeSettingsMap(allModes), runModeConfigs: baseRunModeConfigs, registry, }; configCache.set(model, config); return config; } /** * @deprecated Use buildBehaviorConfig(model) instead. */ export function createDefaultBehaviorConfig() { return buildBehaviorConfig(''); } /** * @deprecated Use buildBehaviorConfig(model) instead. */ export function createSmartBehaviorConfig() { return buildBehaviorConfig(DeviceModel.QREVO_EDGE_5V1); } //# sourceMappingURL=behaviorConfig.js.map