//ignore_for_file: constant_identifier_names import 'package:syncrow_app/features/devices/model/function_model.dart'; import 'package:syncrow_app/generated/assets.dart'; abstract class Constants { static const String languageCode = "en"; static const String countryCode = "US"; static const double appBarHeightPercentage = 0.12; static const double bottomNavBarHeightPercentage = 0.1175; static late double appBarHeight; static late double bottomNavBarHeight; static const double defaultPadding = 16; static const String token = ''; } enum DeviceType { AC, LightBulb, DoorLock, Curtain, Blind, ThreeGang, Gateway, CeilingSensor, WallSensor, Other, } // Map devicesTypesMap = { // "AC": DeviceType.AC, // "LB": DeviceType.LightBulb, // "DL": DeviceType.DoorLock, // "WC": DeviceType.Curtain, // "WB": DeviceType.Blind, // "3G": DeviceType.ThreeGang, // "GW": DeviceType.Gateway, // "CPS": DeviceType.CeilingSensor, // "WPS": DeviceType.WallSensor, // "Other": DeviceType.Other, // }; //AC wzdcrqh0 // GW wp8ticoo2bhumwgb // CPS d3ci7gcn // DL awu7anehyu5q1iu8 // WPS awarhusb // 3G 1a6vgvyi Map devicesTypesMap = { "wzdcrqh0": DeviceType.AC, "wp8ticoo2bhumwgb": DeviceType.Gateway, "d3ci7gcn": DeviceType.CeilingSensor, "awu7anehyu5q1iu8": DeviceType.DoorLock, "awarhusb": DeviceType.WallSensor, "1a6vgvyi": DeviceType.ThreeGang, }; Map> devicesFunctionsMap = { DeviceType.AC: [ FunctionModel(code: 'switch', type: 'Boolean', values: '{}'), FunctionModel( code: 'mode', type: 'Enum', values: '{"range":["cold","hot","wind"]}'), FunctionModel( code: 'temp_set', type: 'Integer', values: '{"unit":"℃","min":200,"max":300,"scale":1,"step":5}'), FunctionModel( code: 'level', type: 'Enum', values: '{"range":["low","middle","high","auto"]}'), FunctionModel(code: 'child_lock', type: 'Boolean', values: '{}'), ], DeviceType.Gateway: [ FunctionModel(code: 'switch_alarm_sound', type: 'Boolean', values: '{}'), FunctionModel( code: 'master_state', type: 'Enum', values: '{"range":["normal","alarm"]}'), FunctionModel(code: 'factory_reset', type: 'Boolean', values: '{}'), FunctionModel( code: 'alarm_active', type: 'String', values: '{"maxlen":255}'), ], DeviceType.CeilingSensor: [ FunctionModel( code: 'sensitivity', type: 'Integer', values: '{"unit":"","min":1,"max":10,"scale":0,"step":1}'), ], DeviceType.DoorLock: [ FunctionModel(code: 'remote_no_pd_setkey', type: 'Raw', values: '{}'), FunctionModel(code: 'remote_no_dp_key', type: 'Raw', values: '{}'), FunctionModel(code: 'normal_open_switch', type: 'Boolean', values: '{}'), ], DeviceType.WallSensor: [ FunctionModel( code: 'far_detection', type: 'Integer', values: '{"unit":"cm","min":75,"max":600,"scale":0,"step":75}'), FunctionModel( code: 'presence_time', type: 'Integer', values: '{"unit":"Min","min":0,"max":65535,"scale":0,"step":1}'), FunctionModel( code: 'motion_sensitivity_value', type: 'Integer', values: '{"unit":"","min":1,"max":5,"scale":0,"step":1}'), FunctionModel( code: 'motionless_sensitivity', type: 'Integer', values: '{"unit":"","min":1,"max":5,"scale":0,"step":1}'), FunctionModel(code: 'indicator', type: 'Boolean', values: '{}'), ], DeviceType.ThreeGang: [ FunctionModel(code: 'switch_1', type: 'Boolean', values: '{}'), FunctionModel(code: 'switch_2', type: 'Boolean', values: '{}'), FunctionModel(code: 'switch_3', type: 'Boolean', values: '{}'), FunctionModel( code: 'countdown_1', type: 'Integer', values: '{"unit":"s","min":0,"max":43200,"scale":0,"step":1}'), FunctionModel( code: 'countdown_2', type: 'Integer', values: '{"unit":"s","min":0,"max":43200,"scale":0,"step":1}'), FunctionModel( code: 'countdown_3', type: 'Integer', values: '{"unit":"s","min":0,"max":43200,"scale":0,"step":1}'), ], }; enum TempModes { hot, cold, wind } enum FanSpeeds { auto, low, middle, high } final Map fanSpeedsIconMap = { FanSpeeds.auto: Assets.iconsFan0, FanSpeeds.low: Assets.iconsFan1, FanSpeeds.middle: Assets.iconsFan2, FanSpeeds.high: Assets.iconsFan3, }; final Map tempModesIconMap = { TempModes.hot: Assets.iconsSunnyMode, TempModes.cold: Assets.iconsColdMode, TempModes.wind: Assets.iconsWindyMode, }; final Map fanSpeedsMap = { 'auto': FanSpeeds.auto, 'low': FanSpeeds.low, 'middle': FanSpeeds.middle, 'high': FanSpeeds.high, }; final Map tempModesMap = { 'hot': TempModes.hot, 'cold': TempModes.cold, 'wind': TempModes.wind, }; final Map reversedFanSpeedsMap = fanSpeedsMap.map((key, value) => MapEntry(value, key)); final Map reversedTempModesMap = tempModesMap.map((key, value) => MapEntry(value, key)); String getNextFanSpeedKey(FanSpeeds currentFanSpeed) { const List speeds = FanSpeeds.values; final int currentIndex = speeds.indexOf(currentFanSpeed); // Return null if currentFanSpeed is the last value if (currentIndex == speeds.length - 1) { return reversedFanSpeedsMap[FanSpeeds.auto]!; } final FanSpeeds nextSpeed = speeds[currentIndex + 1]; return reversedFanSpeedsMap[nextSpeed]!; } K? getNextItem(Map map, V value) { // Iterate over the map entries for (var entry in map.entries) { // If the current value matches the provided value if (entry.value == value) { // Get the index of the current entry final index = map.keys.toList().indexOf(entry.key); // If the index is not the last item, return the next item if (index < map.length - 1) { return map.keys.elementAt(index + 1); } // If it's the last item, return null return map.keys.elementAt(0); } } // If the value is not found, return null return null; }