matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
33 lines • 1.89 kB
JavaScript
import { BehaviorDeviceGeneric, CommandNames } from '../behaviors/BehaviorDeviceGeneric.js';
import { buildBehaviorConfig } from '../behaviors/roborock.vacuum/core/behaviorConfig.js';
import { registerCommonCommands } from '../behaviors/roborock.vacuum/core/commonCommands.js';
import { getRunModeDisplayMap } from '../behaviors/roborock.vacuum/core/runModeConfig.js';
/**
* Configure device behavior handler based on model capabilities.
* Creates and initializes the appropriate command handler for the device model.
*/
export function configureBehavior(model, duid, roborockService, enableCleanModeMapping, cleanModeSettings, forceRunAtDefault, logger, onActionTriggered) {
const modelKey = forceRunAtDefault ? '' : model;
const config = buildBehaviorConfig(modelKey);
const deviceHandler = new BehaviorDeviceGeneric(logger);
setCommandHandler(duid, deviceHandler, logger, roborockService, enableCleanModeMapping, cleanModeSettings, config, onActionTriggered);
return deviceHandler;
}
function setCommandHandler(duid, handler, logger, roborockService, enableCleanModeMapping, cleanModeSettings, config, onActionTriggered) {
const runModeMap = getRunModeDisplayMap(config.runModeConfigs);
handler.setCommandHandler(CommandNames.CHANGE_TO_MODE, async (newMode) => {
const activity = runModeMap[newMode] || config.cleanModes[newMode];
const context = {
roborockService,
logger,
enableCleanModeMapping: enableCleanModeMapping,
cleanModeSettings,
cleanSettings: config.cleanSettings,
behaviorName: config.name,
};
await config.registry.handle(duid, newMode, activity, context);
onActionTriggered();
});
registerCommonCommands(duid, handler, logger, roborockService, config.name, onActionTriggered);
}
//# sourceMappingURL=behaviorFactory.js.map