matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
43 lines • 1.81 kB
JavaScript
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