UNPKG

matterbridge-roborock-vacuum-plugin

Version:
43 lines 1.81 kB
import { decodeFeatureSet } from '../../../share/featureSetDecoder.js'; import { baseCleanModeConfigs, smartPlanModeConfig, vacFollowedByMopModeConfig, } from './cleanModeConfig/index.js'; export function getExtraModes(_model, featureSet, newFeatureSet) { const hasFeatureContext = featureSet !== undefined || newFeatureSet !== undefined; if (!hasFeatureContext) { return []; } const features = decodeFeatureSet(featureSet, newFeatureSet); const extras = []; if (features.is_smart_clean_mode_set_supported) { extras.push(smartPlanModeConfig); } if (features.is_clean_then_mop_mode_supported) { extras.push(vacFollowedByMopModeConfig); } return extras; } export function hasSmartPlan(_model, featureSet, newFeatureSet) { const features = decodeFeatureSet(featureSet, newFeatureSet); return features.is_smart_clean_mode_set_supported; } /** * Get all clean modes for a device: extra modes first, then base modes. * If featureSet and/or newFeatureSet are provided, dynamically filters modes * based on device capabilities. */ export function getAllModesForDevice(model, featureSet, newFeatureSet) { return [...getExtraModes(model, featureSet, newFeatureSet), ...baseCleanModeConfigs]; } /** * Get all known clean mode configs across all devices and base modes (deduped by mode number). * Useful for mode label lookups when the device model is not available. */ export function getAllKnownModeConfigs() { const uniqueByMode = new Map(); for (const config of [vacFollowedByMopModeConfig, ...baseCleanModeConfigs]) { if (!uniqueByMode.has(config.mode)) { uniqueByMode.set(config.mode, config); } } return [...uniqueByMode.values()]; } //# sourceMappingURL=deviceCapabilityRegistry.js.map