{"version":3,"sources":["components/RadioButton.js","assets/Fonts/Mikhak-Bold.ttf","components/StyledText.js","components/BoldStyledText.js","env.js","screens/SenariosScreen.js","assets/Fonts/Mikhak-Regular.ttf","components/CredentialsContext.js","screens/SignUp.js","screens/Home.js","screens/ActivationWithSMS.js","screens/FetchRoom.js","screens/Settings.js","screens/RoomModules.js","navigators/MaterialTopTabNav.js","navigators/RootStack.js","navigators/BottomTabNav.js","screens/TermsAndPoliciesSreen.js","navigators/NewUserNavigator.js","index.js","App.js","strings/English.js","strings/Persian.js","strings/Arabic.js","components/Card.js"],"names":["styles","option","fontSize","color","textAlign","unselectedSnow","marginTop","borderRadius","backgroundColor","alignItems","selectedSnow","padding","unselectedSun","marginBottom","selectedSun","RadioButton","props","useState","initValue","userOption","itemStyleHandler","item","mode","data","map","style","onPress","onChange","value","module","exports","Styles","styledText","fontFamily","StyledText","useFonts","require","children","BoldStyledText","envVars","SERVER_URL","SERVER_PORT","SOCKET_SERVER_IP","SOCKET_SERVER_PORT","MIDDLE_WARE_SERVER_IP","MIDDLE_WARE_SERVER_PORT","JUNK","SECRET","DarkStyles","wrapper","flex","justifyContent","modalView","marginVertical","marginHorizontal","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","tintColor","addModuleModalHeader","flexDirection","paddingVertical","borderTopLeftRadius","borderTopRightRadius","modalHeaderCloseIconWrapper","paddingRight","modalHeaderText","fontWeight","addModuleModalBody","addModuleModalDescriptions","margin","UssidandPassTextInputs","borderWidth","addModuleModalSubmitBtn","borderBottomLeftRadius","borderBottomRightRadius","addModuleModalSubmitBtnText","addModuleModalDescriptionsUSSIDandPassInputsWrapper","loadedACCard","s3Card","cardTitle","LightStyles","dropdown","borderColor","SenariosScreen","useContext","CredentialsContext","storedCredentials","setStoredCredentials","senarios","setSenarios","setSelectedRoomsHelper","senariosSwitchesArr","forEach","senarioItem","push","name","updatedStoredCredentials","AsyncStorage","setItem","JSON","stringify","then","selectedModulesHelper","NetInfo","fetch","state","isConnected","url","credentials","userPhoneNumber","newSenario","axios","post","catch","err","console","log","addSenarioModalVisible","setAddSenarioModalVisible","senarioName","setSenarioName","selectedRooms","setSelectedRooms","isEdittingMode","setIsEdittingMode","selectedSenarios","setSelectedSenarios","selectedSenariosHelper","setSelectedSenariosHelper","selectedModules","setSelectedModules","setSelectedModulesHelper","isDeletingSenarios","setIsDeletingSenarios","radioButtonData","size","strings","useRef","Animated","Value","current","language","EnglishStrings","ArabicStrings","PersianStrings","useEffect","navigation","setOptions","headerTitle","theme","headerTitleAlign","headerTitleStyle","headerStyle","headerLeft","paddingLeft","headerTintColor","handleCancelAddNewSenario","moduleCheckboxValueHandler","index","findIndex","moduleItem","MAC","moduleCheckBoxLabelHandler","customModulesNames","Name","type","plug","AC","switch","moduleCommandHandler","switchNum","num","updatedSelectedModules","switchState","command","toString","replace","moduleState","MOD","PWR","STM","FAN","switchesHandler","initState","onValueChange","activeOpacity","marginRight","Number","toggleSelectedItems","selectedItemsArr","splice","deleteSenariosHandler","parse","userDevicesInfo","updatedSenarios","executeSenarioHandler","senario","length","moduleIndex","roomIndex","userRooms","room","modules","commmandObj","orgDID","CTY","STA","DID","DIR","token","socket","sendMessage","onlineModuleCommandHandler","NetworkInfo","getIPAddress","ipAddress","splitedLocalIp","split","moduleSplitedIp","localIp","client","TcpSocket","createConnection","port","host","timeout","write","on","destroy","res","charCode","String","fromCharCode","offlineModuleCommandHandler","animationType","transparent","visible","addSenario","placeholder","onChangeText","maxHeight","borderTopWidth","showsVerticalScrollIndicator","keyExtractor","id","renderItem","roomData","Accordion","bottomDivider","icon","content","Content","Title","isExpanded","roomID","roomItem","obj","updatedObjects","selectedRoomsHelper","newObject","prevObjects","roomCheckBoxValueChangeHandler","i","containerStyle","CheckBox","right","iconRight","title","textStyle","checkedIcon","uncheckedIcon","checked","moduleCheckboxValueChangeHandler","orientation","storedSenarios","Platform","OS","window","alert","pleaseUseAnUsedName","Alert","text","ok","result","message","status","getItem","storedData","confirm","anErrorOccurredPleaseCheckInternetConnection","error","thisSenarioNameAlreadyUsed","pleaseChooseASenarioName","handleAddNewSenario","addDevice","delete","deny","numColumns","itemData","onLongPress","createContext","contentWrapper","headerCard","minHeight","alignSelf","borderBottomStartRadius","cardHeaderText","descriptionOrSignin","topSignInBtn","paddingHorizontal","cardHeaderTextDescription","textInputWrapper","textInput","inputLabel","InputArea","passwordWarningText","footer","submitBtn","TermsAndPolicesBTN","submitBtnText","alreadySinedUpTextArea","alreadySinedUpText","SignUp","phoneNumber","setPhoneNumber","phoneNumberInputIsFocused","setPhoneNumberInputIsFocused","setLanguage","isSubmitting","setIsSubmitting","headerTransparent","headerLeftContainerStyle","changeLanguage","targetLanguage","KeyboardAvoidingView","ScrollView","contentContainerStyle","flexGrow","View","StatusBar","signIn","enterYourPhoneNumber","Card","TouchableOpacity","TextInput","keyboardType","onFocus","onBlur","enteredPhoneNumber","userDeviceID","Application","uniqueIDArr","uuid","v4","deviceID","element","userDeviceIDHandler","userDeviceInfo","Device","pleaseEnterRequestedInformations","navigate","serverInternalError","handleSignup","ActivityIndicator","sendCode","dropdownModalWrapper","flatlistStyle","card","paddingBottom","addRoomCard","modalHeader","modalHeaderInfoIconWrapper","modalBodyWrapper","addBtn","addBtnText","manualAddRoomModalView","manualAddRoomModalHeader","manualAddRoomModalBody","manualAddRoomInputNameLabel","manualAddRoomInputName","manualAddRoomFooter","manualAddRoomSubmitBtn","manualAddRoomSubmitBtnText","modalInputWrapper","newRoomNameInputBox","borderBottomWidth","borderBottomColor","newRoomNameInputLabel","Home","setIsUpdatingToFalseHandlerInterval","updateReqsInterval","AppState","currentState","appState","rooms","setRooms","fetchUserRooms","parsedUserDevicesInfo","tempStoredData","userInfo","customSwitchesIcons","tempModules","setModules","setSetModulesHelper","recieveCode","setRecieveCode","isFetchingRecieveCode","setIsFetchingRecieveCode","isUpdating","setIsUpdating","dropdownModalVisible","setDropdownModalVisible","modalVisible","setModalVisible","manualAddRoomModalVisible","setManualAddRoomModalVisible","recieveRoomModalVisible","setRecieveRoomModalVisible","sendRoomModalVisible","setSendRoomModalVisible","newRoomName","setNewRoomName","isEditingMode","setIsEditingMode","selectedItems","setSelectedItems","selectedItemsHelper","setSelectedItemsHelper","isSendingRooms","setIsSendingRooms","isDeletingRooms","setIsDeletingRooms","readyState","setSocketReadyState","askForTurningWifiOn","updateModulesHandler","MACsArr","updateReqsLength","setInterval","clearInterval","undefined","tempToken","parsedResult","updateReqs","arrItem","MACs","intervalIndex","onlineUpdate","updateReq","parsedData","newState","RTM","updatedModule","isWaitingForRes","updateInterval","updatedModules","setModulesHelper","openWifiSettings","AndroidOpenSettings","wifiSettings","askForTurningWifiOnHandlerFunc","checkForNearbyModule","opt","offlineUsage","WifiManager","isEnabled","PermissionsAndroid","request","PERMISSIONS","ACCESS_FINE_LOCATION","requestForWifiPermission","ZitkitNeedsThisPermissionToConnectToYourSmartSwitch","buttonNeutral","notNow","buttonNegative","notAllowed","buttonPositive","Allowed","RESULTS","GRANTED","reScanAndLoadWifiList","wifiList","wifiNetworks","wifiNetwork","SSID","substring","psl","ssid","middleChars","modifiedString","slice","generatePassword","connectToProtectedSSID","pleaseTurnOnLocationService","locationSourceSettings","permissionDenied","toUseOfflineUsageYouShouldEnableWifi","cancelable","subscription","addEventListener","getCurrentWifiSSID","remove","lastMessage","isTokenValidated","updating","places","connecting","headerRight","toggleDropdownModal","Entypo","Ionicons","buttomNavNavigation","addListener","denewstatedModules","roomModule","userMACsArr","navbarHeight","Dimensions","get","toggleSelecteItem","fetchRecieveCodeHandler","userRecieveCode","finishSendingRoomsHandler","cardModulesArrHandler","roomModulesArr","storedModule","Modal","onRequestClose","receivePlace","settings","search","removeItem","logOut","AntDesign","addingPlace","manual","receive","marginLeft","roomName","pleaseEnterRoomName","userNewRoom","add","cancel","removeRecieveCode","fetchingReceiveCode","enterThisCodeToGetPlaces","pleaseEnterTargetUserCode","targetUserRecieveCode","roomsToShare","selectedRoomsSentSuccessfully","userWithProvidedCodeDidNotFound","sendRoomHandler","share","roomsToDelete","deleteRoomsHandler","FlatList","waitingForResInterval","gotoRoomModulesHandler","maxWidth","MaterialCommunityIcons","borderBottomEndRadius","ActivationWithSMS","isHandlingSMSActivation","setIsHandlingSMSActivation","setIsHandlingActivation","activationCode","setActivationCode","route","params","fetchActivationCode","handleActivation","code","userCode","persistantLogin","wrongCode","textMessage","activationWithTextMessage","activationCodeSuccessfullySentTo","StyleSheet","create","FetchRoom","Text","settingBoxWrapper","settingBoxHeader","settingBoxHeaderText","themeSettingBoxBody","Settings","setTheme","setOfflineUsage","changeLanguageHandler","light","dark","Switch","trackColor","false","true","thumbColor","newValue","offlineUsageChangeHandler","plugCard","loadedPlugCard","acCard","acView","loadedAcView","loadedS3Card","s4Card","loadedS4Card","addModuleCard","lottie","label","position","left","top","zIndex","placeholderStyle","selectedTextStyle","iconStyle","inputSearchStyle","RoomModules","commandInterval","addModuleModalVisible","setAddModuleModalVisile","addModuleModalSecondStepVisible","setAddModuleModalSecondStepVisible","addModuleModalThirdStepVisible","setAddModuleModalThirdStepVisible","addModuleModalFifthStepVisible","setAddModuleModalFifthStepVisible","rememberModemInfo","setRememberModemInfo","offlineConfig","setOfflineConfig","modemPassword","setModemPassword","isAddingModule","setIsAddingModule","seconds","setSeconds","isEdittingModules","setIsEdittingModules","isEdittingModulesHelper","setIsEdittingModulesHelper","isEdittingModuleName","setIsEdittingModuleName","isEdittingModuleNameHelper","setIsEdittingModuleNameHelper","moduleName","setModuleName","isEdittingSwitchIcon","setIsEdittingSwitchIcon","isEdittingSwitchIconHelper","setIsEdittingSwitchIconHelper","dropDownData","setDropDownData","isDropDownFocused","setIsDropDownFocused","dropDownValue","setDropDownValue","isReloadingWifiList","setIsReloadingWifiList","addingModulesStep","setAddingModuleStep","fadeAnim","FontAwesome5","useNavigationState","fadeIn","timing","toValue","duration","useNativeDriver","start","fetchUserRoomModules","userRoom","navProps","getState","rootStackProps","offlineIsStarted","localModules","HeaderTitleComponent","update","moduleRestInterval","currentStateIndex","appStateListener","currentAppState","anErrorOccurredWhileConnectingToDevicePleaseTryAgain","modemInfo","password","requestAccessFineLocation","loadWifiList","tempDropDownData","moduleTypeHandler","handleSwitchIcon","switchIndex","Switches","switchItem","t2","localModuleCommandHandler","styleHandler","handleIsEdittingModules","tempIsEdittingModules","finished","handleCancelEditting","handleEditModuleName","tempIsEdittingModuleName","storedCustomModulesNames","handleChangeModuleName","newCustomModulesName","handleIsEdittingSwitchIcon","tempIsEdittingSwitchIcon","handleCancelSwitchIconEditting","handleChangeSwitchIcon","tempStoredCustomSwitchesIcons","newCustomSwitchesIcons","putDeviceOnConfigMode","nextStep","connectZITCOCONFIGThroughtWifi","chooseNetworkAndEnterItsPassword","labelField","valueField","chooseNetwork","searchPlaceholder","renderLeftIcon","placeholderPassword","disabled","saveModemInfo","serverIP","data1","SSD","data2","PAS","data3","data4","RID","data5","LSS","data6","PSL","data7","SIP","data8","SPO","interval","clientSocket","tries","parsedRes","lss","dataSusseccfullySentToDevicePleaseCloseAppAndConnectToInternet","anErrorOccurredPleaseEnsureThatYouAreConnectedToDeviceNetwork","errorInSocketConnection","deviceConfigurationIsNotPossibleWithWebApplication","handleAddNewModule","addingDevice","opacity","maxLength","save","edit","FontAwesome","back","Tab","createMaterialTopTabNavigator","MaterialTopTabNav","appReady","setAppReady","Navigator","backBehavior","independent","screenOptions","tabBarStyle","tabBarIndicatorStyle","tabBarItemStyle","tabBarScrollEnabled","lazy","lazyPlaceholder","tabBarLabel","focused","animationEnabled","initialRouteName","swipeVelocityImpact","Screen","options","prop","Stack","createStackNavigator","RootStack","setIsTokenValidated","fontsLoaded","headerShown","Consumer","NavigationContainer","freezeOnBlur","createBottomTabNavigator","BottomTabBar","descriptors","routes","key","tabBarLable","isFocused","accessibilityRole","accessibilityState","selected","accessibilityLabel","tabBarAccessibilityLabel","testID","tabBarTestID","event","emit","target","canPreventDefault","defaultPrevented","merge","BottomTabNav","welcomeMsg","useWebSocket","onOpen","retryOnError","reconnectAttempts","shouldReconnect","CloseEvent","lastJsonMessage","tabBar","tabBarIcon","tabInfo","home","TermsAndPoliciesScreen","termsAndPolices","readTermsAndPolicies","NewUserNavigator","registerRootComponent","Provider","handleScreen","searchForOfflineModule","toYouOfflineUsageYouShouldTurnOfflineUsageOnInSettings"],"mappings":"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","file":"static/js/app.1a909195.chunk.js","sourcesContent":["import React, { useState } from 'react';\r\nimport { View, Text, Pressable } from 'react-native';\r\n\r\nconst RadioButton = (props) => {\r\n const [userOption, setUserOption] = useState(props.initValue);\r\n\r\n const itemStyleHandler = (item) => {\r\n if(item.mode == userOption && item.mode == 0) return styles.selectedSun\r\n if(item.mode != userOption && item.mode == 0) return styles.unselectedSun\r\n if(item.mode == userOption && item.mode == 1) return styles.selectedSnow\r\n if(item.mode != userOption && item.mode == 1) return styles.unselectedSnow \r\n\r\n }\r\n\r\n return (\r\n \r\n {props.data.map((item) => {\r\n return (\r\n {\r\n props.onChange(item.mode)\r\n }}\r\n >\r\n\r\n {item.value}\r\n \r\n );\r\n })}\r\n \r\n );\r\n}\r\n\r\nlet styles = {\r\n option: {\r\n fontSize: 20,\r\n color: 'white',\r\n textAlign: 'center',\r\n },\r\n unselectedSnow: {\r\n marginTop: 2,\r\n borderRadius: 5,\r\n backgroundColor: '#394b81',\r\n alignItems: 'center'\r\n\r\n },\r\n selectedSnow: {\r\n marginTop: 2,\r\n padding: 10,\r\n borderRadius: 5,\r\n backgroundColor:'#000f9f',\r\n alignItems: 'center'\r\n },\r\n unselectedSun: {\r\n marginBottom: 2,\r\n borderRadius: 5,\r\n backgroundColor: '#9e3e3e',\r\n alignItems: 'center'\r\n },\r\n selectedSun: {\r\n marginBottom: 2,\r\n padding: 10,\r\n borderRadius: 5,\r\n backgroundColor: '#d30000',\r\n alignItems: 'center'\r\n },\r\n}\r\n\r\nexport default RadioButton;","module.exports = __webpack_public_path__ + \"./fonts/Mikhak-Bold.ttf\";","import React from 'react';\r\nimport { Text, ActivityIndicator } from 'react-native';\r\n\r\nimport { useFonts } from 'expo-font'\r\n\r\nconst StyledText = props =>{\r\n\r\n let [fontsLoaded] = useFonts({\r\n \"Mikhak\": require('../assets/Fonts/Mikhak-Regular.ttf')\r\n })\r\n \r\n if (!fontsLoaded) return {props.children} \r\n else return {props.children} \r\n // return {props.children} \r\n\r\n // return {props.children}\r\n};\r\n\r\nlet Styles = {\r\n styledText: {\r\n fontFamily: \"Mikhak\"\r\n }\r\n};\r\n// const styles = StyleSheet.create({\r\n// card: {\r\n// padding: 20,\r\n// margin:10,\r\n// backgroundColor: '#ffffff',\r\n// shadowColor: 'black',\r\n// shadowOffset: {width: 0, height:2},\r\n// shadowRadius: 6,\r\n// shadowOpacity: 0.26,\r\n// elevation: 10,\r\n// borderRadius: 15,\r\n// },\r\n// });\r\n\r\nexport default StyledText;","import React, { useEffect, useState } from 'react';\r\nimport { Text, ActivityIndicator } from 'react-native';\r\n\r\nimport { useFonts } from 'expo-font'\r\n\r\nconst BoldStyledText = props =>{\r\n \r\n const [fontsLoaded] = useFonts({\r\n \"Mikhak-Bold\": require('../assets/Fonts/Mikhak-Bold.ttf')\r\n })\r\n \r\n // return {props.children} \r\n if (!fontsLoaded) return {props.children} \r\n else return {props.children}\r\n \r\n};\r\n\r\nlet Styles = {\r\n styledText: {\r\n fontFamily: \"Mikhak-Bold\"\r\n }\r\n};\r\n// const styles = StyleSheet.create({\r\n// card: {\r\n// padding: 20,\r\n// margin:10,\r\n// backgroundColor: '#ffffff',\r\n// shadowColor: 'black',\r\n// shadowOffset: {width: 0, height:2},\r\n// shadowRadius: 6,\r\n// shadowOpacity: 0.26,\r\n// elevation: 10,\r\n// borderRadius: 15,\r\n// },\r\n// });\r\n\r\nexport default BoldStyledText;","import {SERVER_URL, SERVER_PORT, SOCKET_SERVER_IP, SOCKET_SERVER_PORT, MIDDLE_WARE_SERVER_IP, MIDDLE_WARE_SERVER_PORT, JUNK, SECRET} from '@env';\r\n\r\nconst envVars = {\r\n SERVER_URL , SERVER_PORT, SOCKET_SERVER_IP, SOCKET_SERVER_PORT, MIDDLE_WARE_SERVER_IP, MIDDLE_WARE_SERVER_PORT, JUNK, SECRET\r\n};\r\n\r\nexport default envVars;\r\n","import React, { useEffect, useContext, useState, useRef } from \"react\";\r\nimport { View, Text, TouchableOpacity, TextInput, StatusBar, Modal, ScrollView, FlatList, Platform, Alert, Animated } from \"react-native\";\r\nimport { CredentialsContext } from '../components/CredentialsContext';\r\n\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport NetInfo from \"@react-native-community/netinfo\";\r\nimport { AntDesign, Entypo, Ionicons, MaterialIcons, FontAwesome5, FontAwesome, MaterialCommunityIcons } from '@expo/vector-icons';\r\nimport { ListItem, Divider, Switch } from '@rneui/themed';\r\n\r\nimport axios from \"axios\";\r\n\r\nimport BoldStyledText from \"../components/BoldStyledText\";\r\nimport StyledText from \"../components/StyledText\";\r\nimport Card from '../components/Card';\r\nimport RadioButton from '../components/RadioButton';\r\n\r\nimport { EnglishStrings } from '../strings/English';\r\nimport { PersianStrings } from '../strings/Persian';\r\nimport { ArabicStrings } from '../strings/Arabic';\r\n\r\nimport envVars from '../env';\r\n\r\nconst SenariosScreen = props => {\r\n const {storedCredentials, setStoredCredentials} = useContext(CredentialsContext);\r\n const [senarios, setSenarios] = useState(storedCredentials.senarios)\r\n const [selectedRoomsHelper, setSelectedRoomsHelper] = useState(0)\r\n\r\n const [senariosSwitch, setSenariosSwitch] = useState(()=> {\r\n if(storedCredentials.senarios){\r\n var senariosSwitchesArr = []\r\n storedCredentials.senarios.forEach(senarioItem => {\r\n senariosSwitchesArr.push({name: senarioItem.name, value: false})\r\n });\r\n return senariosSwitchesArr\r\n } else {\r\n const updatedStoredCredentials = {...storedCredentials, ...{senarios: []}}\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials) \r\n setSelectedRoomsHelper(selectedModulesHelper - 1)\r\n\r\n NetInfo.fetch().then(state=> {\r\n if(state.isConnected){\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/updateUserInfo';\r\n const credentials = {\r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n data: {newSenario: updatedStoredCredentials.senarios} \r\n }\r\n axios.post(url, credentials)\r\n .catch(err=> {console.log(err);})\r\n }\r\n })\r\n }).catch(err=> {console.log(err);})\r\n\r\n return []\r\n }\r\n })\r\n\r\n const [addSenarioModalVisible, setAddSenarioModalVisible] = useState(false)\r\n const [senarioName, setSenarioName] = useState('')\r\n\r\n const [selectedRooms, setSelectedRooms] = useState([])\r\n\r\n const [isEdittingMode, setIsEdittingMode] = useState(false)\r\n const [selectedSenarios, setSelectedSenarios] = useState([])\r\n const [selectedSenariosHelper, setSelectedSenariosHelper] = useState([])\r\n\r\n const [selectedModules, setSelectedModules] = useState([])\r\n const [selectedModulesHelper, setSelectedModulesHelper] = useState(0)\r\n\r\n const [isDeletingSenarios ,setIsDeletingSenarios] = useState(false)\r\n\r\n const radioButtonData = [{value: , mode: 0}, {value: , mode: 1}]\r\n \r\n const fadeAnim = useRef(new Animated.Value(0)).current;\r\n\r\n const strings = () => {\r\n if(storedCredentials.language == 'English') {\r\n return EnglishStrings\r\n } else if(storedCredentials.language == 'Arabic') {\r\n return ArabicStrings\r\n } else return PersianStrings\r\n }\r\n \r\n useEffect(() => {\r\n // console.log(storedCredentials)\r\n // console.log(props)\r\n props.navigation.setOptions({\r\n headerTitle: () => (\r\n \r\n {strings().senarios} \r\n \r\n ),\r\n headerTitleAlign: 'center',\r\n headerTitleStyle:{\r\n fontSize: 35,\r\n // fontFamily: \"Mikhak-Bold\"\r\n },\r\n headerStyle:{\r\n backgroundColor: storedCredentials.theme == \"light\" ? '#f2f2f2' : '#3b3c37' \r\n },\r\n headerLeft: () => (\r\n \r\n \r\n {\r\n setAddSenarioModalVisible(true)\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n ),\r\n headerTintColor: storedCredentials.theme == \"light\" ? 'black' : 'white' \r\n })\r\n },[])\r\n\r\n const fetchUserRooms = () =>{\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/fetchRooms';\r\n const parsedUserDevicesInfo = JSON.parse(storedCredentials.userDevicesInfo);\r\n\r\n const credentials = { \r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n userDeviceID: parsedUserDevicesInfo[0].id,\r\n userDeviceInfo: parsedUserDevicesInfo[0].name,\r\n };\r\n \r\n \r\n axios.post(url, credentials)\r\n .then((res)=> {\r\n const result = res.data;\r\n const { message, status, data} = result;\r\n\r\n AsyncStorage.getItem('flowerCribCredentials').then((storedData)=> {\r\n storedData = JSON.parse(storedData);\r\n storedData.userRooms = data.userRooms;\r\n var tempStoredData = storedData\r\n if(data.userInfo.customModulesNames){\r\n tempStoredData = {...storedData, ...{customModulesNames: data.userInfo.customModulesNames}, ...{customSwitchesIcons: data.userInfo.customSwitchesIcons}, ...{senarios: data.userInfo.senarios}}\r\n }\r\n \r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(tempStoredData));\r\n setStoredCredentials(tempStoredData)\r\n \r\n })\r\n .catch((err) => console.log(err))\r\n \r\n })\r\n .catch((err)=> {\r\n });\r\n };\r\n\r\n const handleAddNewSenario = () => {\r\n\r\n const index = storedCredentials.senarios.findIndex(senario => senario.name == senarioName)\r\n if(senarioName == ''){\r\n if(Platform.OS == 'web'){\r\n window.alert(strings().pleaseChooseASenarioName)\r\n } else {\r\n Alert.alert(\"\",strings().pleaseChooseASenarioName, [{text: strings().ok}])\r\n }\r\n return\r\n } else if(index != -1) {\r\n if(Platform.OS == 'web'){\r\n window.alert(strings().thisSenarioNameAlreadyUsed)\r\n } else {\r\n Alert.alert(\"\",strings().thisSenarioNameAlreadyUsed, [{text: strings().ok}])\r\n }\r\n \r\n return\r\n } else {\r\n var updatedStoredCredentials\r\n if(storedCredentials.senarios){\r\n var storedSenarios = storedCredentials.senarios\r\n const index = storedSenarios.findIndex(senarioItem => senarioItem.name == senarioName)\r\n if(index == -1){\r\n storedSenarios.push({name: senarioName, senario: selectedModules })\r\n updatedStoredCredentials = {...storedCredentials, ...{senarios: storedSenarios}}\r\n } else {\r\n if(Platform.OS == 'web'){\r\n window.alert(strings().pleaseUseAnUsedName)\r\n } else {\r\n Alert.alert(\"\",strings().pleaseUseAnUsedName, [{text: strings().ok}])\r\n }\r\n }\r\n }else {\r\n updatedStoredCredentials = {...storedCredentials, ...{senarios: [{name: senarioName, senario: selectedModules }]}}\r\n }\r\n\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/updateUserInfo';\r\n const credentials = {\r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n data: {newSenario: updatedStoredCredentials.senarios} \r\n }\r\n axios.post(url, credentials)\r\n .then((res)=>{\r\n const result = res.data;\r\n const { message, status, data} = result;\r\n \r\n AsyncStorage.getItem('flowerCribCredentials').then((storedData)=> {\r\n storedData = JSON.parse(storedData);\r\n \r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials));\r\n setSenarios(updatedStoredCredentials.senarios)\r\n setSelectedRoomsHelper(selectedModulesHelper - 1)\r\n \r\n })\r\n\r\n handleCancelAddNewSenario()\r\n })\r\n .catch((err)=>{\r\n if(Platform.OS == 'web') {\r\n window.confirm(strings().anErrorOccurredPleaseCheckInternetConnection)\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().anErrorOccurredPleaseCheckInternetConnection,\r\n [{\r\n text: strings().ok\r\n }]\r\n );\r\n }\r\n })\r\n // AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n // .then(()=> {\r\n // setStoredCredentials(updatedStoredCredentials) \r\n // setSelectedRoomsHelper(selectedModulesHelper - 1)\r\n\r\n // NetInfo.fetch().then(state=> {\r\n // if(state.isConnected){\r\n // const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/updateUserInfo';\r\n // const credentials = {\r\n // userPhoneNumber: storedCredentials.userPhoneNumber,\r\n // data: {newSenario: updatedStoredCredentials.senarios} \r\n // }\r\n // axios.post(url, credentials)\r\n // .catch(err=> {console.log(err);})\r\n // }\r\n // })\r\n // }).catch(err=> {console.log(err);})\r\n \r\n // fetchUserRooms()\r\n handleCancelAddNewSenario()\r\n\r\n }\r\n\r\n }\r\n \r\n const handleCancelAddNewSenario = () => {\r\n setAddSenarioModalVisible(false)\r\n setSenarioName('')\r\n setSelectedModules([])\r\n setSelectedRooms([])\r\n }\r\n\r\n const roomCheckBoxValueHandler = (roomID) => {\r\n const index = selectedRooms.findIndex(roomItem => roomItem.id == roomID)\r\n if(index == -1){\r\n // console.log(roomID, index)\r\n return false\r\n } \r\n else {\r\n // console.log(roomID, index)\r\n return true\r\n } \r\n }\r\n\r\n const roomCheckBoxValueChangeHandler = (roomID) => {\r\n const roomIndex = selectedRooms.findIndex(obj => obj.id === roomID);\r\n if (roomIndex !== -1) {\r\n // RoomID exists, delete it\r\n var updatedObjects = selectedRooms\r\n updatedObjects.splice(roomIndex, 1)\r\n setSelectedRooms(updatedObjects);\r\n setSelectedRoomsHelper((selectedRoomsHelper) => selectedRoomsHelper + 1)\r\n // console.log(selectedRooms)\r\n } else {\r\n // RoomID doesn't exist, add a new object\r\n const newObject = { id: roomID };\r\n setSelectedRooms(prevObjects => [...prevObjects, newObject]);\r\n setSelectedRoomsHelper((selectedRoomsHelper) => selectedRoomsHelper + 1)\r\n // console.log(selectedRooms)\r\n }\r\n\r\n }\r\n\r\n const moduleCheckboxValueHandler = (module) => {\r\n const index = selectedModules.findIndex(moduleItem => moduleItem.MAC === module.MAC)\r\n if(index == -1){\r\n return [false, '']\r\n } else {\r\n return [true, selectedModules[index].state]\r\n }\r\n } \r\n\r\n const moduleCheckboxValueChangeHandler = (module) => {\r\n const index = selectedModules.findIndex(moduleItem => moduleItem.MAC == module.MAC)\r\n const inialStateHandler = () => {\r\n if (module.type[0] == 'S' || module.type == 'P'){\r\n return '0000'\r\n } else if (module.type[0] == 'A') {\r\n return {PWR: '0', FAN: '50', STM: '25', MOD: '0'}\r\n }\r\n }\r\n if(index !== -1) {\r\n var updatedObjects = selectedModules\r\n updatedObjects.splice(index, 1)\r\n setSelectedModules(updatedObjects)\r\n setSelectedModulesHelper((selectedModulesHelper) => selectedModulesHelper + 1)\r\n \r\n } else {\r\n const newObject = { MAC: module.MAC , state: inialStateHandler()}\r\n setSelectedModules(prevObjects => [...prevObjects, newObject])\r\n setSelectedModulesHelper((selectedModulesHelper) => selectedModulesHelper + 1)\r\n \r\n }\r\n }\r\n\r\n const moduleCheckBoxLabelHandler = (module) => {\r\n if(storedCredentials.customModulesNames) {\r\n const index = storedCredentials.customModulesNames.findIndex(moduleItem => moduleItem.MAC == module.MAC )\r\n if(index != -1) {\r\n return storedCredentials.customModulesNames[index].Name\r\n } else {\r\n if( module.type == \"P\" ){\r\n return strings().plug\r\n } else if ( module.type == \"A1\") {\r\n return strings().AC\r\n } else if ( module.type == \"S1\") {\r\n return strings().switch\r\n } else if ( module.type == \"S2\") {\r\n return strings().switch\r\n } else if ( module.type == \"S3\") {\r\n return strings().switch\r\n } else if ( module.type == \"S4\") {\r\n return strings().switch\r\n } else if ( module.type == \"A2\") {\r\n return strings().AC\r\n }\r\n }\r\n } else {\r\n if( module.type == \"P\" ){\r\n return strings().plug\r\n } else if ( module.type == \"A1\") {\r\n return strings().AC\r\n } else if ( module.type == \"S1\") {\r\n return strings().switch\r\n } else if ( module.type == \"S2\") {\r\n return strings().switch\r\n } else if ( module.type == \"S3\") {\r\n return strings().switch\r\n } else if ( module.type == \"S4\") {\r\n return strings().switch\r\n } else if ( module.type == \"A2\") {\r\n return strings().AC\r\n }\r\n\r\n }\r\n }\r\n\r\n const moduleCommandHandler = (module, switchNum) => {\r\n const index = selectedModules.findIndex(moduleItem => moduleItem.MAC == module.MAC)\r\n var updatedSelectedModules = selectedModules\r\n\r\n if(module.type[0] == 'S' || module.type[0] == 'P'){\r\n const toggleSwitchState = (num) => {\r\n if(switchState[num] == 0) {\r\n return 1\r\n } else if(switchState[num] == 1) {\r\n return 0\r\n }\r\n \r\n }\r\n var switchState = [...updatedSelectedModules[index].state]\r\n switchState[switchNum] = toggleSwitchState(switchNum)\r\n const command = switchState.toString().replace(/,/g,'');\r\n\r\n updatedSelectedModules[index].state = command\r\n\r\n setSelectedModules(updatedSelectedModules)\r\n setSelectedModulesHelper((selectedModulesHelper) => selectedModulesHelper + 1)\r\n } else if(module.type[0] == 'A'){\r\n \r\n var moduleState = updatedSelectedModules[index].state\r\n if(switchNum.MOD){\r\n moduleState.MOD = switchNum.MOD\r\n } else if(switchNum.PWR){\r\n moduleState.PWR = switchNum.PWR\r\n } else if(switchNum.STM){\r\n moduleState.STM = switchNum.STM\r\n } else if(switchNum.FAN){\r\n if(moduleState.FAN[0] == 0){\r\n if(module.type == 'A1'){\r\n moduleState.FAN = '2'\r\n } else if(module.type == 'A2'){\r\n moduleState.FAN = '5'\r\n }\r\n }else{\r\n moduleState.FAN = switchNum.FAN\r\n }\r\n\r\n if(module.type == 'A2') {\r\n if(switchNum.FAN == \"8\" || switchNum.FAN == \"0\"){\r\n moduleState.FAN = '0'\r\n } \r\n } else if(module.type == 'A1') {\r\n if(switchNum.FAN == \"4\" || switchNum.FAN == \"0\"){\r\n moduleState.FAN = '0'\r\n }\r\n }\r\n }\r\n \r\n updatedSelectedModules[index].state = moduleState\r\n setSelectedModules(updatedSelectedModules)\r\n setSelectedModulesHelper((selectedModulesHelper) => selectedModulesHelper + 1)\r\n\r\n }\r\n }\r\n\r\n const switchesHandler = (module, initState) => {\r\n\r\n if(module.type == 'S1') { \r\n return (\r\n \r\n moduleCommandHandler(module, 1)} />\r\n \r\n )\r\n } else if(module.type == 'S2') {\r\n return (\r\n \r\n moduleCommandHandler(module, 2)} />\r\n moduleCommandHandler(module, 0)} />\r\n \r\n )\r\n } else if(module.type == 'S3') {\r\n return (\r\n \r\n moduleCommandHandler(module, 2)} />\r\n moduleCommandHandler(module, 1)} />\r\n moduleCommandHandler(module, 0)} />\r\n \r\n )\r\n } else if(module.type == 'S4') {\r\n return (\r\n \r\n moduleCommandHandler(module, 3)} />\r\n moduleCommandHandler(module, 2)} />\r\n moduleCommandHandler(module, 1)} />\r\n moduleCommandHandler(module, 0)} />\r\n \r\n )\r\n } else if(module.type == 'P') {\r\n return (\r\n \r\n \r\n \r\n )\r\n } else if(module.type == \"A1\" || module.type == 'A2'){\r\n const index = selectedModules.findIndex(moduleItem => moduleItem.MAC == module.MAC)\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {selectedModules[index].state.PWR == 1 &&\r\n \r\n {selectedModules[index].state.MOD == 0 && \r\n moduleCommandHandler(module,{MOD: mode.toString()})} initValue={radioButtonData[0].mode}/>\r\n }\r\n {selectedModules[index].state.MOD == 1 && \r\n moduleCommandHandler(module,{MOD: mode.toString()})} initValue={radioButtonData[1].mode}/>\r\n }\r\n \r\n }\r\n \r\n\r\n \r\n \r\n {selectedModules[index].state.PWR == 1 &&\r\n \r\n \r\n moduleCommandHandler(module, {STM: (Number(moduleCheckboxValueHandler(module)[1].STM) + 1).toString()})}\r\n >\r\n \r\n \r\n \r\n \r\n {selectedModules[index].state.STM}\r\n \r\n \r\n \r\n moduleCommandHandler(module, {STM: (Number(moduleCheckboxValueHandler(module)[1].STM) - 1).toString()})}\r\n >\r\n \r\n \r\n \r\n\r\n \r\n }\r\n\r\n \r\n \r\n\r\n \r\n \r\n {selectedModules[index].state.PWR == 0 && \r\n \r\n moduleCommandHandler(module, {PWR: \"1\"})}\r\n >\r\n \r\n \r\n \r\n }\r\n {selectedModules[index].state.PWR == 1 && \r\n \r\n moduleCommandHandler(module, {PWR: \"0\"})}\r\n >\r\n \r\n \r\n \r\n }\r\n \r\n\r\n \r\n {selectedModules[index].state.PWR == 1 &&\r\n \r\n {selectedModules[index].state.FAN[0] == \"0\" ? moduleCommandHandler(module, {FAN: \"1\"}) : moduleCommandHandler(module, {FAN: (Number(moduleCheckboxValueHandler(module)[1].FAN[0]) + 1).toString()})}}\r\n >\r\n \r\n \r\n\r\n \r\n \r\n {selectedModules[index].state.FAN[0] == 0 ? 'A' : selectedModules[index].state.FAN[0]}\r\n \r\n\r\n \r\n {\r\n selectedModules[index].state.FAN[1] == 0 ?\r\n \r\n :\r\n \r\n }\r\n \r\n\r\n \r\n\r\n {selectedModules[index].state.FAN[0] == \"0\" ? moduleCommandHandler(module, {FAN: \"3\"}) : moduleCommandHandler(module, {FAN: (Number(moduleCheckboxValueHandler(module)[1].FAN[0]) - 1).toString()})}}\r\n >\r\n \r\n\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n const toggleSelectedItems = (senarioName) => {\r\n if(!isEdittingMode){\r\n setIsEdittingMode(true)\r\n }\r\n var selectedItemsArr = selectedSenarios\r\n const index = selectedItemsArr.findIndex(senarioItem => senarioItem == senarioName)\r\n if(index == -1){\r\n selectedItemsArr.push(senarioName)\r\n setSelectedSenarios(selectedItemsArr)\r\n setSelectedSenariosHelper(selectedSenariosHelper + 1)\r\n } else {\r\n selectedItemsArr.splice(index, 1)\r\n setSelectedSenarios(selectedItemsArr)\r\n setSelectedSenariosHelper(selectedSenariosHelper - 1)\r\n }\r\n }\r\n\r\n const finishDeletingSenariosHandler = () => {\r\n setIsEdittingMode(false)\r\n setIsDeletingSenarios(false)\r\n setSelectedSenarios([])\r\n setSelectedSenariosHelper(1)\r\n\r\n }\r\n\r\n const deleteSenariosHandler = () => {\r\n setIsDeletingSenarios(true)\r\n \r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/updateUserInfo';\r\n const parsedUserDevicesInfo = JSON.parse(storedCredentials.userDevicesInfo);\r\n\r\n var updatedSenarios = storedCredentials.senarios\r\n selectedSenarios.forEach(senarioName => {\r\n const index = updatedSenarios.findIndex(senarioItem => senarioItem.name == senarioName)\r\n updatedSenarios.splice(index, 1)\r\n })\r\n var updatedStoredCredentials = storedCredentials\r\n updatedStoredCredentials.senarios = updatedSenarios\r\n\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n setSelectedRoomsHelper(selectedModulesHelper + 1)\r\n\r\n NetInfo.fetch().then(state=> {\r\n if(state.isConnected){\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/updateUserInfo';\r\n const credentials = {\r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n data: {newSenario: updatedStoredCredentials.senarios} \r\n }\r\n axios.post(url, credentials)\r\n .catch(err=> {console.log(err);})\r\n\r\n finishDeletingSenariosHandler()\r\n }\r\n })\r\n }).catch(err=> {console.log(err);})\r\n \r\n\r\n }\r\n\r\n const onlineModuleCommandHandler = (senario) => {\r\n var tempToken = '123'\r\n var moduleIndex\r\n const roomIndex = storedCredentials.userRooms.findIndex(room => {\r\n moduleIndex = room.modules.findIndex(module => module.MAC == senario.MAC)\r\n if(moduleIndex != -1) return true\r\n })\r\n if(moduleIndex == -1 || roomIndex == -1) return\r\n else {\r\n const moduleItem = storedCredentials.userRooms[roomIndex].modules[moduleIndex]\r\n var commmandObj\r\n if(typeof senario.state == 'string'){\r\n if(moduleItem.orgDID){\r\n commmandObj = {\r\n CTY: 'mr',\r\n STA: senario.state,\r\n DID: moduleItem.orgDID,\r\n MAC: senario.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n token: tempToken\r\n }\r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n STA: senario.state,\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: senario.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n token: tempToken\r\n }\r\n }\r\n } else {\r\n if(moduleItem.orgDID){\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: moduleItem.orgDID,\r\n MAC: senario.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n STM: senario.state.STM,\r\n FAN: senario.state.FAN,\r\n MOD: senario.state.MOD,\r\n PWR: senario.state.PWR,\r\n token: tempToken,\r\n }\r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: senario.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n FAN: senario.state.FAN,\r\n MOD: senario.state.MOD,\r\n PWR: senario.state.PWR,\r\n STM: senario.state.STM,\r\n token: tempToken\r\n }\r\n }\r\n }\r\n \r\n props.socket.sendMessage(JSON.stringify(commmandObj))\r\n }\r\n }\r\n\r\n const offlineModuleCommandHandler = (senario) => {\r\n var tempToken = '123'\r\n var moduleIndex\r\n const roomIndex = storedCredentials.userRooms.findIndex(room => {\r\n moduleIndex = room.modules.findIndex(module => module.MAC == senario.MAC)\r\n if(moduleIndex != -1) return true\r\n })\r\n if(moduleIndex == -1 || roomIndex == -1) return\r\n else {\r\n const moduleItem = storedCredentials.userRooms[roomIndex].modules[moduleIndex]\r\n var commmandObj\r\n if(typeof senario.state == 'string'){\r\n if(moduleItem.orgDID){\r\n commmandObj = {\r\n CTY: 'mr',\r\n STA: senario.state,\r\n DID: moduleItem.orgDID,\r\n MAC: senario.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n token: tempToken\r\n }\r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n STA: senario.state,\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: senario.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n token: tempToken\r\n }\r\n }\r\n } else {\r\n if(moduleItem.orgDID){\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: moduleItem.orgDID,\r\n MAC: senario.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n STM: senario.state.STM,\r\n FAN: senario.state.FAN,\r\n MOD: senario.state.MOD,\r\n PWR: senario.state.PWR,\r\n token: tempToken,\r\n }\r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: senario.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n FAN: senario.state.FAN,\r\n MOD: senario.state.MOD,\r\n PWR: senario.state.PWR,\r\n STM: senario.state.STM,\r\n token: tempToken\r\n }\r\n }\r\n }\r\n \r\n NetworkInfo.getIPAddress().then(ipAddress => {\r\n if(ipAddress){\r\n const splitedLocalIp = ipAddress.split(\".\")\r\n //console.log(\"Splited IP: \", splitedLocalIp)\r\n const moduleSplitedIp = module.localIp.split(\".\")\r\n \r\n if( moduleSplitedIp[0] == splitedLocalIp[0] && moduleSplitedIp[1] == splitedLocalIp[1] && moduleSplitedIp[2] == splitedLocalIp[2] ) {\r\n const client = TcpSocket.createConnection({port:9999,host: module.localIp, timeout: 2000}, () =>{\r\n client.write(JSON.stringify(commmandObj));\r\n }) \r\n \r\n client.on('timeout', ()=> {\r\n client.destroy()\r\n })\r\n \r\n client.on('data', function(data) {\r\n var res = \"\";\r\n data.map(charCode=> res = res + String.fromCharCode(charCode))\r\n const parsedData = JSON.parse(res)\r\n \r\n client.destroy();\r\n \r\n }) \r\n \r\n }\r\n\r\n }\r\n\r\n });\r\n \r\n }\r\n \r\n }\r\n\r\n const executeSenarioHandler = (senario) => {\r\n if(senario.length > 0){\r\n senario.forEach(senario => {\r\n NetInfo.fetch().then(state => {\r\n if(state.isConnected){\r\n onlineModuleCommandHandler(senario)\r\n } else {\r\n offlineModuleCommandHandler(senario)\r\n }\r\n })\r\n })\r\n\r\n }\r\n }\r\n\r\n const senariosSwitchValueHandler = (senarioName) => {\r\n // console.log(senariosSwitch)\r\n const index = senariosSwitch.findIndex(senarioItem=> senarioItem.name == senarioName)\r\n if(index != -1 ) {\r\n return senariosSwitch[index].value\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n return(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n handleCancelAddNewSenario()}\r\n >\r\n \r\n \r\n\r\n {strings().addSenario} \r\n \r\n \r\n \r\n \r\n \r\n setSenarioName(value) } \r\n value={senarioName}\r\n />\r\n {strings().senarioName}: \r\n \r\n \r\n item.id}\r\n renderItem=\r\n {roomData =>\r\n }\r\n content={\r\n \r\n \r\n \r\n \r\n { roomData.item.name }\r\n \r\n \r\n \r\n\r\n \r\n \r\n }\r\n isExpanded={roomCheckBoxValueHandler(roomData.item.id)}\r\n onPress={()=> {roomCheckBoxValueChangeHandler(roomData.item.id)} }\r\n >\r\n \r\n {roomData.item.modules.map((module, i) => {\r\n return(\r\n \r\n \r\n {moduleCheckboxValueHandler(module)[0] && \r\n \r\n {switchesHandler(module ,moduleCheckboxValueHandler(module)[1])}\r\n \r\n }\r\n \r\n }\r\n uncheckedIcon={}\r\n checked={moduleCheckboxValueHandler(module)[0]}\r\n onPress={()=> {moduleCheckboxValueChangeHandler(module)}}\r\n />\r\n \r\n \r\n \r\n \r\n )\r\n }) }\r\n \r\n \r\n\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n handleAddNewSenario()}\r\n >\r\n {strings().addDevice} \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n isEdittingMode && \r\n \r\n {isDeletingSenarios ? {} : deleteSenariosHandler()}}\r\n >\r\n {strings().delete} \r\n \r\n {\r\n setIsEdittingMode(!isEdittingMode);\r\n setSelectedSenarios([]);\r\n setSelectedSenariosHelper(1);\r\n }}\r\n \r\n >\r\n {strings().deny} \r\n \r\n \r\n }\r\n\r\n item.name}\r\n numColumns={2}\r\n style={{}}\r\n renderItem=\r\n {itemData => \r\n \r\n isEdittingMode ? {} : toggleSelectedItems(itemData.item.name)}\r\n onPress={()=> isEdittingMode ? toggleSelectedItems(itemData.item.name) : executeSenarioHandler(itemData.item.senario)}\r\n >\r\n senarioName == itemData.item.name) !== -1 ? 'space-between' : 'center', alignItems: 'center', flex: 1, }}>\r\n \r\n {itemData.item.name} \r\n \r\n\r\n {\r\n selectedSenarios.findIndex(senarioName => senarioName == itemData.item.name) !== -1 && \r\n\r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n )\r\n}\r\n\r\nlet DarkStyles = {\r\n wrapper:{\r\n flex: 1,\r\n justifyContent: 'space-between',\r\n backgroundColor: '#3b3c37'\r\n },\r\n modalView:{\r\n marginVertical: 10,\r\n marginHorizontal: '5%',\r\n backgroundColor: \"white\",\r\n borderRadius: 20,\r\n shadowColor: \"#000\",\r\n shadowOffset: {\r\n width: 0,\r\n height: 2\r\n },\r\n shadowOpacity: 0.25,\r\n shadowRadius: 4,\r\n elevation: 50,\r\n tintColor: 'black',\r\n },\r\n addModuleModalHeader:{\r\n flexDirection: 'row-reverse',\r\n paddingVertical: 15,\r\n backgroundColor: '#2b2b28',\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20,\r\n alignItems: 'center'\r\n },\r\n modalHeaderCloseIconWrapper:{\r\n paddingRight: 15,\r\n paddingVertical: 10\r\n },\r\n modalHeaderText:{\r\n fontSize: 25,\r\n fontWeight: '600',\r\n color: 'white',\r\n },\r\n addModuleModalBody:{\r\n padding: 20,\r\n backgroundColor: '#b3b2ad',\r\n },\r\n addModuleModalDescriptions:{\r\n fontSize: 18,\r\n fontWeight: '400',\r\n margin: 5,\r\n // textAlign: 'right',\r\n },\r\n UssidandPassTextInputs:{\r\n backgroundColor: '#F5F6FA',\r\n padding: 10,\r\n marginHorizontal: 20,\r\n marginVertical: 10,\r\n textAlign: 'center',\r\n borderWidth: 1,\r\n borderRadius: 20,\r\n fontSize: 22,\r\n fontWeight: '300'\r\n },\r\n addModuleModalSubmitBtn:{\r\n backgroundColor: '#807f76',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: 15,\r\n borderBottomLeftRadius: 20,\r\n borderBottomRightRadius: 20\r\n },\r\n addModuleModalSubmitBtnText:{\r\n color: 'white',\r\n fontSize: 30,\r\n fontWeight: '600',\r\n textAlign: 'center'\r\n },\r\n addModuleModalDescriptionsUSSIDandPassInputsWrapper:{\r\n margin: 10,\r\n marginBottom: 50\r\n },\r\n loadedACCard:{\r\n justifyContent: 'center',\r\n height: 250,\r\n backgroundColor: '#807f76',\r\n },\r\n s3Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#1c1c1a',\r\n \r\n },\r\n cardTitle:{\r\n fontSize: 30,\r\n textAlign: 'right',\r\n color: 'white'\r\n },\r\n}\r\n\r\n\r\n\r\nlet LightStyles = {\r\n wrapper:{\r\n flex: 1,\r\n justifyContent: 'space-between',\r\n },\r\n modalView:{\r\n marginVertical: 10,\r\n marginHorizontal: '5%',\r\n backgroundColor: \"white\",\r\n borderRadius: 20,\r\n shadowColor: \"#000\",\r\n shadowOffset: {\r\n width: 0,\r\n height: 2\r\n },\r\n shadowOpacity: 0.25,\r\n shadowRadius: 4,\r\n elevation: 50,\r\n tintColor: 'black',\r\n },\r\n addModuleModalHeader:{\r\n flexDirection: 'row-reverse',\r\n paddingVertical: 15,\r\n backgroundColor: '#344a47',\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20,\r\n alignItems: 'center'\r\n },\r\n modalHeaderCloseIconWrapper:{\r\n paddingRight: 15,\r\n paddingVertical: 10\r\n },\r\n modalHeaderText:{\r\n fontSize: 25,\r\n fontWeight: '600',\r\n color: 'white',\r\n },\r\n addModuleModalBody:{\r\n padding: 20,\r\n },\r\n addModuleModalDescriptions:{\r\n fontSize: 18,\r\n fontWeight: '400',\r\n margin: 5,\r\n // textAlign: 'right',\r\n },\r\n UssidandPassTextInputs:{\r\n backgroundColor: '#F5F6FA',\r\n padding: 10,\r\n marginHorizontal: 20,\r\n marginVertical: 10,\r\n textAlign: 'center',\r\n borderWidth: 1,\r\n borderRadius: 20,\r\n fontSize: 22,\r\n fontWeight: '300'\r\n },\r\n addModuleModalSubmitBtn:{\r\n backgroundColor: '#dab2be',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: 15,\r\n borderBottomLeftRadius: 20,\r\n borderBottomRightRadius: 20\r\n },\r\n addModuleModalSubmitBtnText:{\r\n color: 'white',\r\n fontSize: 30,\r\n fontWeight: '600',\r\n textAlign: 'center'\r\n },\r\n addModuleModalDescriptionsUSSIDandPassInputsWrapper:{\r\n margin: 10,\r\n marginBottom: 50\r\n },\r\n dropdown: {\r\n borderColor: 'black',\r\n borderWidth: 0.5,\r\n borderRadius: 8,\r\n },\r\n loadedACCard:{\r\n justifyContent: 'center',\r\n height: 225,\r\n backgroundColor: '#c2ffc2',\r\n },\r\n s3Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#88b388',\r\n \r\n },\r\n cardTitle:{\r\n fontSize: 30,\r\n textAlign: 'right',\r\n color: 'black'\r\n },\r\n}\r\nexport default SenariosScreen","module.exports = __webpack_public_path__ + \"./fonts/Mikhak-Regular.ttf\";","import { createContext } from \"react\";\r\n\r\nexport const CredentialsContext = createContext({storedCredentials: {}, setStoredCredentials: () => {}});","import React from 'react';\r\n\r\nimport { useState, useContext, useEffect } from 'react';\r\nimport { StyleSheet, Text, View, KeyboardAvoidingView, TextInput, ScrollView, TouchableOpacity, Alert, ActivityIndicator, Platform } from 'react-native';\r\n\r\nimport { StatusBar } from 'expo-status-bar';\r\nimport * as Device from 'expo-device';\r\nimport * as Application from 'expo-application';\r\n\r\nimport axios from 'axios';\r\nimport uuid from 'react-native-uuid';\r\nimport CheckBox from '@react-native-community/checkbox';\r\n\r\nimport AsyncStorage from '@react-native-async-storage/async-storage';\r\nimport { CredentialsContext } from '../components/CredentialsContext';\r\nimport StyledText from '../components/StyledText';\r\nimport BoldStyledText from '../components/BoldStyledText';\r\nimport Card from '../components/Card';\r\n\r\nimport { EnglishStrings } from '../strings/English';\r\nimport { PersianStrings } from '../strings/Persian';\r\nimport { ArabicStrings } from '../strings/Arabic';\r\n\r\n\r\nimport envVars from '../env';\r\n\r\nconst SignUp = props => {\r\n\r\n const [phoneNumber, setPhoneNumber] = useState([]);\r\n const [phoneNumberInputIsFocused , setPhoneNumberInputIsFocused] = useState(false);\r\n const [language, setLanguage] = useState('Persian')\r\n\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n \r\n const {storedCredentials, setStoredCredentials} = useContext(CredentialsContext);\r\n \r\n const strings = () => {\r\n if(language == 'English') {\r\n return EnglishStrings\r\n } else if(language == 'Arabic') {\r\n return ArabicStrings\r\n } else return PersianStrings\r\n }\r\n\r\n useEffect(()=> {\r\n // changeLanguage('Arabic')\r\n\r\n props.navigation.setOptions({\r\n headerStyle:{\r\n backgroundColor: 'transparent'\r\n },\r\n headerTransparent: true,\r\n headerTitle: '',\r\n headerLeftContainerStyle:{\r\n paddingLeft: 20\r\n }\r\n });\r\n\r\n }, [])\r\n\r\n const changeLanguage = targetLanguage => {\r\n if(language != targetLanguage) {\r\n const updatedStoredCredentials = {...storedCredentials, ...{language: targetLanguage}}\r\n\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n })\r\n .catch(err =>{\r\n console.log(err);\r\n }) \r\n \r\n setLanguage(targetLanguage)\r\n }\r\n }\r\n\r\n const handleSignup = (enteredPhoneNumber) =>{\r\n\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/signup';\r\n const userDeviceIDHandler = () => {\r\n if (Platform.OS == 'android') {\r\n return Application.androidId\r\n } else if (Platform.OS == 'ios') {\r\n return Application.getIosIdForVendorAsync()\r\n } else if (Platform.OS == 'web') {\r\n const uniqueID = uuid.v4();\r\n const uniqueIDArr = uniqueID.split(\"-\")\r\n var deviceID = '';\r\n uniqueIDArr.forEach(element => {\r\n deviceID = deviceID + element\r\n });\r\n return deviceID \r\n }\r\n };\r\n const credentials = { \r\n userPhoneNumber: enteredPhoneNumber,\r\n userDeviceID: userDeviceIDHandler(),\r\n userDeviceInfo: Device.modelName + '//' + Device.osName\r\n };\r\n\r\n if(enteredPhoneNumber == \"\"){\r\n if(Platform.OS == 'web') {\r\n const res = window.alert(strings().pleaseEnterRequestedInformations)\r\n } else {\r\n Alert.alert('',strings().pleaseEnterRequestedInformations,[\r\n {\r\n text: strings().ok\r\n }\r\n ])\r\n }\r\n } else {\r\n setIsSubmitting(true);\r\n\r\n axios.post(url,credentials).then((res)=> {\r\n setIsSubmitting(false);\r\n const result = res.data;\r\n const {message, status, data} = result;\r\n\r\n if(status == 'SUCCESS') {\r\n props.navigation.navigate('Activation with SMS', {enteredPhoneNumber, language})\r\n } else {\r\n if(Platform.OS == 'web') {\r\n const res = window.alert(strings().serverInternalError)\r\n } else {\r\n Alert.alert('',strings().serverInternalError,[\r\n {\r\n text: strings().ok\r\n }\r\n ])\r\n }\r\n }\r\n }).catch(err=>{\r\n console.log(err)\r\n })\r\n }\r\n \r\n \r\n };\r\n \r\n return (\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {strings().signIn} \r\n \r\n {strings().enterYourPhoneNumber} \r\n \r\n \r\n\r\n \r\n changeLanguage('Persian')}>\r\n FA \r\n \r\n changeLanguage('English')}>\r\n EN \r\n \r\n changeLanguage('Arabic')}>\r\n AR \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {strings().phoneNumber} \r\n setPhoneNumberInputIsFocused(true) }\r\n onBlur={()=> setPhoneNumberInputIsFocused(false) }\r\n onChangeText={value => setPhoneNumber(value)} />\r\n \r\n \r\n \r\n\r\n \r\n {isSubmitting ? {} : handleSignup(phoneNumber)} }>\r\n {isSubmitting \r\n ? \r\n : {strings().sendCode} \r\n }\r\n \r\n \r\n {/* */}\r\n قوانین و شرایط حریم خصوصی را قبول می کنم. \r\n props.navigation.navigate('Terms and policies')}\r\n >\r\n مشاهده \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\n\r\nlet Styles = { \r\n wrapper:{\r\n flex: 1,\r\n justifyContent: 'space-between',\r\n backgroundColor: '#F26B08',\r\n },\r\n contentWrapper:{\r\n\r\n },\r\n headerCard:{\r\n width:'100%',\r\n minHeight: 250,\r\n height:'20%',\r\n padding: 15,\r\n alignSelf:'center',\r\n backgroundColor:'white',\r\n shadowColor: 'black',\r\n shadowOffset: {width:0 , height:2},\r\n shadowRadius: 6,\r\n shadowOpacity: 0.26,\r\n elevation:20,\r\n borderBottomStartRadius: 60 ,\r\n padding: 20,\r\n height: '30%',\r\n backgroundColor: '#1C0947',\r\n flexDirection: 'row-reverse',\r\n justifyContent: 'space-between',\r\n alignItems: 'center'\r\n },\r\n cardHeaderText:{\r\n fontWeight:'400',\r\n fontSize:50,\r\n color: 'white',\r\n // alignSelf: 'flex-end'\r\n },\r\n descriptionOrSignin:{\r\n flexDirection:'row-reverse'\r\n },\r\n topSignInBtn:{\r\n backgroundColor: '#00008B',\r\n borderRadius: 10,\r\n paddingHorizontal: 5\r\n },\r\n cardHeaderTextDescription:{\r\n fontSize:20,\r\n fontWeight:'300',\r\n color:'white',\r\n // paddingVertical: 5,\r\n margin:5\r\n },\r\n textInputWrapper:{\r\n alignItems: 'flex-end',\r\n margin: '5%',\r\n marginTop: '10%',\r\n },\r\n textInput:{\r\n backgroundColor: 'white',\r\n padding: 15,\r\n marginTop: 10,\r\n marginBottom: 20,\r\n borderRadius: 40,\r\n shadowColor: 'black',\r\n shadowOffset: {width:0 , height:2},\r\n shadowRadius: 6,\r\n shadowOpacity: 0.26,\r\n elevation:20,\r\n fontSize: 25,\r\n },\r\n inputLabel:{\r\n fontSize: 20,\r\n fontWeight: '500',\r\n color: 'white'\r\n },\r\n InputArea:{\r\n width: '100%', \r\n },\r\n passwordWarningText:{\r\n color: 'red',\r\n\r\n },\r\n footer:{\r\n paddingVertical:10,\r\n // marginBottom: 10,\r\n },\r\n submitBtn:{\r\n backgroundColor: '#1C0947',\r\n alignItems: 'center',\r\n marginHorizontal:'5%',\r\n borderRadius: 40,\r\n minHeight: 60,\r\n justifyContent: 'center'\r\n },\r\n TermsAndPolicesBTN:{\r\n // backgroundColor: '#1C0947',\r\n // alignItems: 'center',\r\n\r\n marginHorizontal:'8%',\r\n borderRadius: 40,\r\n minHeight: 60,\r\n justifyContent: 'center'\r\n },\r\n submitBtnText:{\r\n fontSize: 35,\r\n fontWeight: '300',\r\n color:'white',\r\n padding:5\r\n },\r\n alreadySinedUpTextArea:{\r\n alignItems:'center',\r\n marginTop: '5%'\r\n },\r\n alreadySinedUpText:{\r\n color: '#6F8FEA'\r\n }\r\n}\r\n\r\n// const Styles = StyleSheet.create({ \r\n// wrapper:{\r\n// flex: 1,\r\n// justifyContent: 'space-between',\r\n// backgroundColor: '#F5F6FA',\r\n// },\r\n// contentWrapper:{\r\n\r\n// },\r\n// headerCard:{\r\n// width:'100%',\r\n// minHeight: 250,\r\n// height:'20%',\r\n// padding: 15,\r\n// alignSelf:'center',\r\n// backgroundColor:'white',\r\n// shadowColor: 'black',\r\n// shadowOffset: {width:0 , height:2},\r\n// shadowRadius: 6,\r\n// shadowOpacity: 0.26,\r\n// elevation:20,\r\n// borderBottomStartRadius: 60 ,\r\n// padding: 20,\r\n// height: '30%',\r\n// backgroundColor: '#5A6BE1'\r\n// },\r\n// cardHeaderText:{\r\n// fontWeight:'500',\r\n// fontSize:50,\r\n// color: 'white',\r\n// alignSelf: 'flex-end',\r\n// paddingTop: '20%',\r\n// },\r\n// descriptionOrSignin:{\r\n// flexDirection:'row-reverse'\r\n// },\r\n// topSignInBtn:{\r\n// backgroundColor: '#00008B',\r\n// borderRadius: 10,\r\n// paddingHorizontal: 5\r\n// },\r\n// cardHeaderTextDescription:{\r\n// fontSize:20,\r\n// fontWeight:'200',\r\n// color:'white',\r\n// paddingVertical: 10,\r\n// margin:5\r\n// },\r\n// textInputWrapper:{\r\n// alignItems: 'flex-end',\r\n// margin: '5%',\r\n// marginTop: '10%',\r\n// },\r\n// textInput:{\r\n// backgroundColor: 'white',\r\n// padding: 15,\r\n// marginTop: 10,\r\n// marginBottom: 20,\r\n// borderRadius: 40,\r\n// shadowColor: 'black',\r\n// shadowOffset: {width:0 , height:2},\r\n// shadowRadius: 6,\r\n// shadowOpacity: 0.26,\r\n// elevation:20,\r\n// fontSize: 25,\r\n// },\r\n// inputLabel:{\r\n// fontSize: 20,\r\n// fontWeight: '500',\r\n// color: '#9797A8'\r\n// },\r\n// InputArea:{\r\n// width: '100%', \r\n// },\r\n// passwordWarningText:{\r\n// color: 'red',\r\n\r\n// },\r\n// footer:{\r\n// paddingVertical:10,\r\n// marginBottom: 10,\r\n// },\r\n// submitBtn:{\r\n// backgroundColor: '#5A6BE1',\r\n// alignItems: 'center',\r\n// marginHorizontal:'5%',\r\n// borderRadius: 40,\r\n// minHeight: 60,\r\n// justifyContent: 'center'\r\n// },\r\n// submitBtnText:{\r\n// fontSize: 35,\r\n// fontWeight: '300',\r\n// color:'white',\r\n// padding:5\r\n// },\r\n// alreadySinedUpTextArea:{\r\n// alignItems:'center',\r\n// marginTop: '5%'\r\n// },\r\n// alreadySinedUpText:{\r\n// color: '#6F8FEA'\r\n// }\r\n// });\r\n\r\nexport default SignUp;","import React, { useContext, useEffect, useState } from 'react';\r\nimport { StyleSheet, Text, View, TouchableOpacity, Alert, FlatList, Modal, TextInput, Dimensions, StatusBar, ActivityIndicator, Platform, AppState, Permission, PermissionsAndroid } from 'react-native';\r\nimport TcpSocket from 'react-native-tcp-socket';\r\nimport {NetworkInfo} from 'react-native-network-info';\r\nimport NetInfo from \"@react-native-community/netinfo\";\r\nimport AndroidOpenSettings from 'react-native-android-open-settings'\r\nimport WifiManager, { forceWifiUsageWithOptions } from \"react-native-wifi-reborn\";\r\n\r\n// import 'react-native-gesture-handler'\r\n\r\nimport { AntDesign, Entypo, Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';\r\n\r\nimport AsyncStorage from '@react-native-async-storage/async-storage';\r\nimport { CredentialsContext } from '../components/CredentialsContext';\r\n\r\nimport axios from 'axios';\r\n\r\nimport Card from '../components/Card';\r\nimport StyledText from '../components/StyledText';\r\nimport BoldStyledText from '../components/BoldStyledText';\r\n\r\nimport { EnglishStrings } from '../strings/English';\r\nimport { PersianStrings } from '../strings/Persian';\r\nimport { ArabicStrings } from '../strings/Arabic';\r\n\r\nimport envVars from '../env';\r\n\r\nconst Home = props => {\r\n\r\n const {storedCredentials, setStoredCredentials} = useContext(CredentialsContext);\r\n\r\n const [appState, setAppState] = useState(AppState.currentState)\r\n\r\n let fetchRoomsIsSubscribed = true\r\n\r\n const [mcIsSent, setMcIsSent] = useState(false)\r\n\r\n const [rooms, setRooms] = useState(()=> {\r\n if(typeof storedCredentials.userRooms == 'string') return JSON.parse(storedCredentials.userRooms)\r\n else return storedCredentials.userRooms\r\n });\r\n const [setRoomsHelper, setSetRoomsHelper] = useState(0)\r\n\r\n const fetchUserRooms = () =>{\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/fetchRooms';\r\n const parsedUserDevicesInfo = JSON.parse(storedCredentials.userDevicesInfo);\r\n\r\n const credentials = { \r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n userDeviceID: parsedUserDevicesInfo[0].id,\r\n userDeviceInfo: parsedUserDevicesInfo[0].name,\r\n };\r\n \r\n \r\n axios.post(url, credentials)\r\n .then((res)=> {\r\n const result = res.data;\r\n const { message, status, data} = result;\r\n\r\n AsyncStorage.getItem('flowerCribCredentials').then((storedData)=> {\r\n storedData = JSON.parse(storedData);\r\n storedData.userRooms = data.userRooms;\r\n var tempStoredData = storedData\r\n if(data.userInfo.customModulesNames){\r\n tempStoredData = {...storedData, ...{customModulesNames: data.userInfo.customModulesNames}, ...{customSwitchesIcons: data.userInfo.customSwitchesIcons}, ...{senarios: data.userInfo.senarios}}\r\n }\r\n \r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(tempStoredData));\r\n setStoredCredentials(tempStoredData)\r\n if(fetchRoomsIsSubscribed) setRooms(storedData.userRooms);\r\n })\r\n .catch((err) => console.log(err))\r\n \r\n })\r\n .catch((err)=> {\r\n // if(Platform.OS == 'web') {\r\n // window.alert(\"\")\r\n // } else {\r\n // Alert.alert(\r\n // strings().error,\r\n // strings().anErrorOccurredPleaseCheckInternetConnection,\r\n // [{\r\n // text: strings().ok\r\n // }]\r\n // );\r\n // }\r\n });\r\n };\r\n\r\n const [modules, setModules] = useState(() => {\r\n //console.log(\"ROOMS:\", rooms.length)\r\n if(rooms){\r\n var tempModules = []\r\n rooms.forEach(room => {\r\n room.modules.forEach(module => {\r\n tempModules.push(module)\r\n })\r\n });\r\n \r\n return tempModules\r\n } else {\r\n return []\r\n }\r\n })\r\n\r\n const [setModulesHelper, setSetModulesHelper] = useState(0)\r\n\r\n const [recieveCode, setRecieveCode] = useState('');\r\n const [isFetchingRecieveCode, setIsFetchingRecieveCode] = useState(false);\r\n const [isUpdating, setIsUpdating] = useState(true);\r\n\r\n const [dropdownModalVisible, setDropdownModalVisible] = useState(false);\r\n const [modalVisible, setModalVisible] = useState(false);\r\n const [manualAddRoomModalVisible, setManualAddRoomModalVisible] = useState(false);\r\n\r\n const [recieveRoomModalVisible, setRecieveRoomModalVisible] = useState(false);\r\n const [sendRoomModalVisible, setSendRoomModalVisible] = useState(false);\r\n const [recieverCode, setRecieverCode] = useState('');\r\n\r\n const [newRoomName, setNewRoomName] = useState('');\r\n\r\n const [isEditingMode, setIsEditingMode] = useState(false);\r\n const [selectedItems, setSelectedItems] = useState([]);\r\n const [selectedItemsHelper, setSelectedItemsHelper] = useState(0);\r\n\r\n const [isSendingRooms, setIsSendingRooms] = useState(false);\r\n const [isDeletingRooms, setIsDeletingRooms] = useState(false);\r\n\r\n const [socketReadyState, setSocketReadyState] = useState(props.socket.readyState)\r\n\r\n var updateInterval;\r\n var setIsUpdatingToFalseHandlerInterval;\r\n var waitingForResInterval;\r\n var updateReqsInterval;\r\n var askForTurningWifiOn = true\r\n\r\n const strings = () => {\r\n if(storedCredentials.language == 'English') {\r\n return EnglishStrings\r\n } else if(storedCredentials.language == 'Arabic') {\r\n return ArabicStrings\r\n } else return PersianStrings\r\n }\r\n\r\n var userMACsArr = () => {\r\n var MACsArr = [];\r\n rooms.forEach(room => {\r\n room.modules.forEach(module => {\r\n var roomModule = {MACs: [], orgDID: \"\"}\r\n if(module) roomModule.MACs.push(module.MAC)\r\n \r\n if(module && module.orgDID) roomModule.orgDID = module.orgDID\r\n else delete roomModule.orgDID\r\n \r\n if(roomModule.MACs.length > 0) MACsArr.push(roomModule)\r\n })\r\n \r\n\r\n });\r\n\r\n // console.log('USERMACSARR: ', MACsArr)\r\n\r\n return MACsArr\r\n\r\n } \r\n\r\n const setIsUpdatingToFalseHandler = (updateReqsLength) => {\r\n if(!setIsUpdatingToFalseHandlerInterval) {\r\n setIsUpdating(true)\r\n const timer = updateReqsLength * 100\r\n setIsUpdatingToFalseHandlerInterval = setInterval(() => { \r\n setIsUpdating(false) \r\n clearInterval(setIsUpdatingToFalseHandlerInterval)\r\n setIsUpdatingToFalseHandlerInterval = undefined\r\n }, timer)\r\n }\r\n }\r\n\r\n const updateModulesHandler = (MACsArr) => {\r\n setIsUpdatingToFalseHandler(MACsArr.length)\r\n var tempToken = \"\"\r\n AsyncStorage.getItem('flowerCribCredentials')\r\n .then((result)=>{\r\n if(result !== null){\r\n const parsedResult = JSON.parse(result)\r\n tempToken = parsedResult.token\r\n }\r\n })\r\n \r\n \r\n const onlineUpdate = (MACsArr) => {\r\n var updateReqs = [];\r\n\r\n MACsArr.forEach(arrItem=> {\r\n if(arrItem.orgDID) {\r\n updateReqs.push(\r\n {\r\n CTY : 'mgs',\r\n MACs: arrItem.MACs,\r\n DID: storedCredentials.userPhoneNumber,\r\n orgDID: arrItem.orgDID,\r\n token: tempToken\r\n }\r\n )\r\n } else {\r\n updateReqs.push(\r\n {\r\n CTY : 'mgs',\r\n MACs: arrItem.MACs,\r\n DID: storedCredentials.userPhoneNumber,\r\n token: tempToken\r\n }\r\n )\r\n }\r\n })\r\n \r\n var intervalIndex = 0\r\n updateReqsInterval = setInterval(() => {\r\n props.socket.sendMessage(JSON.stringify(updateReqs[intervalIndex]))\r\n \r\n if(intervalIndex == updateReqs.length - 1) clearInterval(updateReqsInterval)\r\n intervalIndex++\r\n },200)\r\n\r\n }\r\n\r\n const offlineUpdate = () => {\r\n NetworkInfo.getIPAddress().then(ipAddress => {\r\n // console.log(\"LOCALIP: \", ipAddress)\r\n if(ipAddress) {\r\n const splitedLocalIp = ipAddress.split(\".\")\r\n // console.log(\"Splited IP: \", splitedLocalIp)\r\n \r\n var localConnected = false\r\n // console.log('Starting OFFLINE...')\r\n modules.forEach(module => {\r\n \r\n var updateReq\r\n if(module.orgDID) {\r\n updateReq = {\r\n CTY : 'mgs',\r\n DID: module.orgDID,\r\n DIR: storedCredentials.userPhoneNumber\r\n }\r\n } else {\r\n updateReq = {\r\n CTY : 'mgs',\r\n DID: storedCredentials.userPhoneNumber,\r\n DIR: storedCredentials.userPhoneNumber\r\n }\r\n }\r\n \r\n const moduleSplitedIp = module.localIp.split(\".\")\r\n \r\n if(moduleSplitedIp[0] == splitedLocalIp[0] && moduleSplitedIp[1] == splitedLocalIp[1] && moduleSplitedIp[2] == splitedLocalIp[2]) {\r\n // console.log(\"IP: \", module.localIp)\r\n localConnected = true\r\n const client = TcpSocket.createConnection({port: 9999, host: module.localIp, timeout: 10000}, ()=> {\r\n // console.log(\"SOCKET OPENED!\")\r\n client.write(JSON.stringify(updateReq));\r\n \r\n }) \r\n \r\n client.on('timeout', ()=> {\r\n // console.log(module.localIp, \"Timedout, destroying...\")\r\n client.destroy()\r\n setIsUpdating(false)\r\n })\r\n \r\n client.on('error', (err)=> {\r\n // console.log(\"ERROR: \", err)\r\n client.destroy()\r\n setIsUpdating(false)\r\n })\r\n \r\n client.on('data', function(data) {\r\n var res = \"\";\r\n data.map(charCode=> res = res + String.fromCharCode(charCode))\r\n const parsedData = JSON.parse(res) \r\n \r\n if(parsedData.CTY == \"mgsRes\" && parsedData.STM) {\r\n setIsUpdating(false);\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const newState = {STM: parsedData.STM, RTM: parsedData.RTM, FAN: parsedData.FAN, MOD: parsedData.MOD, PWR: parsedData.PWR}\r\n const updatedModule = {...modules[index], ...{newState}, ...{isWaitingForRes: false}}\r\n clearInterval(updateInterval)\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n \r\n // console.log(updatedModules)\r\n \r\n } else if(parsedData.CTY == \"mgsRes\" && !parsedData.STM) {\r\n setIsUpdating(false)\r\n // console.log(parsedData.STM)\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const updatedModule = {...modules[index], ...{newState: parsedData.STA}, ...{isWaitingForRes: false}}\r\n clearInterval(updateInterval)\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n \r\n // console.log(updatedModules)\r\n }\r\n \r\n })\r\n \r\n }\r\n \r\n })\r\n\r\n }\r\n // if(!localConnected){\r\n // clearInterval(updateInterval)\r\n // if(MACsArr.length) {\r\n // console.log(\"GOING ONLINE...\")\r\n // onlineUpdate(MACsArr);\r\n // }\r\n // }\r\n });\r\n \r\n }\r\n\r\n NetInfo.fetch().then(state => {\r\n // console.log(\"Connection type\", state.type);\r\n // console.log(\"Is connected?\", state.isConnected);\r\n\r\n if(state.isConnected) {\r\n if(MACsArr.length) {\r\n onlineUpdate(MACsArr);\r\n }\r\n } else {\r\n if(Platform.OS != 'web'){\r\n offlineUpdate();\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n const openWifiSettings = () => {\r\n AndroidOpenSettings.wifiSettings()\r\n }\r\n\r\n const generatePassword = ssid => {\r\n const middleChars = ssid.substring(6, 10);\r\n const modifiedString = middleChars.substring(0, 2) + ':' + middleChars.substring(2);\r\n\r\n var MAC = ''\r\n storedCredentials.userRooms.forEach(room => {\r\n room.modules.forEach(module => {\r\n if(module.MAC.slice(-5) === modifiedString){\r\n MAC = module.MAC\r\n }\r\n })\r\n })\r\n\r\n const pass = MAC + '@zitP'\r\n return pass\r\n \r\n }\r\n\r\n const askForTurningWifiOnHandlerFunc = () => {\r\n askForTurningWifiOn = false\r\n }\r\n\r\n const checkForNearbyModule = async (opt) => {\r\n if(opt){\r\n console.log(opt);\r\n }\r\n if(storedCredentials.offlineUsage){\r\n const isWifiEnabled = await WifiManager.isEnabled()\r\n if(isWifiEnabled) {\r\n try{\r\n const granted = await PermissionsAndroid.request(\r\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\r\n {\r\n title: strings().requestForWifiPermission,\r\n message: strings().ZitkitNeedsThisPermissionToConnectToYourSmartSwitch,\r\n buttonNeutral: strings().notNow,\r\n buttonNegative: strings().notAllowed,\r\n buttonPositive: strings().Allowed\r\n },\r\n )\r\n \r\n if(granted == PermissionsAndroid.RESULTS.GRANTED){\r\n WifiManager.reScanAndLoadWifiList().then(wifiList => {\r\n console.log(\"WifiList: \", wifiList)\r\n if(wifiList.length) {\r\n // console.log('founded networks:', wifiList.length)\r\n const updatedStoredCredentials = {...storedCredentials, ...{wifiNetworks: wifiList}}\r\n\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n })\r\n .catch(err =>{\r\n console.log(\"err23: \",err);\r\n }) \r\n \r\n wifiList.forEach(wifiNetwork => {\r\n if(wifiNetwork.SSID.substring(0, 6) === 'Zitco_'){\r\n const psl = generatePassword(wifiNetwork.SSID)\r\n // console.log('lss: ', wifiNetwork.SSID)\r\n // console.log('psl: ', psl)\r\n WifiManager.connectToProtectedSSID(wifiNetwork.SSID, psl, false).then(\r\n () => {\r\n console.log(\"Connected!\")\r\n },\r\n (err) => {\r\n console.log('ask for connecting turned off')\r\n console.log(err)\r\n askForTurningWifiOnHandlerFunc()\r\n }\r\n )\r\n // return\r\n }\r\n })\r\n \r\n }\r\n }).catch(err =>{\r\n console.log('err: ', err)\r\n Alert.alert(\r\n \"\",\r\n strings().pleaseTurnOnLocationService,\r\n [{\r\n text: strings().ok,\r\n onPress: () => { \r\n AndroidOpenSettings.locationSourceSettings()\r\n }\r\n }]\r\n );\r\n })\r\n } else {\r\n Alert.alert(\r\n \"\",\r\n strings().permissionDenied,\r\n [{\r\n text: strings().ok\r\n }]\r\n ); \r\n }\r\n } catch(err) {\r\n console.log(\"2: \", err)\r\n }\r\n } else {\r\n Alert.alert(\r\n '',\r\n strings().toUseOfflineUsageYouShouldEnableWifi,\r\n [\r\n { text: strings().deny, style: 'cancel' , onPress: askForTurningWifiOnHandlerFunc},\r\n { text: strings().ok, onPress: openWifiSettings }\r\n ],\r\n { cancelable: false}\r\n )\r\n }\r\n\r\n } else if(opt === 'button'){\r\n Alert.alert(\r\n '',\r\n strings().toUseOfflineUsageYouShouldEnableWifi,\r\n [\r\n { text: strings().deny, style: 'cancel' , onPress: askForTurningWifiOnHandlerFunc},\r\n { text: strings().ok, onPress: props.navigation.navigate('Settings') }\r\n ],\r\n { cancelable: false}\r\n )\r\n }\r\n \r\n }\r\n \r\n useEffect(() => {\r\n if(storedCredentials.offlineUsage){\r\n // WifiManager.forceWifiUsage(false)\r\n checkForNearbyModule()\r\n }\r\n },[])\r\n\r\n useEffect(() => {\r\n const subscription = AppState.addEventListener('change', state => {\r\n if(appState === 'active' && storedCredentials.offlineUsage && askForTurningWifiOn){\r\n WifiManager.getCurrentWifiSSID().then(ssid => {\r\n // console.log('ssid:', ssid)\r\n if(ssid.substring(0,6) !== 'Zitco_'){\r\n checkForNearbyModule()\r\n }\r\n }).catch(err => { \r\n console.log('err22:',err)\r\n // checkForNearbyModule()\r\n })\r\n }\r\n })\r\n\r\n return () => {\r\n subscription.remove()\r\n }\r\n \r\n },[])\r\n\r\n useEffect(() => { \r\n // console.log(storedCredentials)\r\n fetchUserRooms();\r\n },[])\r\n\r\n useEffect(() => {\r\n setSocketReadyState(props.socket.readyState)\r\n },[props.socket.readyState])\r\n\r\n //Handeling modules response\r\n useEffect(()=> {\r\n if(props.socket.lastMessage) {\r\n const parsedData = props.socket.lastMessage \r\n if(parsedData.CTY) {\r\n if(parsedData.CTY == \"mgsRes\" && parsedData.STM) {\r\n // setIsUpdating(false)\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const newState = {STM: parsedData.STM, RTM: parsedData.RTM, FAN: parsedData.FAN, MOD: parsedData.MOD, PWR: parsedData.PWR}\r\n const updatedModule = {...modules[index], ...{newState}, ...{isWaitingForRes: false}}\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n } else if(parsedData.CTY == \"mgsRes\" && !parsedData.STM) {\r\n // setIsUpdating(false)\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const updatedModule = {...modules[index], ...{newState: parsedData.STA}, ...{isWaitingForRes: false}}\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n }, [props.socket.lastMessage])\r\n \r\n useEffect(()=> {\r\n props.navigation.setOptions({\r\n headerTitle: () => (\r\n \r\n {props.isTokenValidated ? \r\n <>\r\n {isUpdating ? strings().updating : strings().places} \r\n {isUpdating && }\r\n >\r\n :\r\n <>\r\n {strings().connecting} \r\n \r\n >\r\n }\r\n \r\n \r\n ),\r\n headerTitleAlign: 'center',\r\n headerTitleStyle:{\r\n fontSize: isUpdating ? 25 : 35,\r\n // fontFamily: \"Mikhak-Bold\"\r\n },\r\n headerStyle:{\r\n backgroundColor: storedCredentials.theme == \"light\" ? '#f2f2f2' : '#3b3c37' \r\n },\r\n headerRight: () => (\r\n \r\n \r\n {\r\n toggleDropdownModal();\r\n setSelectedItems([]);\r\n // console.log(storedCredentials)\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n ),\r\n headerLeft: () => (\r\n \r\n \r\n {\r\n setModalVisible(!modalVisible)\r\n setIsUpdating(false)\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n ),\r\n headerTintColor: storedCredentials.theme == \"light\" ? 'black' : 'white' \r\n })\r\n },[isUpdating])\r\n\r\n // useEffect(()=> {\r\n // console.log('isSokectValidated? ', props.isTokenValidated)\r\n\r\n // if(props.isTokenValidated) {\r\n // fetchUserRooms(); \r\n // updateModulesHandler(userMACsArr());\r\n // } \r\n\r\n // }, [props.isTokenValidated])\r\n\r\n useEffect(() => {\r\n const isFocused = props.buttomNavNavigation.addListener('focus', () => {\r\n var denewstatedModules = []\r\n var tempRooms = rooms\r\n tempRooms.forEach(room => {\r\n room.modules.forEach(module => {\r\n if(module.newState) {\r\n delete module.newState \r\n denewstatedModules.push(module)\r\n } else denewstatedModules.push(module) \r\n })\r\n })\r\n \r\n setModules(denewstatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n\r\n fetchUserRooms();\r\n updateModulesHandler(userMACsArr())\r\n })\r\n\r\n return isFocused\r\n },[props.buttomNavNavigation])\r\n \r\n // useEffect(()=> {\r\n // const focusedListener = props.navigation.addListener('focus', () => {\r\n // var denewstatedModules = []\r\n // var tempRooms = rooms\r\n // tempRooms.forEach(room => {\r\n // room.modules.forEach(module => {\r\n // if(module.newState) {\r\n // delete module.newState \r\n // denewstatedModules.push(module)\r\n // } else denewstatedModules.push(module) \r\n // })\r\n // })\r\n \r\n // setModules(denewstatedModules)\r\n // setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n\r\n // fetchUserRooms();\r\n // updateModulesHandler(userMACsArr())\r\n // // AsyncStorage.getItem('flowerCribCredentials').then((storedData)=> {\r\n // // storedData = JSON.parse(storedData)\r\n // // if(storedData.token != \"\"){\r\n // // updateModulesHandler(userMACsArr());\r\n // // } \r\n // // })\r\n \r\n \r\n // });\r\n\r\n // return focusedListener\r\n \r\n // },[props.navigation])\r\n\r\n useEffect(() => {\r\n if(selectedItems.length == 0) {\r\n setIsEditingMode(false);\r\n }\r\n },[selectedItemsHelper])\r\n\r\n const openMenu = () => setPaperVisible(true);\r\n const closeMenu = () => setPaperVisible(false);\r\n const screenHeight = Dimensions.get('screen').height;\r\n const windowHeight = Dimensions.get('window').height;\r\n const navbarHeight = screenHeight - windowHeight ;\r\n\r\n const logout = () =>{\r\n\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/signout';\r\n const parsedUserDevicesInfo = JSON.parse(storedCredentials.userDevicesInfo);\r\n \r\n const credentials = { \r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n userDeviceID: parsedUserDevicesInfo[0].id,\r\n userDeviceInfo: parsedUserDevicesInfo[0].name\r\n }\r\n\r\n axios.post(url, credentials)\r\n .then((res)=> {\r\n const result = res.data;\r\n const { message, status, data} = result;\r\n \r\n if(status == 'SUCCESS'){\r\n AsyncStorage.removeItem('flowerCribCredentials')\r\n .then(()=> {\r\n setStoredCredentials(\"\");\r\n })\r\n .catch(err => console.log(err));\r\n };\r\n\r\n })\r\n .catch((err)=> {\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().anErrorOccurredPleaseCheckInternetConnection)\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().anErrorOccurredPleaseCheckInternetConnection,\r\n [{\r\n text: strings().ok\r\n }]\r\n );\r\n }\r\n });\r\n \r\n\r\n };\r\n\r\n const handleAddNewRoom = () => {\r\n if(newRoomName == '') {\r\n if(Platform.OS == 'web') {\r\n window.confirm(strings().pleaseEnterRoomName)\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().pleaseEnterRoomName,\r\n [{\r\n text: strings().ok\r\n }]\r\n );\r\n }\r\n\r\n } else {\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/addroom';\r\n const parsedUserDevicesInfo = JSON.parse(storedCredentials.userDevicesInfo);\r\n // console.log(storedCredentials)\r\n \r\n const credentials = { \r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n userDeviceID: parsedUserDevicesInfo[0].id,\r\n userDeviceInfo: parsedUserDevicesInfo[0].name,\r\n userNewRoom: newRoomName\r\n }\r\n \r\n \r\n axios.post(url, credentials)\r\n .then((res)=>{\r\n const result = res.data;\r\n const { message, status, data} = result;\r\n \r\n AsyncStorage.getItem('flowerCribCredentials').then((storedData)=> {\r\n storedData = JSON.parse(storedData);\r\n \r\n storedData.userRooms = data[0].userRooms;\r\n \r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(storedData));\r\n setRooms(storedData.userRooms);\r\n })\r\n \r\n setManualAddRoomModalVisible(!manualAddRoomModalVisible);\r\n })\r\n .catch((err)=>{\r\n if(Platform.OS == 'web') {\r\n window.confirm(strings().anErrorOccurredPleaseCheckInternetConnection)\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().anErrorOccurredPleaseCheckInternetConnection,\r\n [{\r\n text: strings().ok\r\n }]\r\n );\r\n }\r\n })\r\n\r\n }\r\n }\r\n\r\n const toggleDropdownModal = () => {\r\n setDropdownModalVisible(!dropdownModalVisible)\r\n }\r\n\r\n const toggleSelecteItem = itemData => {\r\n if(!isEditingMode){\r\n setIsEditingMode(true);\r\n }\r\n const selectedItemsArr = selectedItems;\r\n const index = selectedItemsArr.findIndex(item => item == itemData.item.id)\r\n if(index == -1){\r\n selectedItemsArr.push(itemData.item.id);\r\n setSelectedItems(selectedItemsArr);\r\n setSelectedItemsHelper(selectedItemsHelper + 1)\r\n } else {\r\n selectedItemsArr.splice(index, 1);\r\n setSelectedItems(selectedItemsArr);\r\n setSelectedItemsHelper(selectedItemsHelper + 1)\r\n }\r\n\r\n }\r\n\r\n const fetchRecieveCodeHandler = () => {\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/recieveCodeReq';\r\n const parsedUserDevicesInfo = JSON.parse(storedCredentials.userDevicesInfo);\r\n \r\n const credentials = { \r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n userDeviceID: parsedUserDevicesInfo[0].id,\r\n userDeviceInfo: parsedUserDevicesInfo[0].name\r\n }\r\n\r\n \r\n axios.post(url, credentials)\r\n .then((res)=> {\r\n const result = res.data;\r\n const { message, status, data} = result;\r\n\r\n if(status == 'SUCCESS') {\r\n setRecieveCode(data.userRecieveCode);\r\n setIsFetchingRecieveCode(false);\r\n } else {\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().anErrorOccurredPleaseCheckInternetConnection)\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().anErrorOccurredPleaseCheckInternetConnection,\r\n [{\r\n text: strings().ok\r\n }]\r\n );\r\n }\r\n } \r\n })\r\n .catch((err)=> {\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().anErrorOccurredPleaseCheckInternetConnection)\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().anErrorOccurredPleaseCheckInternetConnection,\r\n [{\r\n text: strings().ok\r\n }]\r\n );\r\n }\r\n });\r\n \r\n }\r\n\r\n const removeRecieveCode = () => {\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/removeRecieveCodeReq';\r\n const parsedUserDevicesInfo = JSON.parse(storedCredentials.userDevicesInfo);\r\n \r\n const credentials = { \r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n userDeviceID: parsedUserDevicesInfo[0].id,\r\n userDeviceInfo: parsedUserDevicesInfo[0].name\r\n }\r\n\r\n \r\n axios.post(url, credentials)\r\n .then((res)=> {\r\n const result = res.data;\r\n const { message, status} = result;\r\n\r\n if(status == 'SUCCESS') {\r\n setRecieveRoomModalVisible(false);\r\n } else {\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().anErrorOccurredPleaseCheckInternetConnection)\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().anErrorOccurredPleaseCheckInternetConnection,\r\n [{\r\n text: strings().ok\r\n }]\r\n );\r\n }\r\n } \r\n })\r\n .catch((err)=> {\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().anErrorOccurredPleaseCheckInternetConnection)\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().anErrorOccurredPleaseCheckInternetConnection,\r\n [{\r\n text: strings().ok\r\n }]\r\n );\r\n }\r\n });\r\n }\r\n\r\n const finishSendingRoomsHandler = () => {\r\n setIsSendingRooms(false);\r\n setIsDeletingRooms(false)\r\n setIsEditingMode(false);\r\n setSelectedItems([]);\r\n setSelectedItemsHelper(1);\r\n setSendRoomModalVisible(false)\r\n }\r\n\r\n const sendRoomHandler = () => {\r\n if(recieveCode.length < 6) {\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().pleaseEnterTargetUserCode)\r\n } else {\r\n\r\n Alert.alert(\r\n \"\",\r\n strings().pleaseEnterTargetUserCode,\r\n [{\r\n text: strings().ok\r\n }]\r\n );\r\n }\r\n\r\n } else {\r\n setIsSendingRooms(true)\r\n \r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/shareRooms';\r\n const parsedUserDevicesInfo = JSON.parse(storedCredentials.userDevicesInfo);\r\n \r\n const credentials = { \r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n userDeviceID: parsedUserDevicesInfo[0].id,\r\n userDeviceInfo: parsedUserDevicesInfo[0].name,\r\n targetUserRecieveCode: recieveCode,\r\n roomsToShare: JSON.stringify(selectedItems)\r\n };\r\n \r\n axios.post(url, credentials)\r\n .then((res)=> {\r\n const result = res.data;\r\n const { message, status, data} = result;\r\n \r\n if(status == 'SUCCESS') {\r\n // console.log(result);\r\n\r\n if(Platform.OS == 'web') {\r\n const res = window.alert(strings().selectedRoomsSentSuccessfully)\r\n finishSendingRoomsHandler()\r\n } else {\r\n Alert.alert(\r\n \"\",\r\n strings().selectedRoomsSentSuccessfully,\r\n [{\r\n text: strings().ok,\r\n onPress: ()=> finishSendingRoomsHandler()\r\n }]\r\n );\r\n }\r\n } else if (message == 'User with provided recieve code did not found!') {\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().userWithProvidedCodeDidNotFound)\r\n finishSendingRoomsHandler()\r\n } else {\r\n Alert.alert( \r\n strings().error,\r\n strings().userWithProvidedCodeDidNotFound,\r\n [{\r\n text: strings().ok,\r\n onPress: ()=> finishSendingRoomsHandler()\r\n }]\r\n ); \r\n }\r\n } else {\r\n if(Platform.OS == 'web') {\r\n window.confirm(strings().anErrorOccurredPleaseCheckInternetConnection)\r\n finishSendingRoomsHandler()\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().anErrorOccurredPleaseCheckInternetConnection,\r\n [{\r\n text: strings().ok,\r\n onPress: ()=> finishSendingRoomsHandler()\r\n }]\r\n );\r\n }\r\n } \r\n })\r\n .catch((err)=> {\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().anErrorOccurredPleaseCheckInternetConnection)\r\n finishSendingRoomsHandler()\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().anErrorOccurredPleaseCheckInternetConnection,\r\n [{\r\n text: strings().ok,\r\n onPress: ()=> finishSendingRoomsHandler()\r\n }]\r\n );\r\n }\r\n });\r\n \r\n }\r\n \r\n }\r\n\r\n const deleteRoomsHandler = () => {\r\n setIsDeletingRooms(true)\r\n \r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/deleteRooms';\r\n const parsedUserDevicesInfo = JSON.parse(storedCredentials.userDevicesInfo);\r\n \r\n const credentials = { \r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n roomsToDelete: JSON.stringify(selectedItems)\r\n };\r\n \r\n axios.post(url, credentials)\r\n .then((res)=> {\r\n const result = res.data;\r\n const { message, status, data} = result;\r\n\r\n if(status == 'SUCCESS') {\r\n finishSendingRoomsHandler();\r\n fetchUserRooms();\r\n } else {\r\n if(Platform.OS == 'web') {\r\n window.confirm(strings().anErrorOccurredPleaseCheckInternetConnection)\r\n finishSendingRoomsHandler()\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().anErrorOccurredPleaseCheckInternetConnection,\r\n [{\r\n text: strings().ok,\r\n onPress: ()=> finishSendingRoomsHandler()\r\n }]\r\n );\r\n }\r\n } \r\n })\r\n .catch((err)=> {\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().anErrorOccurredPleaseCheckInternetConnection)\r\n finishSendingRoomsHandler()\r\n } else {\r\n Alert.alert(\r\n strings().error,\r\n strings().anErrorOccurredPleaseCheckInternetConnection,\r\n [{\r\n text: strings().ok,\r\n onPress: ()=> finishSendingRoomsHandler()\r\n }]\r\n );\r\n }\r\n });\r\n\r\n }\r\n\r\n const gotoRoomModulesHandler = (itemData) => {\r\n clearInterval(updateReqsInterval)\r\n clearInterval(waitingForResInterval)\r\n\r\n props.navigation.navigate('Room Modules', {itemData: { item: itemData.item } })\r\n }\r\n\r\n const cardModulesArrHandler = (roomID) => {\r\n const index = rooms.findIndex(room => room.id == roomID)\r\n var roomModulesArr = []\r\n rooms[index].modules.forEach(storedModule => {\r\n const index = modules.findIndex(module => module.MAC == storedModule.MAC)\r\n if(index != -1) roomModulesArr.push(modules[index])\r\n })\r\n\r\n return roomModulesArr\r\n }\r\n\r\n return(\r\n // \r\n \r\n \r\n setDropdownModalVisible(false)}\r\n >\r\n toggleDropdownModal()}\r\n activeOpacity= {1}\r\n >\r\n {/* */}\r\n \r\n \r\n \r\n {storedCredentials.userPhoneNumber} \r\n \r\n\r\n \r\n\r\n {\r\n toggleDropdownModal();\r\n setRecieveRoomModalVisible(true)\r\n fetchRecieveCodeHandler();\r\n setIsFetchingRecieveCode(true);\r\n }}\r\n >\r\n {strings().receivePlace} \r\n \r\n\r\n \r\n\r\n {\r\n props.navigation.navigate('Settings');\r\n toggleDropdownModal();\r\n }}>\r\n {strings().settings} \r\n \r\n \r\n \r\n\r\n {Platform.OS !== 'web' && \r\n <>\r\n {\r\n checkForNearbyModule('button');\r\n toggleDropdownModal();\r\n }}>\r\n {strings().search} \r\n \r\n \r\n \r\n >\r\n }\r\n\r\n \r\n {strings().logOut} \r\n \r\n\r\n \r\n\r\n \r\n {/* v0.8.1.0 (Beta) */}\r\n v1.3.9 \r\n \r\n \r\n \r\n \r\n setModalVisible(!modalVisible)}\r\n >\r\n \r\n \r\n \r\n setModalVisible(!modalVisible)}\r\n >\r\n \r\n \r\n {strings().addingPlace} \r\n \r\n \r\n \r\n \r\n\r\n \r\n {\r\n setModalVisible(!modalVisible);\r\n setManualAddRoomModalVisible(!manualAddRoomModalVisible);\r\n }} \r\n >\r\n {strings().manual} \r\n \r\n {\r\n setModalVisible(!modalVisible);\r\n setRecieveRoomModalVisible(true);\r\n fetchRecieveCodeHandler();\r\n setIsFetchingRecieveCode(true);\r\n }}\r\n >\r\n {strings().receive} \r\n \r\n \r\n \r\n \r\n\r\n \r\n setManualAddRoomModalVisible(!manualAddRoomModalVisible)}\r\n >\r\n \r\n \r\n \r\n setManualAddRoomModalVisible(!manualAddRoomModalVisible)}\r\n >\r\n \r\n \r\n\r\n {strings().addingPlace} \r\n\r\n \r\n\r\n \r\n {strings().roomName} \r\n setNewRoomName(text)} />\r\n \r\n\r\n \r\n \r\n {strings().add} \r\n \r\n setManualAddRoomModalVisible(!manualAddRoomModalVisible) } \r\n >\r\n {strings().cancel} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n removeRecieveCode();\r\n fetchUserRooms();\r\n }}\r\n >\r\n \r\n \r\n {strings().receive} \r\n \r\n \r\n \r\n \r\n {isFetchingRecieveCode ?\r\n \r\n \r\n {strings().fetchingReceiveCode} \r\n \r\n \r\n \r\n :\r\n \r\n \r\n {JSON.stringify(recieveCode)} \r\n {strings().enterThisCodeToGetPlaces} \r\n \r\n \r\n }\r\n {/* {recieveCode &&\r\n \r\n \r\n {JSON.stringify(recieveCode)} \r\n برای دریافت مکان این کد را وارد کنید. \r\n \r\n \r\n } */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setSendRoomModalVisible(false);\r\n }}\r\n >\r\n \r\n \r\n ارسال مکان \r\n \r\n \r\n \r\n \r\n \r\n \r\n setRecieveCode(value)}\r\n />\r\n \r\n {isSendingRooms ? {} : sendRoomHandler()}} \r\n >\r\n {\r\n isSendingRooms\r\n ? \r\n : ارسال \r\n }\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {\r\n isEditingMode &&\r\n \r\n {\r\n setSendRoomModalVisible(true)\r\n }}\r\n >\r\n {strings().share} \r\n \r\n {isDeletingRooms ? {} : deleteRoomsHandler()}}\r\n >\r\n {strings().delete} \r\n \r\n {\r\n setIsEditingMode(!isEditingMode);\r\n setSelectedItems([]);\r\n setSelectedItemsHelper(1);\r\n }}\r\n \r\n >\r\n {strings().deny} \r\n \r\n \r\n }\r\n item.id}\r\n renderItem=\r\n {itemData => \r\n {isEditingMode ? toggleSelecteItem(itemData) : gotoRoomModulesHandler(itemData)}} \r\n onLongPress={() => {isEditingMode ? {} : toggleSelecteItem(itemData)}}\r\n >\r\n \r\n {itemData.item.name} \r\n \r\n {\r\n selectedItems.findIndex(item => item == itemData.item.id) !== -1 \r\n \r\n ?\r\n \r\n \r\n\r\n \r\n :\r\n \r\n item.MAC}\r\n // horizontal={true}\r\n renderItem=\r\n {moduleItem =>\r\n \r\n {moduleItem.item.type == 'P' && \r\n \r\n {moduleItem.item.newState ?\r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {moduleItem.item.type == 'A1' && \r\n \r\n {moduleItem.item.newState ?\r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {moduleItem.item.type == 'A2' && \r\n \r\n {moduleItem.item.newState ?\r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {moduleItem.item.type == 'S1' && \r\n \r\n {moduleItem.item.newState ?\r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {moduleItem.item.type == 'S2' && \r\n \r\n {moduleItem.item.newState ?\r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {moduleItem.item.type == 'S3' && \r\n \r\n {moduleItem.item.newState ?\r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {moduleItem.item.type == 'S4' && \r\n \r\n {moduleItem.item.newState ?\r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n \r\n\r\n }\r\n />\r\n \r\n }\r\n \r\n }\r\n \r\n >\r\n \r\n\r\n \r\n )\r\n};\r\n\r\nlet DarkStyles = {\r\n dropdownModalWrapper: {\r\n backgroundColor: '#b3b2ad', \r\n padding: 10, \r\n width: '50%', \r\n marginRight: 15, \r\n borderRadius: 15\r\n },\r\n wrapper:{\r\n flex: 1,\r\n justifyContent: 'space-between',\r\n backgroundColor: '#3b3c37'\r\n },\r\n flatlistStyle:{ \r\n },\r\n card:{\r\n justifyContent: 'space-between',\r\n height: 100,\r\n backgroundColor: '#807f76',\r\n width: '90%',\r\n alignSelf: 'center',\r\n // flexDirection: 'row-reverse',\r\n paddingBottom: 10\r\n },\r\n cardTitle:{\r\n fontSize: 30,\r\n textAlign: 'right',\r\n color: 'white'\r\n },\r\n addRoomCard:{\r\n backgroundColor: '#ffffff',\r\n height: 100,\r\n alignItems:'center',\r\n justifyContent:'center',\r\n width: '90%',\r\n alignSelf: 'center'\r\n },\r\n modalView:{\r\n marginVertical: 10,\r\n marginHorizontal: '10%',\r\n backgroundColor: \"white\",\r\n borderRadius: 20,\r\n shadowColor: \"#000\",\r\n shadowOffset: {\r\n width: 0,\r\n height: 2\r\n },\r\n shadowOpacity: 0.25,\r\n shadowRadius: 4,\r\n elevation: 5,\r\n },\r\n modalHeader:{\r\n flexDirection: 'row-reverse',\r\n justifyContent: 'space-between',\r\n paddingVertical: 15,\r\n backgroundColor: '#2b2b28',\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20\r\n },\r\n modalHeaderCloseIconWrapper:{\r\n paddingRight: 15,\r\n paddingVertical: 10\r\n },\r\n modalHeaderInfoIconWrapper:{\r\n paddingLeft: 15,\r\n paddingVertical: 10\r\n },\r\n modalHeaderText:{\r\n fontSize: 25,\r\n fontWeight: '600',\r\n color: 'white',\r\n },\r\n modalBodyWrapper:{\r\n flexDirection: 'row-reverse',\r\n paddingVertical:30,\r\n paddingHorizontal: 20,\r\n justifyContent: 'space-between' ,\r\n backgroundColor: '#b3b2ad',\r\n borderBottomLeftRadius: 20,\r\n borderBottomRightRadius: 20\r\n }, \r\n addBtn:{\r\n backgroundColor: '#807f76',\r\n width: '45%',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n paddingVertical: 20,\r\n borderRadius: 20,\r\n elevation: 3,\r\n },\r\n addBtnText:{\r\n color: 'white',\r\n fontSize: 18,\r\n },\r\n manualAddRoomModalView:{\r\n backgroundColor: \"white\",\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20,\r\n shadowColor: \"#000\",\r\n shadowOffset: {\r\n width: 0,\r\n height: 2\r\n },\r\n shadowOpacity: 0.25,\r\n shadowRadius: 4,\r\n elevation: 5,\r\n minHeight: '70%',\r\n marginHorizontal: 10\r\n }, \r\n manualAddRoomModalHeader:{\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n paddingVertical: 15,\r\n backgroundColor: '#2b2b28',\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20,\r\n padding: 7\r\n },\r\n manualAddRoomModalBody:{\r\n flex: 1,\r\n padding: 20,\r\n backgroundColor: '#b3b2ad'\r\n },\r\n manualAddRoomInputNameLabel:{\r\n fontSize: 24,\r\n fontWeight: '300',\r\n color: 'white'\r\n },\r\n manualAddRoomInputName:{\r\n backgroundColor: '#F5F6FA',\r\n borderRadius: 20,\r\n padding:20,\r\n margin: 5,\r\n fontSize: 22,\r\n marginTop: 20\r\n }, \r\n manualAddRoomFooter:{\r\n flexDirection: 'row-reverse',\r\n justifyContent: 'space-around',\r\n backgroundColor: '#b3b2ad'\r\n },\r\n manualAddRoomSubmitBtn:{\r\n backgroundColor: '#807f76',\r\n width: '40%',\r\n margin: 20,\r\n padding: 20,\r\n paddingVertical: 15,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: 20\r\n },\r\n manualAddRoomSubmitBtnText:{\r\n fontSize: 24,\r\n fontWeight: '600',\r\n color: 'white'\r\n },\r\n modalInputWrapper:{\r\n flexDirection: 'row-reverse',\r\n justifyContent: 'flex-start' ,\r\n marginHorizontal: 15,\r\n marginVertical:5,\r\n padding: 10,\r\n alignItems:'center'\r\n },\r\n newRoomNameInputBox:{\r\n backgroundColor: '#F5F6FA',\r\n borderBottomWidth: 1,\r\n borderBottomColor: 'gray',\r\n flex:1,\r\n padding: 10,\r\n },\r\n newRoomNameInputLabel:{\r\n fontSize: 20,\r\n fontWeight: '300'\r\n },\r\n};\r\n\r\n\r\nlet LightStyles = {\r\n dropdownModalWrapper: {\r\n backgroundColor: 'pink', \r\n padding: 10, \r\n width: '50%', \r\n marginRight: 15, \r\n borderRadius: 15\r\n },\r\n wrapper:{\r\n flex: 1,\r\n justifyContent: 'space-between',\r\n },\r\n flatlistStyle:{ \r\n },\r\n card:{\r\n justifyContent: 'space-between',\r\n height: 100,\r\n backgroundColor: 'white',\r\n width: '90%',\r\n alignSelf: 'center',\r\n // flexDirection: 'row-reverse',\r\n paddingBottom: 10\r\n },\r\n cardTitle:{\r\n fontSize: 30,\r\n textAlign: 'right',\r\n color: 'black'\r\n },\r\n addRoomCard:{\r\n backgroundColor: '#ffffff',\r\n height: 100,\r\n alignItems:'center',\r\n justifyContent:'center',\r\n width: '90%',\r\n alignSelf: 'center'\r\n },\r\n modalView:{\r\n marginVertical: 10,\r\n marginHorizontal: '10%',\r\n backgroundColor: \"white\",\r\n borderRadius: 20,\r\n shadowColor: \"#000\",\r\n shadowOffset: {\r\n width: 0,\r\n height: 2\r\n },\r\n shadowOpacity: 0.25,\r\n shadowRadius: 4,\r\n elevation: 5,\r\n },\r\n modalHeader:{\r\n flexDirection: 'row-reverse',\r\n justifyContent: 'space-between',\r\n paddingVertical: 15,\r\n backgroundColor: '#4aa4db',\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20\r\n },\r\n modalHeaderCloseIconWrapper:{\r\n paddingRight: 15,\r\n paddingVertical: 10\r\n },\r\n modalHeaderInfoIconWrapper:{\r\n paddingLeft: 15,\r\n paddingVertical: 10\r\n },\r\n modalHeaderText:{\r\n fontSize: 25,\r\n fontWeight: '600',\r\n color: 'white',\r\n },\r\n modalBodyWrapper:{\r\n flexDirection: 'row-reverse',\r\n paddingVertical:30,\r\n paddingHorizontal: 20,\r\n justifyContent: 'space-between' ,\r\n backgroundColor: '#abdfff',\r\n borderBottomLeftRadius: 20,\r\n borderBottomRightRadius: 20\r\n }, \r\n addBtn:{\r\n backgroundColor: 'white',\r\n width: '45%',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n paddingVertical: 20,\r\n borderRadius: 20,\r\n elevation: 3,\r\n },\r\n addBtnText:{\r\n color: 'black',\r\n fontSize: 18,\r\n },\r\n manualAddRoomModalView:{\r\n backgroundColor: \"white\",\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20,\r\n shadowColor: \"#000\",\r\n shadowOffset: {\r\n width: 0,\r\n height: 2\r\n },\r\n shadowOpacity: 0.25,\r\n shadowRadius: 4,\r\n elevation: 5,\r\n minHeight: '70%',\r\n marginHorizontal: 10\r\n }, \r\n manualAddRoomModalHeader:{\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n paddingVertical: 15,\r\n backgroundColor: '#4aa4db',\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20\r\n },\r\n manualAddRoomModalBody:{\r\n flex: 1,\r\n padding: 20,\r\n backgroundColor: '#abdfff'\r\n },\r\n manualAddRoomInputNameLabel:{\r\n fontSize: 24,\r\n fontWeight: '300',\r\n },\r\n manualAddRoomInputName:{\r\n backgroundColor: '#F5F6FA',\r\n borderRadius: 20,\r\n padding:20,\r\n margin: 5,\r\n fontSize: 22,\r\n marginTop: 20\r\n }, \r\n manualAddRoomFooter:{\r\n flexDirection: 'row-reverse',\r\n justifyContent: 'space-around',\r\n backgroundColor: '#abdfff'\r\n },\r\n manualAddRoomSubmitBtn:{\r\n backgroundColor: '#d5efff',\r\n width: '40%',\r\n margin: 20,\r\n padding: 20,\r\n paddingVertical: 15,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: 20\r\n },\r\n manualAddRoomSubmitBtnText:{\r\n fontSize: 24,\r\n fontWeight: '600',\r\n color: 'black'\r\n },\r\n modalInputWrapper:{\r\n flexDirection: 'row-reverse',\r\n justifyContent: 'flex-start' ,\r\n marginHorizontal: 15,\r\n marginVertical:5,\r\n padding: 10,\r\n alignItems:'center'\r\n },\r\n newRoomNameInputBox:{\r\n backgroundColor: '#F5F6FA',\r\n borderBottomWidth: 1,\r\n borderBottomColor: 'gray',\r\n flex:1,\r\n padding: 10,\r\n },\r\n newRoomNameInputLabel:{\r\n fontSize: 20,\r\n fontWeight: '300'\r\n },\r\n};\r\n\r\n// const Styles = StyleSheet.create({\r\n// wrapper:{\r\n// flex: 1,\r\n// justifyContent: 'space-between',\r\n// },\r\n// flatlistStyle:{ \r\n// },\r\n// card:{\r\n// justifyContent: 'space-between',\r\n// height: 100,\r\n// backgroundColor: 'white',\r\n// width: '90%',\r\n// alignSelf: 'center',\r\n// flexDirection: 'row-reverse',\r\n\r\n// },\r\n// cardTitle:{\r\n// fontWeight: 'bold',\r\n// fontSize: 30,\r\n// textAlign: 'right',\r\n// color: 'black'\r\n// },\r\n// addRoomCard:{\r\n// backgroundColor: '#ffffff',\r\n// height: 100,\r\n// alignItems:'center',\r\n// justifyContent:'center',\r\n// width: '90%',\r\n// alignSelf: 'center'\r\n// },\r\n// modalView:{\r\n// marginVertical: 10,\r\n// marginHorizontal: '10%',\r\n// backgroundColor: \"white\",\r\n// borderRadius: 20,\r\n// shadowColor: \"#000\",\r\n// shadowOffset: {\r\n// width: 0,\r\n// height: 2\r\n// },\r\n// shadowOpacity: 0.25,\r\n// shadowRadius: 4,\r\n// elevation: 5,\r\n// },\r\n// modalHeader:{\r\n// flexDirection: 'row-reverse',\r\n// justifyContent: 'space-between',\r\n// paddingVertical: 15,\r\n// backgroundColor: '#4aa4db',\r\n// borderTopLeftRadius: 20,\r\n// borderTopRightRadius: 20\r\n// },\r\n// modalHeaderCloseIconWrapper:{\r\n// paddingRight: 15,\r\n// paddingVertical: 10\r\n// },\r\n// modalHeaderInfoIconWrapper:{\r\n// paddingLeft: 15,\r\n// paddingVertical: 10\r\n// },\r\n// modalHeaderText:{\r\n// fontSize: 30,\r\n// fontWeight: '800',\r\n// color: 'white',\r\n// },\r\n// modalBodyWrapper:{\r\n// flexDirection: 'row-reverse',\r\n// paddingVertical:30,\r\n// paddingHorizontal: 20,\r\n// justifyContent: 'space-between' ,\r\n// backgroundColor: '#abdfff',\r\n// borderBottomLeftRadius: 20,\r\n// borderBottomRightRadius: 20\r\n// }, \r\n// addBtn:{\r\n// backgroundColor: 'white',\r\n// width: '45%',\r\n// justifyContent: 'center',\r\n// alignItems: 'center',\r\n// paddingVertical: 20,\r\n// borderRadius: 20,\r\n// elevation: 3,\r\n// },\r\n// addBtnText:{\r\n// color: 'black',\r\n// fontSize: 22,\r\n// fontWeight: 'bold'\r\n// },\r\n// manualAddRoomModalView:{\r\n// backgroundColor: \"white\",\r\n// borderTopLeftRadius: 20,\r\n// borderTopRightRadius: 20,\r\n// shadowColor: \"#000\",\r\n// shadowOffset: {\r\n// width: 0,\r\n// height: 2\r\n// },\r\n// shadowOpacity: 0.25,\r\n// shadowRadius: 4,\r\n// elevation: 5,\r\n// minHeight: '70%',\r\n// marginHorizontal: 10\r\n// }, \r\n// manualAddRoomModalHeader:{\r\n// flexDirection: 'row',\r\n// justifyContent: 'space-between',\r\n// paddingVertical: 15,\r\n// backgroundColor: '#4aa4db',\r\n// borderTopLeftRadius: 20,\r\n// borderTopRightRadius: 20\r\n// },\r\n// manualAddRoomModalBody:{\r\n// flex: 1,\r\n// padding: 20,\r\n// backgroundColor: '#abdfff'\r\n// },\r\n// manualAddRoomInputNameLabel:{\r\n// fontSize: 24,\r\n// fontWeight: '300',\r\n// },\r\n// manualAddRoomInputName:{\r\n// backgroundColor: '#F5F6FA',\r\n// borderRadius: 20,\r\n// padding:20,\r\n// margin: 5,\r\n// fontSize: 22,\r\n// marginTop: 20\r\n// }, \r\n// manualAddRoomFooter:{\r\n// flexDirection: 'row-reverse',\r\n// justifyContent: 'space-around',\r\n// backgroundColor: '#abdfff'\r\n// },\r\n// manualAddRoomSubmitBtn:{\r\n// backgroundColor: '#d5efff',\r\n// width: '40%',\r\n// margin: 20,\r\n// padding: 20,\r\n// paddingVertical: 15,\r\n// alignItems: 'center',\r\n// justifyContent: 'center',\r\n// borderRadius: 20\r\n// },\r\n// manualAddRoomSubmitBtnText:{\r\n// fontSize: 24,\r\n// fontWeight: '600',\r\n// color: 'black'\r\n// },\r\n// modalInputWrapper:{\r\n// flexDirection: 'row-reverse',\r\n// justifyContent: 'flex-start' ,\r\n// marginHorizontal: 15,\r\n// marginVertical:5,\r\n// padding: 10,\r\n// alignItems:'center'\r\n// },\r\n// newRoomNameInputBox:{\r\n// backgroundColor: '#F5F6FA',\r\n// borderBottomWidth: 1,\r\n// borderBottomColor: 'gray',\r\n// flex:1,\r\n// padding: 10,\r\n// },\r\n// newRoomNameInputLabel:{\r\n// fontSize: 20,\r\n// fontWeight: '300'\r\n// },\r\n// })\r\nexport default Home;\r\n","import React, { useEffect, useState, useContext } from 'react';\r\nimport { StyleSheet, Text, View, KeyboardAvoidingView, TextInput, ScrollView, TouchableOpacity, Alert, ActivityIndicator, Platform } from 'react-native';\r\n\r\nimport { StatusBar } from 'expo-status-bar';\r\n\r\nimport axios from 'axios';\r\n\r\nimport { CredentialsContext } from '../components/CredentialsContext';\r\nimport StyledText from '../components/StyledText';\r\nimport AsyncStorage from '@react-native-async-storage/async-storage';\r\n\r\nimport { EnglishStrings } from '../strings/English';\r\nimport { PersianStrings } from '../strings/Persian';\r\nimport { ArabicStrings } from '../strings/Arabic';\r\n\r\nimport envVars from '../env';\r\n\r\nconst ActivationWithSMS = props => {\r\n const [isHandlingSMSActivation, setIsHandlingSMSActivation] = useState(false)\r\n const [isHandlingActivation, setIsHandlingActivation] = useState(false)\r\n\r\n const [phoneNumberInputIsFocused, setPhoneNumberInputIsFocused] = useState(false)\r\n const [activationCode, setActivationCode] = useState('')\r\n\r\n const {storedCredentials, setStoredCredentials} = useContext(CredentialsContext);\r\n\r\n const strings = () => {\r\n if(props.route.params.language == 'English') {\r\n return EnglishStrings\r\n } else if(props.route.params.language == 'Arabic') {\r\n return ArabicStrings\r\n } else return PersianStrings\r\n }\r\n\r\n const fetchActivationCode = () => {\r\n setIsHandlingSMSActivation(true)\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/generateActivetionCode';\r\n\r\n const credentials = {\r\n userPhoneNumber : props.route.params.enteredPhoneNumber\r\n };\r\n\r\n axios.post(url, credentials)\r\n .then((res) => {\r\n const result = res.data;\r\n const {message, status, data} = result;\r\n\r\n if(status == 'SUCCESS'){\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/sendActivationCode';\r\n\r\n axios.post(url, credentials)\r\n .then((res) => {\r\n const result = res.data;\r\n const {data} = result;\r\n\r\n if(data.status == 200) setIsHandlingSMSActivation(false) \r\n\r\n })\r\n }\r\n })\r\n\r\n }\r\n \r\n useEffect(() => {\r\n props.navigation.setOptions({\r\n headerStyle:{\r\n backgroundColor: 'transparent'\r\n },\r\n headerTransparent: true,\r\n headerTitle: '',\r\n headerLeftContainerStyle:{\r\n paddingLeft: 20\r\n },\r\n headerTintColor: 'white'\r\n })\r\n \r\n fetchActivationCode()\r\n },[])\r\n\r\n const persistantLogin = (credentials, message, status) =>{\r\n const updatedStoredCredentials = {...storedCredentials, ...credentials}\r\n\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n })\r\n .catch(err =>{\r\n console.log(err);\r\n }) \r\n \r\n \r\n // AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(credentials))\r\n // .then(()=> { \r\n // setStoredCredentials(credentials)\r\n // })\r\n // .catch(err =>{\r\n // console.log(err);\r\n // })\r\n };\r\n\r\n const handleActivation = (code) => {\r\n setIsHandlingActivation(true);\r\n\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/verifyWithSMS';\r\n const credentials = {\r\n userPhoneNumber : props.route.params.enteredPhoneNumber,\r\n userCode : activationCode \r\n };\r\n\r\n axios.post(url, credentials)\r\n .then(res => {\r\n const result = res.data\r\n const {message, status, data} = result;\r\n\r\n if(status == 'SUCCESS') persistantLogin({...data}, message, status);\r\n else {\r\n if(Platform.OS == 'web') {\r\n const res = window.alert(strings().wrongCode)\r\n } else {\r\n Alert.alert(strings().error,strings().wrongCode,[\r\n {\r\n text: strings().ok\r\n }\r\n ])\r\n }\r\n }\r\n })\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {strings().textMessage} \r\n {strings().activationWithTextMessage} \r\n \r\n \r\n {isHandlingSMSActivation ? \r\n \r\n :\r\n \r\n \r\n {strings().activationCode} \r\n setPhoneNumberInputIsFocused(true) }\r\n onBlur={()=> setPhoneNumberInputIsFocused(false) }\r\n onChangeText={value => setActivationCode(value)} />\r\n \r\n {strings().activationCodeSuccessfullySentTo} {props.route.params.enteredPhoneNumber} \r\n\r\n \r\n\r\n }\r\n \r\n \r\n {isHandlingSMSActivation ? \r\n :\r\n \r\n {isHandlingSMSActivation ? {} : handleActivation(activationCode)}} \r\n >\r\n {strings().signIn} \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nlet Styles = { \r\n wrapper:{\r\n flex: 1,\r\n justifyContent: 'space-between',\r\n backgroundColor: '#F26B08',\r\n },\r\n contentWrapper:{\r\n \r\n },\r\n headerCard:{\r\n width:'100%',\r\n minHeight: 250,\r\n height:'20%',\r\n padding: 15,\r\n alignSelf:'center',\r\n backgroundColor:'white',\r\n shadowColor: 'black',\r\n shadowOffset: {width:0 , height:2},\r\n shadowRadius: 6,\r\n shadowOpacity: 0.26,\r\n elevation:20,\r\n borderBottomEndRadius: 60 ,\r\n borderBottomStartRadius: 60,\r\n padding: 20,\r\n height: '30%',\r\n backgroundColor: '#1C0947',\r\n justifyContent: 'flex-end'\r\n },\r\n cardHeaderText:{\r\n fontWeight:'500',\r\n fontSize:35,\r\n color: 'white',\r\n // alignSelf: 'flex-end',\r\n },\r\n cardHeaderTextDescription:{\r\n fontSize:20,\r\n fontWeight:'200',\r\n color:'white',\r\n paddingVertical: 10,\r\n margin:5\r\n },\r\n textInputWrapper:{\r\n margin: '5%',\r\n marginTop: '10%',\r\n },\r\n textInput:{\r\n backgroundColor: 'white',\r\n padding: 15,\r\n marginTop: 10,\r\n marginBottom: 20,\r\n borderRadius: 40,\r\n shadowColor: 'black',\r\n shadowOffset: {width:0 , height:2},\r\n shadowRadius: 6,\r\n shadowOpacity: 0.26,\r\n elevation:20,\r\n fontSize: 25,\r\n },\r\n inputLabel:{\r\n fontSize: 20,\r\n fontWeight: '500',\r\n color: 'white'\r\n },\r\n InputArea:{\r\n width: '100%', \r\n },\r\n footer:{\r\n paddingVertical:10,\r\n marginBottom: 10,\r\n },\r\n submitBtn:{\r\n backgroundColor: '#1C0947',\r\n alignItems: 'center',\r\n marginHorizontal:'5%',\r\n borderRadius: 40,\r\n minHeight: 60,\r\n justifyContent: 'center'\r\n },\r\n submitBtnText:{\r\n fontSize: 35,\r\n fontWeight: '300',\r\n color:'white',\r\n padding:5\r\n },\r\n alreadySinedUpTextArea:{\r\n alignItems:'center',\r\n marginTop: '5%'\r\n },\r\n alreadySinedUpText:{\r\n color: '#6F8FEA'\r\n }\r\n};\r\n// const Styles = StyleSheet.create({\r\n// wrapper:{\r\n// justifyContent:'center',\r\n// alignItems: 'center'\r\n// },\r\n\r\n// });\r\nexport default ActivationWithSMS;","import React from 'react';\r\nimport { StyleSheet, Text, View, TouchableOpacity } from 'react-native';\r\n\r\nconst FetchRoom = props => {\r\n return (\r\n \r\n ماژول ها \r\n \r\n )\r\n};\r\n\r\nconst Styles = StyleSheet.create({\r\n wrapper:{\r\n justifyContent:'center',\r\n alignItems: 'center'\r\n }\r\n});\r\n\r\nexport default FetchRoom;","import React, { useState, useContext, useEffect } from 'react';\r\nimport { StyleSheet, Text, View, TouchableOpacity, ScrollView, Dimensions, Switch, Platform } from 'react-native';\r\n\r\nimport { RadioButton } from 'react-native-paper'\r\nimport { useFonts } from 'expo-font';\r\n\r\nimport AsyncStorage from '@react-native-async-storage/async-storage';\r\nimport { CredentialsContext } from '../components/CredentialsContext';\r\n\r\nimport StyledText from '../components/StyledText';\r\n\r\nimport { EnglishStrings } from '../strings/English';\r\nimport { PersianStrings } from '../strings/Persian';\r\nimport { ArabicStrings } from '../strings/Arabic';\r\nimport { color } from '@rneui/base';\r\n\r\nconst Settings = props => {\r\n\r\n const {storedCredentials, setStoredCredentials} = useContext(CredentialsContext);\r\n\r\n const [theme, setTheme] = useState(storedCredentials.theme == 'light' ? 'light' : 'dark')\r\n const [language, setLanguage] = useState(storedCredentials.language ? storedCredentials.language : 'Persian') \r\n const [offlineUsage, setOfflineUsage] = useState(()=> {\r\n if(storedCredentials.offlineUsage){\r\n if(storedCredentials.offlineUsage == true) return true\r\n else return false\r\n } else {\r\n return false\r\n }\r\n })\r\n let [fontsLoaded] = useFonts({\r\n \"Mikhak-Bold\": require('../assets/Fonts/Mikhak-Bold.ttf')\r\n })\r\n\r\n const strings = () => {\r\n if(language == 'English') {\r\n return EnglishStrings\r\n } else if(language == 'Arabic') {\r\n return ArabicStrings \r\n } else {\r\n return PersianStrings\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n //console.log(storedCredentials)\r\n props.navigation.setOptions({\r\n headerTitle: strings().settings,\r\n headerTitleAlign: 'center',\r\n headerTitleStyle:{\r\n fontSize: 35,\r\n fontFamily: \"Mikhak-Bold\"\r\n },\r\n headerStyle:{\r\n backgroundColor: theme == \"light\" ? '#f2f2f2' : '#3b3c37' \r\n },\r\n headerTintColor: theme == \"light\" ? 'black' : 'white' \r\n })\r\n },[theme, language])\r\n\r\n const changeLanguageHandler = targetLanguage => {\r\n if(language != targetLanguage) {\r\n const updatedStoredCredentials = {...storedCredentials, ...{language: targetLanguage}}\r\n\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n })\r\n .catch(err =>{\r\n console.log(err);\r\n }) \r\n \r\n setLanguage(targetLanguage)\r\n }\r\n }\r\n\r\n const offlineUsageChangeHandler = newValue => {\r\n const updatedStoredCredentials = {...storedCredentials, ...{offlineUsage: newValue}}\r\n\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n })\r\n .catch(err =>{\r\n console.log(err);\r\n }) \r\n \r\n setOfflineUsage(newValue) \r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {strings().theme} \r\n \r\n\r\n \r\n \r\n {\r\n if(theme != 'light'){\r\n const updatedStoredCredentials = {...storedCredentials, ...{theme:\"light\"}}\r\n \r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n })\r\n .catch(err =>{\r\n console.log(err);\r\n })\r\n\r\n setTheme('light')\r\n\r\n } \r\n }}\r\n >\r\n \r\n {strings().light} \r\n \r\n \r\n\r\n {\r\n if(theme != 'dark'){\r\n const updatedStoredCredentials = {...storedCredentials, ...{theme:\"dark\"}}\r\n \r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n })\r\n .catch(err =>{\r\n console.log(err);\r\n })\r\n\r\n setTheme('dark')\r\n\r\n } \r\n }}\r\n >\r\n \r\n \r\n {strings().dark} \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {strings().language} \r\n \r\n\r\n \r\n \r\n \r\n changeLanguageHandler('English')}\r\n />\r\n English \r\n \r\n \r\n changeLanguageHandler('Persian')}\r\n /> \r\n فارسی \r\n \r\n \r\n changeLanguageHandler('Arabic')}\r\n />\r\n العربیه \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n {Platform.OS !== 'web' && \r\n \r\n \r\n \r\n {strings().offlineUsage} \r\n offlineUsageChangeHandler(newValue)}\r\n />\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n )\r\n};\r\n\r\nlet DarkStyles = {\r\n wrapper:{\r\n flex: 1,\r\n minHeight: Dimensions.get('window').height,\r\n backgroundColor: '#3b3c37'\r\n },\r\n settingBoxWrapper:{\r\n marginTop: 5,\r\n marginBottom: 10\r\n },\r\n settingBoxHeader:{\r\n backgroundColor: '#767773', \r\n marginBottom: 10\r\n },\r\n settingBoxHeaderText:{\r\n fontSize: 20,\r\n marginHorizontal: 15,\r\n color: 'white'\r\n },\r\n themeSettingBoxBody:{\r\n\r\n }\r\n\r\n}\r\n\r\nlet LightStyles = {\r\n wrapper:{\r\n flex: 1\r\n },\r\n settingBoxWrapper:{\r\n marginTop: 5,\r\n marginBottom: 10\r\n },\r\n settingBoxHeader:{\r\n backgroundColor: '#4aa4db', \r\n marginBottom: 10\r\n },\r\n settingBoxHeaderText:{\r\n fontSize: 20,\r\n marginHorizontal: 15,\r\n color: 'white'\r\n },\r\n themeSettingBoxBody:{\r\n\r\n }\r\n\r\n}\r\n\r\nexport default Settings;","import React, { useState, useEffect, useContext, useRef } from 'react';\r\nimport { StyleSheet, Text, Animated, View, TouchableOpacity, FlatList, Modal, TextInput, ScrollView, ActivityIndicator, Alert, Switch, Platform, AppState, PermissionsAndroid} from 'react-native';\r\n\r\nimport TcpSocket from 'react-native-tcp-socket';\r\nimport { NetworkInfo } from 'react-native-network-info';\r\nimport NetInfo, { useNetInfo } from \"@react-native-community/netinfo\";\r\nimport WifiManager from \"react-native-wifi-reborn\";\r\nimport { Dropdown } from 'react-native-element-dropdown';\r\nimport AndroidOpenSettings from 'react-native-android-open-settings'\r\nimport useWebSocket from 'react-native-use-websocket';\r\n\r\n// import GestureRecognizer from 'react-native-swipe-gestures';\r\n\r\nimport { AntDesign, MaterialCommunityIcons, FontAwesome5, Ionicons, FontAwesome, Entypo } from '@expo/vector-icons';\r\n// import { useFonts } from 'expo-font'\r\n\r\nimport CheckBox from '@react-native-community/checkbox';\r\nimport AsyncStorage from '@react-native-async-storage/async-storage';\r\nimport { CredentialsContext } from '../components/CredentialsContext';\r\nimport { useNavigationState } from '@react-navigation/native';\r\n\r\nimport axios from 'axios';\r\n\r\nimport Card from '../components/Card';\r\nimport RadioButton from '../components/RadioButton';\r\nimport StyledText from '../components/StyledText';\r\nimport BoldStyledText from '../components/BoldStyledText';\r\n\r\nimport { EnglishStrings } from '../strings/English';\r\nimport { PersianStrings } from '../strings/Persian';\r\nimport { ArabicStrings } from '../strings/Arabic';\r\n\r\nimport envVars from '../env';\r\n\r\nconst RoomModules = props => {\r\n\r\n const {storedCredentials, setStoredCredentials} = useContext(CredentialsContext);\r\n\r\n // const { sendMessage, lastJsonMessage, lastMessage, readyState } = useWebSocket('ws://185.231.115.232:5001', { \r\n // share: true,\r\n // onOpen: () => {\r\n // // sendMessage(JSON.stringify(welcomeMsg))\r\n // console.log('connected from RoomModules')\r\n // },\r\n // retryOnError: true,\r\n // reconnectAttempts: 15,\r\n // shouldReconnect: (CloseEvent) => true,\r\n // })\r\n\r\n // const [rooms, setRooms] = useState(()=> {\r\n // if(typeof storedCredentials.userRooms == 'string') return JSON.parse(storedCredentials.userRooms)\r\n // else return storedCredentials.userRooms\r\n // });\r\n const [rooms, setRooms] = useState(props.rooms)\r\n\r\n const [addModuleModalVisible, setAddModuleModalVisile] = useState(false); \r\n const [addModuleModalSecondStepVisible, setAddModuleModalSecondStepVisible] = useState(false);\r\n const [addModuleModalThirdStepVisible, setAddModuleModalThirdStepVisible] = useState(false);\r\n const [addModuleModalFourthStepVisible, setAddModuleModalFourthStepVisible] = useState(false);\r\n const [addModuleModalFifthStepVisible, setAddModuleModalFifthStepVisible] = useState(false);\r\n \r\n const [dropdownOpen, setDropdownOpen] = useState(false);\r\n const [dropdownValue, setDropdownValue] = useState(null);\r\n const [dropdownItems, setDropdownItems] = useState([\r\n {label: 'کلید', value: 'switch'},\r\n {label: 'پریز', value: 'plug'},\r\n {label: 'تهویه', value: 'A/C'}\r\n ])\r\n \r\n const [switchDropdownOpen, setSwitchDropdownOpen] = useState(false);\r\n const [switchDropdownValue, setSwitchDropdownValue] = useState(null);\r\n const [switchDropdownItems, setSwitchDropdownItems] = useState([\r\n {label: 'یک پل', value: '1'},\r\n {label: 'دو پل', value: '2'},\r\n {label: 'سه پل', value: '3'},\r\n {label: 'چهار پل', value: '4'}\r\n ])\r\n\r\n const [rememberModemInfo, setRememberModemInfo] = useState(false)\r\n const [offlineConfig, setOfflineConfig] = useState(false)\r\n\r\n const [modemPassword, setModemPassword] = useState(\"\");\r\n\r\n const [isAddingModule, setIsAddingModule] = useState(false);\r\n const [isUpdating, setIsUpdating] = useState(false);\r\n \r\n const [seconds, setSeconds] = useState(0);\r\n\r\n const [modules, setModules] = useState(props.roomData.modules)\r\n const [setModulesHelper, setSetModulesHelper] = useState(0)\r\n\r\n const [isEdittingModules, setIsEdittingModules] = useState([])\r\n const [isEdittingModulesHelper, setIsEdittingModulesHelper] = useState(0)\r\n const [isEdittingModuleName, setIsEdittingModuleName] = useState([])\r\n const [isEdittingModuleNameHelper, setIsEdittingModuleNameHelper] = useState(0)\r\n const [moduleName, setModuleName] = useState()\r\n\r\n const [isEdittingSwitchIcon, setIsEdittingSwitchIcon] = useState([]) \r\n const [isEdittingSwitchIconHelper, setIsEdittingSwitchIconHelper] = useState(0)\r\n\r\n const [dropDownData, setDropDownData] = useState([])\r\n const [isDropDownFocused, setIsDropDownFocused] = useState(false)\r\n const [dropDownValue, setDropDownValue] = useState(null)\r\n const [isReloadingWifiList, setIsReloadingWifiList] = useState(false)\r\n\r\n const [addingModulesStep, setAddingModuleStep] = useState(0)\r\n\r\n const [tempSetPoint, setTempSetPoint] = useState('')\r\n const [fanSetPoint, setFanSetPoint] = useState('')\r\n\r\n const fadeAnim = useRef(new Animated.Value(0)).current;\r\n\r\n const radioButtonData = [{value: , mode: 0}, {value: , mode: 1}]\r\n const stateIndex = useNavigationState(state=> state.index)\r\n\r\n const strings = () => {\r\n if(storedCredentials.language == 'English') {\r\n return EnglishStrings\r\n } else if(storedCredentials.language == 'Arabic') {\r\n return ArabicStrings\r\n } else return PersianStrings\r\n }\r\n\r\n const middleWareServerUrl = envVars.MIDDLE_WARE_SERVER_IP + envVars.MIDDLE_WARE_SERVER_PORT\r\n var ws;\r\n var commandInterval;\r\n var setIsUpdatingToFalseHandlerInterval;\r\n var waitingForResInterval;\r\n var updateReqsInterval = false;\r\n \r\n const fadeIn = () => {\r\n Animated.timing(fadeAnim, {\r\n toValue: 1,\r\n duration: 500,\r\n useNativeDriver: true,\r\n }).start();\r\n };\r\n\r\n const fetchUserRoomModules = async () =>{\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/fetchRoomModules';\r\n const parsedUserDevicesInfo = JSON.parse(storedCredentials.userDevicesInfo);\r\n\r\n const credentials = { \r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n userDeviceID: parsedUserDevicesInfo[0].id,\r\n userDeviceInfo: parsedUserDevicesInfo[0].name,\r\n roomID: props.roomData.id\r\n };\r\n \r\n await axios.post(url, credentials)\r\n .then((res)=> {\r\n const result = res.data;\r\n const { message, status, data} = result;\r\n\r\n AsyncStorage.getItem('flowerCribCredentials').then((storedData)=> {\r\n storedData = JSON.parse(storedData);\r\n \r\n const index = storedData.userRooms.findIndex(room => room.id == props.roomData.id);\r\n storedData.userRooms[index].modules = data.userRoom;\r\n \r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(storedData));\r\n return setModules(storedData.userRooms[index].modules);\r\n })\r\n .catch((err) => console.log(err))\r\n \r\n })\r\n .catch((err)=> {\r\n // if(Platform.OS == 'web') {\r\n // window.alert(\"خطایی رخ داده، از اتصالتان به اینترنت مطمئن شوید.\")\r\n // } else {\r\n // Alert.alert(\r\n // \"\",\r\n // \"خطایی رخ داده، از اتصالتان به اینترنت مطمئن شوید.\",\r\n // [{\r\n // text: strings().ok\r\n // }]\r\n // );\r\n // }\r\n });\r\n\r\n };\r\n\r\n const setIsUpdatingToFalseHandler = (updateReqsLength) => {\r\n if(!setIsUpdatingToFalseHandlerInterval) {\r\n setIsUpdating(true)\r\n const timer = updateReqsLength * 400\r\n setIsUpdatingToFalseHandlerInterval = setInterval(() => { \r\n setIsUpdating(false) \r\n clearInterval(setIsUpdatingToFalseHandlerInterval)\r\n setIsUpdatingToFalseHandlerInterval = undefined\r\n }, timer)\r\n }\r\n }\r\n\r\n const findAndDeleteItems = (arrayA, arrayB) => {\r\n let itemsToDelete = new Set(arrayA);\r\n \r\n for (let i = arrayB.length - 1; i >= 0; i--) {\r\n if (itemsToDelete.has(arrayB[i])) {\r\n arrayB.splice(i, 1);\r\n }\r\n }\r\n \r\n return arrayB;\r\n }\r\n\r\n // useEffect(()=> {\r\n // console.log('readyState: ', readyState)\r\n // if(readyState == 1) {\r\n // updateModulesHandler()\r\n // }\r\n // },[readyState])\r\n\r\n const updateModulesHandler = (module) => {\r\n const roomIndex = rooms.findIndex(room => room.id == props.roomData.id)\r\n const currentStateIndex = props.navProps.navigation.getState()\r\n\r\n if(roomIndex == currentStateIndex.index) {\r\n var MACsArr = [];\r\n if(module && module.MAC){\r\n MACsArr.push(module)\r\n } else {\r\n props.roomData.modules.forEach(item => {\r\n MACsArr.push(item)\r\n })\r\n }\r\n \r\n setIsUpdatingToFalseHandler(MACsArr.length)\r\n \r\n var tempToken = props.rootStackProps.token\r\n \r\n const onlineUpdate = (MACsArr) => {\r\n // console.log(\"MACSArr: \",MACsArr)\r\n var updateReqs = [];\r\n \r\n MACsArr.forEach(arrItem=> {\r\n if(arrItem.orgDID) {\r\n updateReqs.push(\r\n {\r\n CTY : 'mgs',\r\n MACs: [arrItem.MAC],\r\n DID: storedCredentials.userPhoneNumber,\r\n orgDID: arrItem.orgDID,\r\n token: tempToken\r\n }\r\n )\r\n } else {\r\n updateReqs.push(\r\n {\r\n CTY : 'mgs',\r\n MACs: [arrItem.MAC],\r\n DID: storedCredentials.userPhoneNumber,\r\n token: tempToken\r\n }\r\n )\r\n }\r\n })\r\n\r\n if(!updateReqsInterval && updateReqs.length > 0){\r\n // console.log('props: ', props.rootStackProps.socket.readyState)\r\n props.rootStackProps.socket.sendMessage(JSON.stringify(updateReqs[0]))\r\n // console.log('sending1: ', JSON.stringify(updateReqs[0]))\r\n var intervalIndex = 1\r\n if(updateReqs.length > 1) {\r\n updateReqsInterval = setInterval(() => {\r\n props.rootStackProps.socket.sendMessage(JSON.stringify(updateReqs[intervalIndex]))\r\n // console.log('sending2: ', JSON.stringify(updateReqs[intervalIndex]))\r\n \r\n intervalIndex++\r\n if(intervalIndex == updateReqs.length) {\r\n clearInterval(updateReqsInterval)\r\n updateReqsInterval = false\r\n // console.log('updateReqsIntervalAfterCleanin:', updateReqsInterval)\r\n } \r\n },120)\r\n }\r\n\r\n }\r\n \r\n\r\n }\r\n \r\n const offlineUpdate = () => {\r\n console.log('offline233')\r\n NetworkInfo.getIPAddress().then(ipAddress => {\r\n if(ipAddress) {\r\n //console.log(\"LOCALIP: \", ipAddress)\r\n const splitedLocalIp = ipAddress.split(\".\")\r\n //console.log(\"Splited IP: \", splitedLocalIp)\r\n \r\n //console.log('Going OFFLINE...')\r\n var offlineIsStarted = false\r\n \r\n modules.forEach(module => {\r\n \r\n var updateReq\r\n if(module.orgDID) {\r\n updateReq = {\r\n CTY : 'mgs',\r\n DID: module.orgDID,\r\n DIR: storedCredentials.userPhoneNumber\r\n }\r\n } else {\r\n updateReq = {\r\n CTY : 'mgs',\r\n DID: storedCredentials.userPhoneNumber,\r\n DIR: storedCredentials.userPhoneNumber\r\n }\r\n }\r\n \r\n const moduleSplitedIp = module.localIp.split(\".\")\r\n \r\n if(moduleSplitedIp[0] == splitedLocalIp[0] && moduleSplitedIp[1] == splitedLocalIp[1] && moduleSplitedIp[2] == splitedLocalIp[2]) {\r\n //console.log(\"IP: \", module.localIp)\r\n offlineIsStarted = true\r\n const client = TcpSocket.createConnection({port: 9999, host: module.localIp, timeout: 5000}, ()=> {\r\n // const client = TcpSocket.createConnection({port: 9999, host: '192.168.1.12', timeout: 5000}, ()=> {\r\n //console.log(\"SOCKET OPENED!\")\r\n client.write(JSON.stringify(updateReq));\r\n \r\n }) \r\n \r\n client.on('timeout', ()=> {\r\n //console.log(module.localIp, \"Timedout, destroying...\")\r\n client.destroy()\r\n setIsUpdating(false)\r\n clearInterval(commandInterval)\r\n })\r\n \r\n client.on('error', (err)=> {\r\n //console.log(\"ERROR: \", err)\r\n client.destroy()\r\n setIsUpdating(false)\r\n \r\n })\r\n \r\n client.on('data', function(data) {\r\n var res = \"\";\r\n data.map(charCode=> res = res + String.fromCharCode(charCode))\r\n const parsedData = JSON.parse(res) \r\n \r\n if(parsedData.CTY == \"mgsRes\" && parsedData.STM) {\r\n setIsUpdating(false);\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const newState = {STM: parsedData.STM, RTM: parsedData.RTM, FAN: parsedData.FAN, MOD: parsedData.MOD, PWR: parsedData.PWR}\r\n const updatedModule = {...modules[index], ...{newState}, ...{isWaitingForRes: false}}\r\n clearInterval(commandInterval)\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n \r\n // console.log(updatedModules)\r\n \r\n } else if(parsedData.CTY == \"mgsRes\" && !parsedData.STM) {\r\n setIsUpdating(false)\r\n //console.log(parsedData.STM)\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const updatedModule = {...modules[index], ...{newState: parsedData.STA}, ...{isWaitingForRes: false}}\r\n clearInterval(commandInterval)\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n \r\n // console.log(updatedModules)\r\n }\r\n \r\n })\r\n \r\n }\r\n })\r\n \r\n if(!offlineIsStarted) setIsUpdating(false)\r\n \r\n }\r\n });\r\n \r\n }\r\n\r\n const localUpdate = (moduleItem) => {\r\n \r\n NetworkInfo.getIPAddress().then(ipAddress => {\r\n if(ipAddress) {\r\n // console.log(\"LOCALIP: \", ipAddress)\r\n const splitedLocalIp = ipAddress.split(\".\")\r\n //console.log(\"Splited IP: \", splitedLocalIp)\r\n \r\n //console.log('Going OFFLINE...')\r\n var offlineIsStarted = false\r\n const modulesArr = moduleItem ? [moduleItem] : modules\r\n modulesArr.forEach(module => {\r\n \r\n var updateReq\r\n if(module.orgDID) {\r\n updateReq = {\r\n CTY : 'mgs',\r\n DID: module.orgDID,\r\n DIR: storedCredentials.userPhoneNumber\r\n \r\n }\r\n } else {\r\n updateReq = {\r\n CTY : 'mgs',\r\n DID: storedCredentials.userPhoneNumber,\r\n DIR: storedCredentials.userPhoneNumber\r\n \r\n }\r\n }\r\n \r\n offlineIsStarted = true\r\n const client = TcpSocket.createConnection({port: 9998, host: '192.168.200.1', timeout: 5000}, ()=> {\r\n // console.log(\"SOCKET OPENED!\")\r\n client.write(JSON.stringify(updateReq));\r\n \r\n }) \r\n \r\n client.on('timeout', ()=> {\r\n // console.log(module.localIp, \"Timedout, destroying...\")\r\n client.destroy()\r\n setIsUpdating(false)\r\n clearInterval(commandInterval)\r\n })\r\n \r\n client.on('error', (err)=> {\r\n //console.log(\"ERROR: \", err)\r\n client.destroy()\r\n setIsUpdating(false)\r\n\r\n })\r\n \r\n client.on('data', function(data) {\r\n var res = \"\";\r\n data.map(charCode=> res = res + String.fromCharCode(charCode))\r\n const parsedData = JSON.parse(res) \r\n \r\n if(parsedData.CTY == \"mgsRes\" && parsedData.STM) {\r\n setIsUpdating(false);\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const newState = {STM: parsedData.STM, RTM: parsedData.RTM, FAN: parsedData.FAN, MOD: parsedData.MOD, PWR: parsedData.PWR}\r\n const updatedModule = {...modules[index], ...{newState}, ...{isWaitingForRes: false}}\r\n clearInterval(commandInterval)\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n \r\n // console.log(updatedModules)\r\n \r\n } else if(parsedData.CTY == \"mgsRes\" && !parsedData.STM) {\r\n setIsUpdating(false)\r\n //console.log(parsedData.STM)\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const updatedModule = {...modules[index], ...{newState: parsedData.STA}, ...{isWaitingForRes: false}}\r\n clearInterval(commandInterval)\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n \r\n // console.log(updatedModules)\r\n }\r\n \r\n })\r\n })\r\n \r\n if(!offlineIsStarted) setIsUpdating(false)\r\n \r\n }\r\n });\r\n \r\n }\r\n \r\n // if(props.rootStackProps.socket.readyState !== 1){\r\n // console.log('readyState111: ',readyState)\r\n if(Platform.OS == 'web') {\r\n onlineUpdate(MACsArr);\r\n } else {\r\n setIsUpdating(true)\r\n offlineUpdate(); \r\n onlineUpdate(MACsArr);\r\n }\r\n const wifiNetworks = storedCredentials.wifiNetworks\r\n if(wifiNetworks){\r\n var localModules = []\r\n wifiNetworks.forEach(wifiNetwork => {\r\n if(wifiNetwork.SSID.substring(0,6) === 'Zitco_'){\r\n MACsArr.forEach(item => {\r\n if(wifiNetwork.SSID.substring(6,8) === item.MAC.substring(12,14) && wifiNetwork.SSID.substring(8,10) === item.MAC.substring(15,18) ){\r\n WifiManager.getCurrentWifiSSID().then(ssid => {\r\n if(ssid.substring(6,8) === item.MAC.substring(12,14) && ssid.substring(8,10) === item.MAC.substring(15,18) ){\r\n localUpdate(item)\r\n localModules.push(item) \r\n } else {\r\n checkForNearbyModule(item.MAC)\r\n }\r\n })\r\n }\r\n })\r\n }\r\n })\r\n \r\n }\r\n }\r\n\r\n \r\n\r\n } \r\n\r\n useEffect(() => {\r\n const focusedListener = props.navProps.navigation.addListener('focus', () => {\r\n if(updateReqsInterval) clearInterval(updateReqsInterval)\r\n const roomIndex = rooms.findIndex(room => room.id == props.roomData.id)\r\n const currentStateIndex = props.navProps.navigation.getState()\r\n \r\n if(roomIndex == currentStateIndex.index) {\r\n\r\n const HeaderTitleComponent = () => {\r\n return(\r\n {isUpdating || !props.rootStackProps.isTokenValidated ? {} : updateModulesHandler() }}\r\n >\r\n {props.rootStackProps.isTokenValidated ?\r\n <>\r\n {isUpdating ? strings().updating : strings().update} \r\n {isUpdating && } \r\n >\r\n \r\n :\r\n {strings().connecting} \r\n }\r\n \r\n )\r\n }\r\n\r\n props.rootStackProps.navigation.setOptions({\r\n headerTitle: () => ,\r\n headerTitleAlign: 'center',\r\n headerTitleStyle:{\r\n fontSize: isUpdating ? 25 : 35,\r\n },\r\n headerStyle:{\r\n backgroundColor: storedCredentials.theme == \"light\" ? '#f2f2f2' : '#3b3c37' \r\n }, \r\n headerRight: () => (\r\n \r\n \r\n {\r\n }}\r\n >\r\n {\r\n setIsUpdating(false)\r\n setAddModuleModalVisile(!addModuleModalVisible)\r\n \r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n headerTintColor: storedCredentials.theme == \"light\" ? 'black' : 'white' \r\n \r\n });\r\n\r\n setModules(props.roomData.modules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1 )\r\n updateModulesHandler();\r\n }\r\n })\r\n\r\n return focusedListener\r\n\r\n }, [props.navProps.navigation])\r\n\r\n //Handeling modules response\r\n useEffect(()=> {\r\n const roomIndex = rooms.findIndex(room => room.id == props.roomData.id)\r\n const currentStateIndex = props.navProps.navigation.getState()\r\n if(roomIndex == currentStateIndex.index) {\r\n if(props.rootStackProps.socket.lastMessage) {\r\n const parsedData = props.rootStackProps.socket.lastMessage \r\n // console.log(\"parsedData: \", parsedData)\r\n if(parsedData.CTY) {\r\n if(parsedData.CTY == \"mgsRes\" && parsedData.STM) {\r\n const moduleRestInterval = setInterval(() => {\r\n clearInterval(moduleRestInterval)\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const newState = {STM: parsedData.STM, RTM: parsedData.RTM, FAN: parsedData.FAN, MOD: parsedData.MOD, PWR: parsedData.PWR}\r\n const updatedModule = {...modules[index], ...{newState}, ...{isWaitingForRes: false}}\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n \r\n }, 500);\r\n } else if(parsedData.CTY == \"mgsRes\" && !parsedData.STM) {\r\n // console.log('parsedData: ', parsedData)\r\n const moduleRestInterval = setInterval(() => {\r\n // console.log('got2')\r\n clearInterval(moduleRestInterval)\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const updatedModule = {...modules[index], ...{newState: parsedData.STA}, ...{isWaitingForRes: false}}\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n \r\n }, 500);\r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n },[props.rootStackProps.socket.lastMessage])\r\n\r\n useEffect(()=> {\r\n\r\n\r\n },[isUpdating]) \r\n\r\n useEffect(() => {\r\n const roomIndex = rooms.findIndex(room => room.id == props.roomData.id)\r\n const currentStateIndex = props.navProps.navigation.getState()\r\n if(updateReqsInterval) clearInterval(updateReqsInterval)\r\n if(roomIndex == currentStateIndex.index) {\r\n\r\n // if(storedCredentials.modemInfo) {\r\n // // setSSID(storedCredentials.modemInfo.ssid)\r\n\r\n // setModemPassword(storedCredentials.modemInfo.password)\r\n // }\r\n\r\n const HeaderTitleComponent = () => {\r\n return(\r\n {isUpdating ? {} : updateModulesHandler() }}\r\n >\r\n {isUpdating ? strings().updating : strings().update} \r\n {isUpdating && } \r\n \r\n )\r\n }\r\n \r\n props.rootStackProps.navigation.setOptions({\r\n headerTitle: () => ,\r\n headerTitleAlign: 'center',\r\n headerTitleStyle:{\r\n fontSize: isUpdating ? 25 : 35,\r\n },\r\n headerStyle:{\r\n backgroundColor: storedCredentials.theme == \"light\" ? '#f2f2f2' : '#3b3c37' \r\n }, \r\n headerRight: () => (\r\n \r\n \r\n {\r\n }}\r\n >\r\n {\r\n setIsUpdating(false)\r\n setAddModuleModalVisile(!addModuleModalVisible)\r\n \r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n headerTintColor: storedCredentials.theme == \"light\" ? 'black' : 'white' \r\n \r\n });\r\n\r\n // fetchUserRoomModules();\r\n setModules(props.roomData.modules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1 )\r\n updateModulesHandler();\r\n }\r\n\r\n },[])\r\n\r\n useEffect(() => {\r\n if(Platform.OS == 'web') {\r\n const appStateListener = AppState.addEventListener('change',currentAppState => {\r\n if(currentAppState == 'active'){\r\n const roomIndex = rooms.findIndex(room => room.id == props.roomData.id)\r\n const currentStateIndex = props.navProps.navigation.getState()\r\n \r\n if(roomIndex == currentStateIndex.index) {\r\n \r\n // fetchUserRoomModules();\r\n setModules(props.roomData.modules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1 )\r\n console.log('heree2')\r\n updateModulesHandler();\r\n \r\n }\r\n \r\n }\r\n });\r\n \r\n return () => {\r\n appStateListener?.remove();\r\n };\r\n\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if(seconds > 5) {\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().anErrorOccurredWhileConnectingToDevicePleaseTryAgain)\r\n } else {\r\n Alert.alert(\r\n \"\",\r\n strings().anErrorOccurredWhileConnectingToDevicePleaseTryAgain,\r\n [{\r\n text: strings().ok\r\n }]\r\n );\r\n }\r\n setSeconds(0)\r\n setIsAddingModule(false)\r\n }\r\n\r\n },[seconds])\r\n\r\n useEffect(()=> {\r\n // console.log('dropDownValue: ', dropDownValue)\r\n if(storedCredentials.modemInfo) {\r\n if(storedCredentials.modemInfo.ssid == dropDownValue) {\r\n setModemPassword(storedCredentials.modemInfo.password)\r\n } else {\r\n setModemPassword('')\r\n }\r\n } \r\n\r\n },[dropDownValue])\r\n\r\n const openWifiSettings = () => {\r\n AndroidOpenSettings.wifiSettings()\r\n }\r\n\r\n const generatePassword = ssid => {\r\n const middleChars = ssid.substring(6, 10);\r\n const modifiedString = middleChars.substring(0, 2) + ':' + middleChars.substring(2);\r\n\r\n var MAC = ''\r\n storedCredentials.userRooms.forEach(room => {\r\n room.modules.forEach(module => {\r\n if(module.MAC.slice(-5) === modifiedString){\r\n MAC = module.MAC\r\n }\r\n })\r\n })\r\n\r\n const pass = MAC + '@zitP'\r\n return pass\r\n \r\n }\r\n\r\n const checkForNearbyModule = async (MAC) => {\r\n const isWifiEnabled = await WifiManager.isEnabled()\r\n if(isWifiEnabled) {\r\n try{\r\n const granted = await PermissionsAndroid.request(\r\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\r\n {\r\n title: strings().requestForWifiPermission,\r\n message: strings().ZitkitNeedsThisPermissionToConnectToYourSmartSwitch,\r\n buttonNeutral: strings().notNow,\r\n buttonNegative: strings().notAllowed,\r\n buttonPositive: strings().Allowed\r\n },\r\n )\r\n \r\n if(granted == PermissionsAndroid.RESULTS.GRANTED){\r\n WifiManager.reScanAndLoadWifiList().then(wifiList => {\r\n // console.log(\"WifiList: \", wifiList)\r\n if(wifiList.length) {\r\n console.log('founded networks:', wifiList.length)\r\n wifiList.forEach(wifiNetwork => {\r\n if(wifiNetwork.SSID === 'ZITCO_config'){\r\n WifiManager.connectToProtectedSSID(wifiNetwork.SSID, '123456789', false).then(\r\n () => {\r\n setAddModuleModalSecondStepVisible(!addModuleModalSecondStepVisible)\r\n setAddModuleModalThirdStepVisible(!addModuleModalThirdStepVisible)\r\n // requestAccessFineLocation()\r\n },\r\n (err) => {\r\n console.log('ConnectingErr: ', err)\r\n }\r\n )\r\n // return\r\n } else if(MAC) {\r\n if(wifiNetwork.SSID.substring(0,6) === 'Zitco_' \r\n && wifiNetwork.SSID.substring(6,8) === MAC.substring(12,14) \r\n && wifiNetwork.SSID.substring(8,10) === MAC.substring(15,18)){\r\n const psl = generatePassword(wifiNetwork.SSID)\r\n\r\n WifiManager.connectToProtectedSSID(wifiNetwork.SSID, psl, false).then(\r\n () => {\r\n console.log(\"Connected!\")\r\n updateModulesHandler()\r\n },\r\n (err) => {\r\n askForTurningWifiOnHandlerFunc()\r\n console.log('ask for connecting turned off')\r\n console.log('err2: ', err)\r\n }\r\n )\r\n }\r\n }\r\n })\r\n\r\n }\r\n }).catch(err =>{\r\n console.log('err: ', err)\r\n Alert.alert(\r\n \"\",\r\n strings().pleaseTurnOnLocationService,\r\n [{\r\n text: strings().ok,\r\n onPress: () => { \r\n AndroidOpenSettings.locationSourceSettings()\r\n }\r\n }]\r\n );\r\n })\r\n } else {\r\n Alert.alert(\r\n \"\",\r\n strings().permissionDenied,\r\n [{\r\n text: strings().ok\r\n }]\r\n ); \r\n }\r\n } catch(err) {\r\n console.log('err1: ',err)\r\n }\r\n } else {\r\n Alert.alert(\r\n '',\r\n strings().toUseOfflineUsageYouShouldEnableWifi,\r\n [\r\n { text: strings().deny, style: 'cancel'},\r\n { text: strings().ok, onPress: openWifiSettings }\r\n ],\r\n { cancelable: false}\r\n )\r\n }\r\n \r\n }\r\n\r\n useEffect(() => {\r\n if(addModuleModalSecondStepVisible){\r\n checkForNearbyModule()\r\n }\r\n },[addModuleModalSecondStepVisible])\r\n\r\n const handleAddNewModule = () => {\r\n if(rememberModemInfo) {\r\n const updatedStoredCredentials = {...storedCredentials, ...{modemInfo:{ssid: dropDownValue, password: modemPassword}}}\r\n \r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n })\r\n .catch(err =>{\r\n console.log(err);\r\n })\r\n }\r\n\r\n if(Platform.OS != 'web') {\r\n const serverIP = envVars.SERVER_URL.replace(\"http://\", \"\");\r\n\r\n const data = [\r\n { SSD : dropDownValue },\r\n { PAS : modemPassword },\r\n { DID : storedCredentials.userPhoneNumber },\r\n // { MTY : setModuleType() },\r\n { RID: props.roomData.id },\r\n { SIP: envVars.SERVER_URL },\r\n { SPO: 8080 }\r\n ];\r\n const data0 = \"{XMAC}\"\r\n const data1 = { SSD : dropDownValue }\r\n // const data1 = { SSD : 'UTEL' }\r\n const data2 = { PAS : modemPassword }\r\n const data3 = { DID : storedCredentials.userPhoneNumber }\r\n // const data4 = { MTY : setModuleType() }\r\n const data4 = { RID: props.roomData.id }\r\n var data5 = { LSS: \"NNNNNNNNNN\" } \r\n var data6 = { PSL: \"NNNNNNNNNN\" }\r\n const data7 = { SIP: serverIP }\r\n const data8 = { SPO: \"8080\" }\r\n\r\n // if(dropDownValue == null || modemPassword == \"\") {\r\n if(modemPassword == \"\") {\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().pleaseEnterRequestedInformations)\r\n } else{\r\n Alert.alert('',strings().pleaseEnterRequestedInformations,[\r\n {\r\n text: strings().ok\r\n }\r\n ])\r\n }\r\n } else {\r\n setIsAddingModule(true);\r\n\r\n var interval = null;\r\n const timeout = 5000;\r\n\r\n //console.log(\"OPENING SOCKET...\")\r\n NetInfo.fetch().then(state => {\r\n // console.log( 'ssid: ', state.details.ssid)\r\n // if(state.details.ssid == 'ZITCO_config') {\r\n const clientSocket = TcpSocket.createConnection({port: 9999,host: '192.168.4.1'}, () =>{\r\n // const clientSocket = TcpSocket.createConnection({port: 9999,host: '172.20.10.5'}, () =>{\r\n clientSocket.on('connect', ()=> setAddingModuleStep(1) )\r\n if(offlineConfig){\r\n clientSocket.write(data0);\r\n setAddingModuleStep(1)\r\n var tries = 0;\r\n interval = setInterval(() => {\r\n tries = tries + 1;\r\n if(tries <= 5) {\r\n clientSocket.write(data0);\r\n } else {\r\n clearInterval(interval);\r\n setSeconds(tries)\r\n }\r\n },timeout)\r\n } else {\r\n clientSocket.write(JSON.stringify(data1))\r\n setAddingModuleStep(1)\r\n var tries = 0;\r\n interval = setInterval(() => {\r\n tries = tries + 1;\r\n if(tries <= 5) {\r\n clientSocket.write(JSON.stringify(data1))\r\n } else {\r\n clearInterval(interval);\r\n setSeconds(tries)\r\n }\r\n },timeout)\r\n }\r\n })\r\n clientSocket.on('data', function(data) {\r\n try{\r\n var res = \"\";\r\n data.map(charCode=> res = res + String.fromCharCode(charCode))\r\n const parsedRes = res \r\n \r\n clearInterval(interval);\r\n setSeconds(0);\r\n // console.log(\"ParsedRes:\", parsedRes)\r\n\r\n if(parsedRes.substring(2,5) == \"MAC\") {\r\n if(parsedRes.length == 27){\r\n if(offlineConfig){\r\n const lss = \"Zitco_\" + parsedRes[20] + parsedRes[21] + parsedRes[23] + parsedRes[24]\r\n const psl = parsedRes.substring(8,25) + \"@zitP\"\r\n data5 = { LSS: lss }\r\n data6 = { PSL : psl }\r\n // console.log('PSL:', data6);\r\n }\r\n // console.log(JSON.stringify(data1))\r\n clientSocket.write(JSON.stringify(data1))\r\n } else {\r\n clientSocket.write(data0)\r\n }\r\n } else if(parsedRes == JSON.stringify(data1)) {\r\n clientSocket.write(JSON.stringify(data2));\r\n setAddingModuleStep(2)\r\n var tries = 0\r\n interval = setInterval(() => {\r\n tries = tries + 1;\r\n if(tries <= 5) {\r\n clientSocket.write(JSON.stringify(data2));\r\n } else {\r\n clearInterval(interval);\r\n setSeconds(tries)\r\n }\r\n },timeout)\r\n } else if(parsedRes == JSON.stringify(data2)) {\r\n clientSocket.write(JSON.stringify(data3));\r\n setAddingModuleStep(3)\r\n var tries = 0\r\n interval = setInterval(() => {\r\n tries = tries + 1;\r\n if(tries <= 5) {\r\n clientSocket.write(JSON.stringify(data3));\r\n } else {\r\n clearInterval(interval);\r\n setSeconds(tries)\r\n }\r\n },timeout)\r\n } else if(parsedRes == JSON.stringify(data3)) {\r\n clientSocket.write(JSON.stringify(data4));\r\n setAddingModuleStep(4)\r\n var tries = 0\r\n interval = setInterval(() => {\r\n tries = tries + 1;\r\n if(tries <= 5) {\r\n clientSocket.write(JSON.stringify(data4));\r\n } else {\r\n clearInterval(interval);\r\n setSeconds(tries)\r\n }\r\n },timeout)\r\n } else if(parsedRes == JSON.stringify(data4)) {\r\n if(offlineConfig){\r\n clientSocket.write(JSON.stringify(data5));\r\n } else {\r\n clientSocket.write(JSON.stringify(data7))\r\n }\r\n setAddingModuleStep(5)\r\n var tries = 0\r\n interval = setInterval(() => {\r\n tries = tries + 1;\r\n if(tries <= 5) {\r\n clientSocket.write(JSON.stringify(data5));\r\n } else {\r\n clearInterval(interval);\r\n setSeconds(tries)\r\n }\r\n },timeout)\r\n } else if(parsedRes == JSON.stringify(data5)) {\r\n\r\n clientSocket.write(JSON.stringify(data6));\r\n setAddingModuleStep(6)\r\n var tries = 0\r\n interval = setInterval(() => {\r\n tries = tries + 1;\r\n if(tries <= 5) {\r\n clientSocket.write(JSON.stringify(data6));\r\n } else {\r\n clearInterval(interval);\r\n setSeconds(tries)\r\n }\r\n },timeout)\r\n } else if(parsedRes == JSON.stringify(data6)) {\r\n clientSocket.write(JSON.stringify(data7));\r\n setAddingModuleStep(7)\r\n var tries = 0\r\n interval = setInterval(() => {\r\n tries = tries + 1;\r\n if(tries <= 5) {\r\n clientSocket.write(JSON.stringify(data7));\r\n } else {\r\n clearInterval(interval);\r\n setSeconds(tries)\r\n }\r\n },timeout)\r\n } else if(parsedRes == JSON.stringify(data7)) {\r\n clientSocket.write(JSON.stringify(data8));\r\n setAddingModuleStep(8)\r\n var tries = 0\r\n interval = setInterval(() => {\r\n tries = tries + 1;\r\n if(tries <= 5) {\r\n clientSocket.write(JSON.stringify(data8));\r\n } else {\r\n clearInterval(interval);\r\n setSeconds(tries)\r\n }\r\n },timeout)\r\n } else if(parsedRes == JSON.stringify(data8)) {\r\n setAddingModuleStep(9)\r\n setIsAddingModule(false)\r\n clientSocket.destroy();\r\n if(Platform.OS == 'web') {\r\n window.alert('دستگاه با موفقیت ثبت شد')\r\n setAddModuleModalFifthStepVisible(!addModuleModalFifthStepVisible),\r\n fetchUserRoomModules();\r\n } else {\r\n Alert.alert('',strings().dataSusseccfullySentToDevicePleaseCloseAppAndConnectToInternet,[\r\n {\r\n text: strings().ok,\r\n onPress: ()=> {\r\n setAddModuleModalFifthStepVisible(!addModuleModalFifthStepVisible),\r\n fetchUserRoomModules();\r\n }\r\n }\r\n ])\r\n }\r\n \r\n } else if(parsedRes == 's0') {\r\n } else {\r\n setIsAddingModule(false);\r\n clientSocket.write(' this message is sent after checking for proper message.')\r\n clientSocket.write(' bare recieved msg:' + data)\r\n \r\n clientSocket.destroy();\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().anErrorOccurredPleaseEnsureThatYouAreConnectedToDeviceNetwork)\r\n setAddModuleModalFifthStepVisible(!addModuleModalFifthStepVisible)\r\n } else {\r\n // const alertMsg = \"alert msg:\" + parsedRes + \"////\" + buf + \"////\" + data\r\n \r\n Alert.alert('',strings().anErrorOccurredPleaseEnsureThatYouAreConnectedToDeviceNetwork,[\r\n {\r\n text: strings().ok,\r\n onPress: ()=> setAddModuleModalFifthStepVisible(!addModuleModalFifthStepVisible)\r\n }\r\n ])\r\n }\r\n }\r\n \r\n } catch(err) {\r\n clientSocket.write('we fall in catch block!')\r\n clientSocket.write(\"err is:\" + err)\r\n \r\n clientSocket.destroy();\r\n }\r\n if(seconds > 5) {\r\n clientSocket.destroy();\r\n }\r\n clientSocket.on('error', function(error) {\r\n //console.log(error);\r\n if(Platform.OS == 'web') {\r\n window.alert(strings().anErrorOccurredPleaseEnsureThatYouAreConnectedToDeviceNetwork)\r\n setIsAddingModule(false)\r\n } else {\r\n Alert.alert('',strings().errorInSocketConnection,[\r\n {\r\n text: strings().ok,\r\n onPress: ()=> setIsAddingModule(false)\r\n }\r\n ])\r\n }\r\n \r\n });\r\n\r\n });\r\n\r\n\r\n // } else {\r\n // if(Platform.OS == 'web') {\r\n // const res = window.alert(strings().anErrorOccurredPleaseEnsureThatYouAreConnectedToDeviceNetwork)\r\n // } else {\r\n // Alert.alert('',strings().anErrorOccurredPleaseEnsureThatYouAreConnectedToDeviceNetwork,[\r\n // {\r\n // text: strings().ok,\r\n // onPress: ()=> setIsAddingModule(false)\r\n // }\r\n // ])\r\n // }\r\n // }\r\n })\r\n \r\n }\r\n \r\n } else {\r\n window.alert(strings().deviceConfigurationIsNotPossibleWithWebApplication)\r\n }\r\n \r\n }\r\n\r\n const requestAccessFineLocation = async () => {\r\n setIsReloadingWifiList(true)\r\n\r\n try{\r\n const granted = await PermissionsAndroid.request(\r\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\r\n {\r\n title: strings().requestForWifiPermission,\r\n message: strings().ZitkitNeedsThisPermissionToConnectToYourSmartSwitch,\r\n buttonNeutral: strings().notNow,\r\n buttonNegative: strings().notAllowed,\r\n buttonPositive: strings().Allowed\r\n },\r\n )\r\n\r\n if(granted == PermissionsAndroid.RESULTS.GRANTED){\r\n WifiManager.loadWifiList().then(wifiList => {\r\n // console.log(\"WifiList: \", wifiList)\r\n if(wifiList.length) {\r\n var tempDropDownData = []\r\n wifiList.forEach(wifiNetwork => tempDropDownData.push({label: wifiNetwork.SSID, value: wifiNetwork.SSID}))\r\n setDropDownData(tempDropDownData)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n\r\n setIsReloadingWifiList(false)\r\n }\r\n }).catch(err =>{\r\n Alert.alert(\r\n \"\",\r\n strings().pleaseTurnOnLocationService,\r\n [{\r\n text: strings().ok,\r\n onPress: () => { \r\n setAddModuleModalThirdStepVisible(false) \r\n setIsReloadingWifiList(false)\r\n }\r\n }]\r\n );\r\n })\r\n } else {\r\n Alert.alert(\r\n \"\",\r\n strings().permissionDenied,\r\n [{\r\n text: strings().ok,\r\n onPress: () => { \r\n setAddModuleModalThirdStepVisible(false) \r\n setIsReloadingWifiList(false)\r\n }\r\n }]\r\n ); }\r\n } catch(err) {\r\n console.log(err)\r\n }\r\n\r\n }\r\n\r\n const moduleTypeHandler = (module) => {\r\n if(storedCredentials.customModulesNames) {\r\n const index = storedCredentials.customModulesNames.findIndex(moduleItem => moduleItem.MAC == module.item.MAC )\r\n if(index != -1) {\r\n return storedCredentials.customModulesNames[index].Name\r\n } else {\r\n if( module.item.type == \"P\" ){\r\n return strings().plug\r\n } else if ( module.item.type == \"A1\") {\r\n return strings().AC\r\n } else if ( module.item.type == \"S1\") {\r\n return strings().switch\r\n } else if ( module.item.type == \"S2\") {\r\n return strings().switch\r\n } else if ( module.item.type == \"S3\") {\r\n return strings().switch\r\n } else if ( module.item.type == \"S4\") {\r\n return strings().switch\r\n } else if ( module.item.type == \"A2\") {\r\n return strings().AC\r\n }\r\n }\r\n } else {\r\n if( module.item.type == \"P\" ){\r\n return strings().plug\r\n } else if ( module.item.type == \"A1\") {\r\n return strings().AC\r\n } else if ( module.item.type == \"S1\") {\r\n return strings().switch\r\n } else if ( module.item.type == \"S2\") {\r\n return strings().switch\r\n } else if ( module.item.type == \"S3\") {\r\n return strings().switch\r\n } else if ( module.item.type == \"S4\") {\r\n return strings().switch\r\n } else if ( module.item.type == \"A2\") {\r\n return strings().AC\r\n }\r\n\r\n }\r\n }\r\n \r\n const handleSwitchIcon = (module, switchNum) => {\r\n if(storedCredentials.customSwitchesIcons){\r\n const moduleIndex = storedCredentials.customSwitchesIcons.findIndex(moduleItem => moduleItem.MAC == module.MAC)\r\n if(moduleIndex == -1){\r\n return 'lightbulb-on'\r\n } else {\r\n const switchIndex = storedCredentials.customSwitchesIcons[moduleIndex].Switches.findIndex(switchItem => switchItem.num == switchNum)\r\n if(switchIndex == -1) {\r\n return 'lightbulb-on'\r\n } else {\r\n return storedCredentials.customSwitchesIcons[moduleIndex].Switches[switchIndex].icon\r\n }\r\n }\r\n } else {\r\n return 'lightbulb-on'\r\n }\r\n }\r\n\r\n const moduleCommandHandler = (module, switchNum) => {\r\n const index = modules.findIndex(moduleItem => moduleItem.MAC == module.MAC)\r\n const updatedModule = {...modules[index],...{isWaitingForRes: true}}\r\n var updatedModules = modules\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n\r\n var tempToken = '123'\r\n var t2 = -5\r\n commandInterval = setInterval(() => {\r\n t2++\r\n //console.log('t2: ' + t2)\r\n if(t2 >= 0) {\r\n if(modules[index].isWaitingForRes){\r\n updateModulesHandler(module)\r\n clearInterval(commandInterval)\r\n } else {\r\n clearInterval(commandInterval)\r\n }\r\n }\r\n }, 1000);\r\n\r\n //console.log(\"modulesFromCommandHandler: \" + JSON.stringify(modules))\r\n\r\n const onlineModuleCommandHandler = (module, switchNum) => {\r\n const typeOfModule = typeof module.newState\r\n\r\n const toggleSwitchState = (num) => {\r\n if(switchState[num] == 0) {\r\n return 1\r\n } else if(switchState[num] == 1) {\r\n return 0\r\n }\r\n \r\n }\r\n\r\n var commmandObj;\r\n if(typeOfModule == 'string') {\r\n var switchState = [...module.newState]\r\n switchState[switchNum] = toggleSwitchState(switchNum)\r\n const command = switchState.toString().replace(/,/g,'');\r\n \r\n if(module.orgDID){\r\n commmandObj = {\r\n CTY: 'mr',\r\n STA: command,\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n token: tempToken\r\n }\r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n STA: command,\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n token: tempToken\r\n }\r\n }\r\n \r\n } else {\r\n if(switchNum.MOD) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n moduleState.FAN = moduleState.FAN[0]\r\n\r\n moduleState.MOD = switchNum.MOD\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState,\r\n token: tempToken\r\n } \r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState,\r\n token: tempToken\r\n }\r\n\r\n }\r\n } else if (switchNum.PWR) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n moduleState.FAN = moduleState.FAN[0]\r\n\r\n moduleState.PWR = switchNum.PWR\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState,\r\n token: tempToken\r\n } \r\n // console.log(commmandObj)\r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState,\r\n token: tempToken\r\n }\r\n\r\n }\r\n } else if (switchNum.STM) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n moduleState.FAN = moduleState.FAN[0]\r\n\r\n moduleState.STM = switchNum.STM\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState,\r\n token: tempToken\r\n } \r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState,\r\n token: tempToken\r\n }\r\n\r\n }\r\n } else if (switchNum.FAN) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n\r\n if(moduleState.FAN[0] == 0) {\r\n if(module.type == 'A1'){\r\n moduleState.FAN = '2'\r\n } else if (module.type == 'A2') {\r\n moduleState.FAN = '5'\r\n }\r\n } else {\r\n moduleState.FAN = switchNum.FAN\r\n }\r\n\r\n if(module.type == 'A2') {\r\n if(switchNum.FAN == \"8\" || switchNum.FAN == \"0\"){\r\n moduleState.FAN = '0'\r\n } \r\n } else if(module.type == 'A1') {\r\n if(switchNum.FAN == \"4\" || switchNum.FAN == \"0\"){\r\n moduleState.FAN = '0'\r\n }\r\n }\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState,\r\n token: tempToken\r\n } \r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState,\r\n token: tempToken\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n props.rootStackProps.socket.sendMessage(JSON.stringify(commmandObj))\r\n // console.log('from onlineModuleCommandHandler: ', JSON.stringify(commmandObj))\r\n // updateModulesHandler(module)\r\n }\r\n\r\n const offlineModuleCommandHandler = (module, switchNum) => {\r\n const typeOfModule = typeof module.newState\r\n\r\n const toggleSwitchState = (num) => {\r\n if(switchState[num] == 0) {\r\n return 1\r\n } else if(switchState[num] == 1) {\r\n return 0\r\n }\r\n \r\n }\r\n \r\n let commmandObj\r\n if(typeOfModule == 'string') {\r\n var switchState = [...module.newState]\r\n switchState[switchNum] = toggleSwitchState(switchNum)\r\n const command = switchState.toString().replace(/,/g,'')\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n STA: command,\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber\r\n }\r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n STA: command,\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber\r\n }\r\n }\r\n \r\n } else {\r\n if(switchNum.MOD) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n moduleState.FAN = moduleState.FAN[0]\r\n\r\n moduleState.MOD = switchNum.MOD\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n } \r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n }\r\n\r\n }\r\n } else if (switchNum.PWR) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n moduleState.FAN = moduleState.FAN[0]\r\n\r\n moduleState.PWR = switchNum.PWR\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n } \r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n }\r\n\r\n }\r\n } else if (switchNum.STM) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n moduleState.FAN = moduleState.FAN[0]\r\n \r\n moduleState.STM = switchNum.STM\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n } \r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n }\r\n\r\n }\r\n } else if (switchNum.FAN) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n\r\n if(moduleState.FAN[0] == 0) {\r\n if(module.type == 'A1'){\r\n moduleState.FAN = '2'\r\n } else if (module.type == 'A2') {\r\n moduleState.FAN = '5'\r\n }\r\n } else {\r\n moduleState.FAN = switchNum.FAN\r\n }\r\n\r\n if(module.type == 'A2') {\r\n if(switchNum.FAN == \"8\" || switchNum.FAN == \"0\"){\r\n moduleState.FAN = '0'\r\n } \r\n } else if(module.type == 'A1') {\r\n if(switchNum.FAN == \"4\" || switchNum.FAN == \"0\"){\r\n moduleState.FAN = '0'\r\n }\r\n }\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n } \r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n NetworkInfo.getIPAddress().then(ipAddress => {\r\n if(ipAddress){\r\n const splitedLocalIp = ipAddress.split(\".\")\r\n //console.log(\"Splited IP: \", splitedLocalIp)\r\n const moduleSplitedIp = module.localIp.split(\".\")\r\n \r\n if( moduleSplitedIp[0] == splitedLocalIp[0] && moduleSplitedIp[1] == splitedLocalIp[1] && moduleSplitedIp[2] == splitedLocalIp[2] ) {\r\n const client = TcpSocket.createConnection({port:9999,host: module.localIp, timeout: 2000}, () =>{\r\n client.write(JSON.stringify(commmandObj));\r\n // updateModulesHandler(module)\r\n }) \r\n \r\n client.on('timeout', ()=> {\r\n client.destroy()\r\n })\r\n \r\n client.on('data', function(data) {\r\n var res = \"\";\r\n data.map(charCode=> res = res + String.fromCharCode(charCode))\r\n const parsedData = JSON.parse(res)\r\n \r\n client.destroy();\r\n \r\n if(parsedData.CTY == \"mgsRes\" && parsedData.STM) {\r\n const moduleRestInterval = setInterval(() => {\r\n clearInterval(moduleRestInterval)\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const newState = {STM: parsedData.STM, RTM: parsedData.RTM, FAN: parsedData.FAN, MOD: parsedData.MOD, PWR: parsedData.PWR}\r\n const updatedModule = {...modules[index], ...{newState}, ...{isWaitingForRes: false}}\r\n clearInterval(commandInterval)\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n \r\n }, 500);\r\n \r\n //console.log(updatedModules)\r\n return true\r\n \r\n } else if(parsedData.CTY == \"mgsRes\" && !parsedData.STM) {\r\n //console.log(parsedData.STM)\r\n const moduleRestInterval = setInterval(() => {\r\n clearInterval(moduleRestInterval)\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const updatedModule = {...modules[index], ...{newState: parsedData.STA}, ...{isWaitingForRes: false}}\r\n clearInterval(commandInterval)\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n \r\n }, 500);\r\n \r\n //console.log(updatedModules)\r\n \r\n return true\r\n }\r\n \r\n }) \r\n \r\n }\r\n\r\n }\r\n\r\n });\r\n \r\n\r\n \r\n }\r\n\r\n const localModuleCommandHandler = (module, switchNum) => {\r\n const typeOfModule = typeof module.newState\r\n // console.log('module.localIp: ', module.localIp);\r\n const toggleSwitchState = (num) => {\r\n if(switchState[num] == 0) {\r\n return 1\r\n } else if(switchState[num] == 1) {\r\n return 0\r\n }\r\n \r\n }\r\n \r\n let commmandObj\r\n if(typeOfModule == 'string') {\r\n var switchState = [...module.newState]\r\n switchState[switchNum] = toggleSwitchState(switchNum)\r\n const command = switchState.toString().replace(/,/g,'')\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n STA: command,\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber\r\n }\r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n STA: command,\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber\r\n }\r\n }\r\n \r\n } else {\r\n if(switchNum.MOD) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n moduleState.FAN = moduleState.FAN[0]\r\n\r\n moduleState.MOD = switchNum.MOD\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n } \r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n }\r\n\r\n }\r\n } else if (switchNum.PWR) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n moduleState.FAN = moduleState.FAN[0]\r\n\r\n moduleState.PWR = switchNum.PWR\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n } \r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n }\r\n\r\n }\r\n } else if (switchNum.STM) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n moduleState.FAN = moduleState.FAN[0]\r\n \r\n moduleState.STM = switchNum.STM\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n } \r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n }\r\n\r\n }\r\n } else if (switchNum.FAN) {\r\n var moduleState = module.newState\r\n delete moduleState.RTM\r\n\r\n if(moduleState.FAN[0] == 0) {\r\n if(module.type == 'A1'){\r\n moduleState.FAN = '2'\r\n } else if (module.type == 'A2') {\r\n moduleState.FAN = '5'\r\n }\r\n } else {\r\n moduleState.FAN = switchNum.FAN\r\n }\r\n\r\n if(module.type == 'A2') {\r\n if(switchNum.FAN == \"8\" || switchNum.FAN == \"0\"){\r\n moduleState.FAN = '0'\r\n } \r\n } else if(module.type == 'A1') {\r\n if(switchNum.FAN == \"4\" || switchNum.FAN == \"0\"){\r\n moduleState.FAN = '0'\r\n }\r\n }\r\n \r\n if(module.orgDID) {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: module.orgDID,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n } \r\n } else {\r\n commmandObj = {\r\n CTY: 'mr',\r\n DID: storedCredentials.userPhoneNumber,\r\n MAC: module.MAC,\r\n DIR: storedCredentials.userPhoneNumber,\r\n ...moduleState\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n NetworkInfo.getIPAddress().then(ipAddress => {\r\n if(ipAddress){\r\n // const splitedLocalIp = ipAddress.split(\".\")\r\n //console.log(\"Splited IP: \", splitedLocalIp)\r\n // const moduleSplitedIp = module.localIp.split(\".\")\r\n const client = TcpSocket.createConnection({port:9998,host: '192.168.200.1', timeout: 2000}, () =>{\r\n // console.log(\"Sock Opened Command\");\r\n client.write(JSON.stringify(commmandObj));\r\n // updateModulesHandler(module)\r\n }) \r\n\r\n client.on('timeout', ()=> {\r\n client.destroy()\r\n })\r\n\r\n client.on('data', function(data) {\r\n var res = \"\";\r\n data.map(charCode=> res = res + String.fromCharCode(charCode))\r\n const parsedData = JSON.parse(res)\r\n \r\n client.destroy();\r\n \r\n if(parsedData.CTY == \"mgsRes\" && parsedData.STM) {\r\n console.log('got');\r\n const moduleRestInterval = setInterval(() => {\r\n clearInterval(moduleRestInterval)\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const newState = {STM: parsedData.STM, RTM: parsedData.RTM, FAN: parsedData.FAN, MOD: parsedData.MOD, PWR: parsedData.PWR}\r\n const updatedModule = {...modules[index], ...{newState}, ...{isWaitingForRes: false}}\r\n clearInterval(commandInterval)\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n // console.log('got2');\r\n \r\n }, 500);\r\n \r\n //console.log(updatedModules)\r\n return true\r\n \r\n } else if(parsedData.CTY == \"mgsRes\" && !parsedData.STM) {\r\n //console.log(parsedData.STM)\r\n const moduleRestInterval = setInterval(() => {\r\n clearInterval(moduleRestInterval)\r\n const index = modules.findIndex(module => module.MAC == parsedData.MAC)\r\n const updatedModule = {...modules[index], ...{newState: parsedData.STA}, ...{isWaitingForRes: false}}\r\n clearInterval(commandInterval)\r\n var updatedModules = modules;\r\n updatedModules[index] = {...updatedModules[index], ...updatedModule}\r\n setModules(updatedModules)\r\n setSetModulesHelper(setModulesHelper => setModulesHelper + 1)\r\n \r\n }, 500);\r\n \r\n //console.log(updatedModules)\r\n \r\n return true\r\n }\r\n \r\n }) \r\n \r\n }\r\n\r\n });\r\n \r\n\r\n \r\n }\r\n\r\n if(Platform.OS == 'web') {\r\n onlineModuleCommandHandler(module, switchNum)\r\n } else {\r\n try{\r\n WifiManager.getCurrentWifiSSID().then(ssid=> {\r\n if(ssid.substring(0,6) === 'Zitco_'){\r\n localModuleCommandHandler(module, switchNum)\r\n } else {\r\n offlineModuleCommandHandler(module, switchNum)\r\n onlineModuleCommandHandler(module, switchNum)\r\n }\r\n })\r\n } catch (err) {\r\n console.log('catch')\r\n offlineModuleCommandHandler(module, switchNum)\r\n onlineModuleCommandHandler(module, switchNum)\r\n }\r\n }\r\n\r\n // NetInfo.fetch().then(state => {\r\n // if(Platform.OS !== 'web'){\r\n // WifiManager.getCurrentWifiSSID().then(ssid=> {\r\n // if(ssid.substring(0,6) === 'Zitco_'){\r\n // localModuleCommandHandler(module, switchNum)\r\n // } else if() {\r\n // offlineModuleCommandHandler(module, switchNum)\r\n // }\r\n // })\r\n // }\r\n // onlineModuleCommandHandler(module, switchNum)\r\n \r\n // });\r\n \r\n }\r\n\r\n const styleHandler = (item) => {\r\n if(item.newState) {\r\n if(item.isWaitingForRes) {\r\n if(item.type == 'A1' || item.type == 'A2'){\r\n return {...storedCredentials.theme == 'light' ? LightStyles.loadedACCard : DarkStyles.loadedACCard, ...{backgroundColor: storedCredentials.theme == 'light' ? 'blue' : '#64877b'}}\r\n } else if(item.type == 'P' || item.type == 'S1' || item.type == 'S2') {\r\n return {...storedCredentials.theme == 'light' ? LightStyles.loadedPlugCard : DarkStyles.loadedPlugCard, ...{backgroundColor: storedCredentials.theme == 'light' ? 'blue' : '#64877b'}}\r\n } else if(item.type == 'S3') {\r\n return {...storedCredentials.theme == 'light' ? LightStyles.loadedS3Card : DarkStyles.loadedS3Card, ...{backgroundColor: storedCredentials.theme == 'light' ? 'blue' : '#64877b'}}\r\n } else if(item.type == 'S4') {\r\n return {...storedCredentials.theme == 'light' ? LightStyles.loadedS4Card : DarkStyles.loadedS4Card, ...{backgroundColor: storedCredentials.theme == 'light' ? 'blue' : '#64877b'}}\r\n }\r\n } else {\r\n if(item.type == 'A1' || item.type == 'A2'){\r\n return storedCredentials.theme == 'light' ? LightStyles.loadedACCard : DarkStyles.loadedACCard\r\n } else if(item.type == 'P' || item.type == 'S1' || item.type == 'S2') {\r\n return storedCredentials.theme == 'light' ? LightStyles.loadedPlugCard : DarkStyles.loadedPlugCard\r\n } else if(item.type == 'S3') {\r\n return storedCredentials.theme == 'light' ? LightStyles.loadedS3Card : DarkStyles.loadedS3Card\r\n } else if(item.type == 'S4') {\r\n return storedCredentials.theme == 'light' ? LightStyles.loadedS4Card : DarkStyles.loadedS4Card\r\n }\r\n }\r\n } else if(!item.newState) {\r\n if(item.type == 'A1' || item.type == 'A2') {\r\n return storedCredentials.theme == 'light' ? LightStyles.acCard : DarkStyles.acCard\r\n } else if(item.type == 'P' || item.type == 'S1' || item.type == 'S2') {\r\n return storedCredentials.theme == 'light' ? LightStyles.plugCard : DarkStyles.plugCard\r\n } else if(item.type == 'S3') {\r\n return storedCredentials.theme == 'light' ? LightStyles.s3Card : DarkStyles.s3Card\r\n } else if(item.type == 'S4') {\r\n return storedCredentials.theme == 'light' ? LightStyles.s4Card : DarkStyles.s4Card\r\n }\r\n }\r\n }\r\n\r\n const handleIsEdittingModules = (module) => {\r\n if(isEdittingModules.length == 0) {\r\n const tempIsEdittingModules = isEdittingModules;\r\n tempIsEdittingModules.push(module)\r\n setIsEdittingModules(tempIsEdittingModules)\r\n setIsEdittingModulesHelper(isEdittingModulesHelper + 1)\r\n \r\n fadeIn()\r\n } else {\r\n Animated.timing(fadeAnim, {\r\n toValue: 0,\r\n duration: 150,\r\n useNativeDriver: true,\r\n }).start(({finished})=> {\r\n var tempIsEdittingModules = isEdittingModules;\r\n tempIsEdittingModules = []\r\n \r\n tempIsEdittingModules.push(module)\r\n setIsEdittingModuleName([])\r\n setIsEdittingModules(tempIsEdittingModules)\r\n setIsEdittingModulesHelper(isEdittingModulesHelper + 1)\r\n \r\n fadeIn()\r\n })\r\n }\r\n\r\n }\r\n const handleCancelEditting = (module) => {\r\n Animated.timing(fadeAnim, {\r\n toValue: 0,\r\n duration: 250,\r\n useNativeDriver: true,\r\n }).start(({finished}) => { \r\n setIsEdittingModuleName([])\r\n setIsEdittingModules([])\r\n setIsEdittingModuleNameHelper(isEdittingModuleNameHelper - 1)\r\n });\r\n }\r\n const handleEditModuleName = (module) => {\r\n const tempIsEdittingModuleName = isEdittingModuleName\r\n tempIsEdittingModuleName.push(module)\r\n setIsEdittingModuleName(tempIsEdittingModuleName)\r\n setIsEdittingModuleNameHelper(isEdittingModuleNameHelper + 1)\r\n\r\n if(storedCredentials.customModulesNames) {\r\n var storedCustomModulesNames = storedCredentials.customModulesNames\r\n const index = storedCustomModulesNames.findIndex(moduleItem => moduleItem.MAC == module.MAC)\r\n if(index != -1) {\r\n setModuleName(storedCustomModulesNames[index].Name)\r\n } else {\r\n if(module.type == 'P') setModuleName(strings().plug)\r\n else setModuleName(strings().switch)\r\n }\r\n } else {\r\n if(module.type == 'P') setModuleName(strings().plug)\r\n else setModuleName(strings().switch)\r\n }\r\n \r\n }\r\n const handleChangeModuleName = (module) => {\r\n var updatedStoredCredentials\r\n if(storedCredentials.customModulesNames) {\r\n var storedCustomModulesNames = storedCredentials.customModulesNames\r\n const index = storedCustomModulesNames.findIndex(moduleItem => moduleItem.MAC == module.MAC)\r\n if(index == -1){\r\n storedCustomModulesNames.push({MAC: module.MAC, Name: moduleName})\r\n updatedStoredCredentials = {...storedCredentials, ...{customModulesNames: storedCustomModulesNames}}\r\n } else {\r\n storedCustomModulesNames[index] = { MAC: module.MAC, Name: moduleName }\r\n updatedStoredCredentials = {...storedCredentials, ...{customModulesNames: storedCustomModulesNames}}\r\n }\r\n\r\n } else {\r\n updatedStoredCredentials = {...storedCredentials, ...{customModulesNames: [{MAC: module.MAC, Name: moduleName}]}}\r\n\r\n }\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n \r\n NetInfo.fetch().then(state => {\r\n \r\n if(state.isConnected) {\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/updateUserInfo';\r\n const credentials = { \r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n data: {newCustomModulesName: updatedStoredCredentials.customModulesNames} \r\n };\r\n axios.post(url, credentials)\r\n .catch(err => {\r\n console.log(err)\r\n })\r\n } \r\n });\r\n\r\n })\r\n .catch(err =>{\r\n console.log(err);\r\n })\r\n\r\n handleCancelEditting(module)\r\n }\r\n\r\n const handleIsEdittingSwitchIcon = (module, switchNum) => {\r\n if(isEdittingSwitchIcon.length == 0) {\r\n const tempIsEdittingSwitchIcon = isEdittingSwitchIcon;\r\n tempIsEdittingSwitchIcon.push({...module, switchNum: switchNum})\r\n setIsEdittingSwitchIcon(tempIsEdittingSwitchIcon)\r\n setIsEdittingSwitchIconHelper(isEdittingModulesHelper + 1)\r\n } else {\r\n var tempIsEdittingSwitchIcon = isEdittingSwitchIcon;\r\n tempIsEdittingSwitchIcon = []\r\n\r\n tempIsEdittingSwitchIcon.push({...module, switchNum: switchNum})\r\n setIsEdittingModuleName([])\r\n setIsEdittingSwitchIcon(tempIsEdittingSwitchIcon)\r\n setIsEdittingSwitchIconHelper(isEdittingModulesHelper + 1)\r\n }\r\n }\r\n const handleCancelSwitchIconEditting = (module) => {\r\n setIsEdittingSwitchIcon([])\r\n setIsEdittingSwitchIconHelper(isEdittingSwitchIconHelper + 1)\r\n }\r\n const handleChangeSwitchIcon = (icon) => {\r\n var updatedStoredCredentials\r\n if(storedCredentials.customSwitchesIcons) {\r\n var tempStoredCustomSwitchesIcons = storedCredentials.customSwitchesIcons\r\n const index = tempStoredCustomSwitchesIcons.findIndex(moduleItem => moduleItem.MAC == isEdittingSwitchIcon[0].MAC)\r\n if(index == -1) {\r\n tempStoredCustomSwitchesIcons.push({MAC: isEdittingSwitchIcon[0].MAC, Switches: [{num: isEdittingSwitchIcon[0].num, icon: icon}]})\r\n updatedStoredCredentials = {...storedCredentials, ...{customSwitchesIcons: tempStoredCustomSwitchesIcons}}\r\n } else {\r\n const switchIndex = tempStoredCustomSwitchesIcons[index].Switches.findIndex(switchItem => switchItem.num == isEdittingSwitchIcon[0].switchNum)\r\n if(switchIndex == -1) {\r\n tempStoredCustomSwitchesIcons[index].Switches.push({num: isEdittingSwitchIcon[0].switchNum, icon: icon})\r\n updatedStoredCredentials = {...storedCredentials, ...{customSwitchesIcons: tempStoredCustomSwitchesIcons}}\r\n } else {\r\n tempStoredCustomSwitchesIcons[index].Switches[switchIndex].icon = icon\r\n updatedStoredCredentials = {...storedCredentials, ...{customSwitchesIcons: tempStoredCustomSwitchesIcons}}\r\n }\r\n }\r\n } else {\r\n updatedStoredCredentials = {...storedCredentials, ...{customSwitchesIcons: [{MAC: isEdittingSwitchIcon[0].MAC, Switches: [{num: isEdittingSwitchIcon[0].switchNum, icon: icon}]}]}}\r\n }\r\n \r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n \r\n NetInfo.fetch().then(state => {\r\n \r\n if(state.isConnected) {\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/updateUserInfo';\r\n const credentials = { \r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n data: {newCustomSwitchesIcons: updatedStoredCredentials.customSwitchesIcons} \r\n };\r\n axios.post(url, credentials)\r\n .catch(err => {\r\n console.log(err)\r\n })\r\n } \r\n });\r\n\r\n })\r\n .catch(err =>{\r\n console.log(err);\r\n })\r\n\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n setAddModuleModalVisile(!addModuleModalVisible)}\r\n >\r\n \r\n \r\n\r\n {strings().addDevice} \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n {strings().putDeviceOnConfigMode}\r\n \r\n \r\n\r\n\r\n \r\n {isAddingModule ? {} : handleAddNewModule()}}\r\n onPress={()=>{\r\n setAddModuleModalVisile(!addModuleModalVisible);\r\n setAddModuleModalSecondStepVisible(!addModuleModalSecondStepVisible)\r\n }}\r\n >\r\n {\r\n isAddingModule\r\n ? \r\n : {strings().nextStep} \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setAddModuleModalSecondStepVisible(!addModuleModalSecondStepVisible)}\r\n >\r\n \r\n \r\n\r\n {strings().addDevice} \r\n \r\n \r\n \r\n \r\n \r\n \r\n {strings().connectZITCOCONFIGThroughtWifi}\r\n \r\n {strings().password}\r\n \r\n \r\n \r\n \r\n {/* {isAddingModule ? {} : handleAddNewModule()}}\r\n onPress={()=>{\r\n setAddModuleModalSecondStepVisible(!addModuleModalSecondStepVisible)\r\n setAddModuleModalThirdStepVisible(!addModuleModalThirdStepVisible)\r\n requestAccessFineLocation()\r\n }}\r\n >\r\n {\r\n isAddingModule\r\n ? \r\n : {strings().nextStep} \r\n }\r\n \r\n */}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setAddModuleModalThirdStepVisible(!addModuleModalThirdStepVisible)}\r\n >\r\n \r\n \r\n\r\n {strings().addDevice} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {strings().chooseNetworkAndEnterItsPassword}\r\n \r\n \r\n \r\n {/* setSSID(value) }\r\n value={SSID}\r\n /> */}\r\n \r\n \r\n {isReloadingWifiList ? :\r\n \r\n setIsDropDownFocused(true)}\r\n onBlur={()=> setIsDropDownFocused(false)}\r\n onChange={(item)=> {\r\n setDropDownValue(item.value)\r\n setIsDropDownFocused(false)\r\n }}\r\n renderLeftIcon={()=> ()}\r\n />\r\n\r\n \r\n \r\n }\r\n\r\n \r\n\r\n isReloadingWifiList ? {} : requestAccessFineLocation()}>\r\n \r\n \r\n \r\n\r\n setModemPassword(value) } \r\n value={modemPassword}\r\n />\r\n \r\n setRememberModemInfo(newValue)}\r\n />\r\n {strings().saveModemInfo} \r\n\r\n \r\n\r\n \r\n setOfflineConfig(newValue)}\r\n />\r\n {strings().offlineConfig} \r\n\r\n \r\n \r\n \r\n \r\n {isAddingModule ? {} : handleAddNewModule()}}\r\n >\r\n {\r\n isAddingModule\r\n ? {strings().addingDevice} {addingModulesStep}/10 \r\n : {strings().addDevice} \r\n }\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* onSwipeRightHandler()}\r\n onSwipeLeft={()=> onSwipeLeftHandler()}\r\n >\r\n\r\n */}\r\n \r\n item.MAC}\r\n renderItem=\r\n {itemData => \r\n \r\n {\r\n itemData.item.type == 'P' &&\r\n handleIsEdittingModules(itemData.item)}\r\n >\r\n {itemData.item.isWaitingForRes \r\n ? \r\n \r\n \r\n \r\n :\r\n \r\n {\r\n isEdittingModuleName.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n \r\n \r\n setModuleName(value) } \r\n maxLength={7}\r\n />\r\n\r\n \r\n \r\n {moduleName.length} / 7 \r\n\r\n \r\n \r\n :\r\n \r\n {moduleTypeHandler(itemData)} \r\n \r\n\r\n\r\n }\r\n {\r\n isEdittingModules.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n \r\n {\r\n isEdittingModuleName.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n handleChangeModuleName(itemData.item)}\r\n >\r\n {strings().save} \r\n \r\n \r\n :\r\n handleEditModuleName(itemData.item)}\r\n >\r\n {strings().edit} \r\n \r\n\r\n }\r\n\r\n handleCancelEditting(itemData.item)} \r\n >\r\n {strings().deny} \r\n \r\n \r\n :\r\n <>\r\n {\r\n itemData.item.newState ?\r\n \r\n moduleCommandHandler(itemData.item, 0)}\r\n value={itemData.item.newState[0] == 0 ? false : true}\r\n />\r\n \r\n \r\n :\r\n {strings().connecting} \r\n }\r\n \r\n >\r\n\r\n }\r\n \r\n \r\n }\r\n \r\n }\r\n {\r\n itemData.item.type == 'A1' &&\r\n \r\n {itemData.item.isWaitingForRes \r\n ? \r\n \r\n \r\n \r\n :\r\n \r\n {\r\n itemData.item.newState ?\r\n \r\n \r\n \r\n {itemData.item.newState.PWR == 1 &&\r\n \r\n\r\n {\r\n itemData.item.newState.MOD == 0 &&\r\n moduleCommandHandler(itemData.item,{MOD: mode.toString()})} initValue={radioButtonData[0].mode} />\r\n }\r\n {\r\n itemData.item.newState.MOD == 1 &&\r\n moduleCommandHandler(itemData.item,{MOD: mode.toString()})} initValue={radioButtonData[1].mode} />\r\n }\r\n \r\n }\r\n \r\n \r\n \r\n \r\n دما اتاق: \r\n \r\n {itemData.item.newState.RTM} \r\n \r\n \r\n {itemData.item.newState.PWR == 1 &&\r\n \r\n \r\n moduleCommandHandler(itemData.item, {STM: (Number(itemData.item.newState.STM) + 1).toString()})}\r\n >\r\n \r\n \r\n \r\n \r\n {itemData.item.newState.STM}\r\n \r\n \r\n\r\n \r\n \r\n \r\n moduleCommandHandler(itemData.item, {STM: (Number(itemData.item.newState.STM) - 1).toString()})}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n {\r\n itemData.item.newState.PWR == 0 &&\r\n \r\n moduleCommandHandler(itemData.item, {PWR: \"1\"})} \r\n >\r\n \r\n \r\n \r\n }\r\n {\r\n itemData.item.newState.PWR == 1 &&\r\n \r\n moduleCommandHandler(itemData.item, {PWR: \"0\"})}\r\n >\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {itemData.item.newState.PWR == 1 &&\r\n \r\n {itemData.item.newState.FAN[0] == \"0\" ? moduleCommandHandler(itemData.item, {FAN: \"1\"}) : moduleCommandHandler(itemData.item, {FAN: (Number(itemData.item.newState.FAN[0]) + 1).toString()})}}\r\n >\r\n \r\n\r\n \r\n\r\n \r\n \r\n {itemData.item.newState.FAN[0] == 0 ? 'A' : itemData.item.newState.FAN[0]}\r\n \r\n \r\n\r\n \r\n {\r\n itemData.item.newState.FAN[1] == 0 ?\r\n \r\n :\r\n \r\n\r\n }\r\n \r\n\r\n \r\n {itemData.item.newState.FAN[0] == \"0\" ? moduleCommandHandler(itemData.item, {FAN: \"3\"}) : moduleCommandHandler(itemData.item, {FAN: (Number(itemData.item.newState.FAN[0]) - 1).toString()})}}\r\n >\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n :\r\n \r\n {moduleTypeHandler(itemData)} \r\n \r\n }\r\n {\r\n !itemData.item.newState &&\r\n \r\n {strings().connecting} \r\n\r\n \r\n }\r\n \r\n }\r\n \r\n \r\n }\r\n {\r\n itemData.item.type == 'A2' &&\r\n \r\n {itemData.item.isWaitingForRes \r\n ? \r\n \r\n \r\n \r\n :\r\n \r\n {\r\n itemData.item.newState ?\r\n \r\n \r\n \r\n {itemData.item.newState.PWR == 1 &&\r\n \r\n\r\n {\r\n itemData.item.newState.MOD == 0 &&\r\n moduleCommandHandler(itemData.item,{MOD: mode.toString()})} initValue={radioButtonData[0].mode} />\r\n }\r\n {\r\n itemData.item.newState.MOD == 1 &&\r\n moduleCommandHandler(itemData.item,{MOD: mode.toString()})} initValue={radioButtonData[1].mode} />\r\n }\r\n \r\n }\r\n \r\n \r\n \r\n \r\n دما اتاق: \r\n \r\n {itemData.item.newState.RTM} \r\n \r\n \r\n {itemData.item.newState.PWR == 1 &&\r\n \r\n \r\n moduleCommandHandler(itemData.item, {STM: (Number(itemData.item.newState.STM) + 1).toString()})}\r\n >\r\n \r\n \r\n \r\n\r\n \r\n {itemData.item.newState.STM}\r\n \r\n \r\n \r\n \r\n \r\n moduleCommandHandler(itemData.item, {STM: (Number(itemData.item.newState.STM) - 1).toString()})}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n {\r\n itemData.item.newState.PWR == 0 &&\r\n \r\n moduleCommandHandler(itemData.item, {PWR: \"1\"})} \r\n >\r\n \r\n \r\n \r\n }\r\n {\r\n itemData.item.newState.PWR == 1 &&\r\n \r\n moduleCommandHandler(itemData.item, {PWR: \"0\"})}\r\n >\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {itemData.item.newState.PWR == 1 &&\r\n \r\n {itemData.item.newState.FAN[0] == \"0\" ? moduleCommandHandler(itemData.item, {FAN: \"5\"}) : moduleCommandHandler(itemData.item, {FAN: (Number(itemData.item.newState.FAN[0]) + 1).toString()})}}\r\n >\r\n \r\n\r\n \r\n\r\n \r\n \r\n {itemData.item.newState.FAN[0] == 0 ? 'A' : itemData.item.newState.FAN[0]}\r\n \r\n \r\n\r\n \r\n {\r\n itemData.item.newState.FAN[1] == 0 ?\r\n \r\n :\r\n \r\n\r\n }\r\n \r\n\r\n \r\n {itemData.item.newState.FAN[0] == \"0\" ? moduleCommandHandler(itemData.item, {FAN: \"4\"}) : moduleCommandHandler(itemData.item, {FAN: (Number(itemData.item.newState.FAN[0]) - 1).toString()})}}\r\n >\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n :\r\n \r\n {moduleTypeHandler(itemData)} \r\n \r\n }\r\n {\r\n !itemData.item.newState &&\r\n \r\n {strings().connecting} \r\n\r\n \r\n }\r\n \r\n }\r\n \r\n \r\n } \r\n \r\n {\r\n itemData.item.type == 'S1' &&\r\n handleIsEdittingModules(itemData.item)}\r\n >\r\n {itemData.item.isWaitingForRes \r\n ? \r\n \r\n \r\n \r\n :\r\n \r\n {\r\n isEdittingModuleName.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n \r\n \r\n setModuleName(value) } \r\n maxLength={7}\r\n />\r\n\r\n \r\n \r\n {moduleName.length} / 7 \r\n\r\n \r\n \r\n :\r\n \r\n {moduleTypeHandler(itemData)} \r\n \r\n\r\n\r\n }\r\n {\r\n isEdittingModules.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n \r\n {\r\n isEdittingModuleName.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n handleChangeModuleName(itemData.item)}\r\n >\r\n {strings().save} \r\n \r\n \r\n :\r\n handleEditModuleName(itemData.item)}\r\n >\r\n {strings().edit} \r\n \r\n\r\n }\r\n\r\n handleCancelEditting(itemData.item)} \r\n >\r\n {strings().deny} \r\n \r\n \r\n :\r\n <>\r\n {\r\n itemData.item.newState ?\r\n <>\r\n {isEdittingSwitchIcon.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1 ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n handleChangeSwitchIcon('lightbulb-on')}>\r\n \r\n \r\n handleChangeSwitchIcon(\"wall-sconce\")}>\r\n \r\n \r\n handleChangeSwitchIcon(\"chandelier\")}>\r\n \r\n \r\n \r\n\r\n \r\n handleCancelSwitchIconEditting(itemData.item)}>\r\n {strings().back} \r\n \r\n \r\n \r\n :\r\n \r\n {/* moduleCommandHandler(itemData.item, 0)}\r\n value={itemData.item.newState[0] == 0 ? false : true}\r\n /> */}\r\n moduleCommandHandler(itemData.item, 1)}\r\n onLongPress={()=> handleIsEdittingSwitchIcon(itemData.item, 1)}\r\n >\r\n \r\n {itemData.item.newState[1] == 0 ? \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n } \r\n \r\n \r\n \r\n \r\n }\r\n >\r\n :\r\n {strings().connecting} \r\n\r\n }\r\n\r\n >\r\n }\r\n \r\n }\r\n \r\n }\r\n \r\n {\r\n itemData.item.type == 'S2' &&\r\n handleIsEdittingModules(itemData.item)}\r\n >\r\n {itemData.item.isWaitingForRes \r\n ? \r\n \r\n \r\n \r\n :\r\n \r\n {\r\n isEdittingModuleName.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n \r\n \r\n setModuleName(value) } \r\n maxLength={7}\r\n />\r\n\r\n \r\n \r\n {moduleName.length} / 7 \r\n\r\n \r\n \r\n :\r\n \r\n {moduleTypeHandler(itemData)} \r\n \r\n\r\n }\r\n {\r\n isEdittingModules.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n \r\n {\r\n isEdittingModuleName.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n handleChangeModuleName(itemData.item)}\r\n >\r\n {strings().save} \r\n \r\n \r\n :\r\n handleEditModuleName(itemData.item)}\r\n >\r\n {strings().edit} \r\n \r\n\r\n }\r\n handleCancelEditting(itemData.item)} \r\n >\r\n {strings().deny} \r\n \r\n \r\n :\r\n <>\r\n {\r\n itemData.item.newState ?\r\n <>\r\n {isEdittingSwitchIcon.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1 ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n handleChangeSwitchIcon('lightbulb-on')}>\r\n \r\n \r\n handleChangeSwitchIcon(\"wall-sconce\")}>\r\n \r\n \r\n handleChangeSwitchIcon(\"chandelier\")}>\r\n \r\n \r\n \r\n\r\n \r\n handleCancelSwitchIconEditting(itemData.item)}>\r\n {strings().back} \r\n \r\n \r\n \r\n :\r\n \r\n moduleCommandHandler(itemData.item, 2)}\r\n onLongPress={()=> handleIsEdittingSwitchIcon(itemData.item, 2)}\r\n >\r\n \r\n {itemData.item.newState[2] == 0 ? \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n } \r\n \r\n \r\n moduleCommandHandler(itemData.item, 0)}\r\n onLongPress={()=> handleIsEdittingSwitchIcon(itemData.item, 0)}\r\n >\r\n \r\n {itemData.item.newState[0] == 0 ? \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n } \r\n \r\n \r\n \r\n\r\n }\r\n >\r\n :\r\n {strings().connecting} \r\n \r\n }\r\n \r\n >\r\n\r\n }\r\n \r\n }\r\n \r\n }\r\n {\r\n itemData.item.type == 'S3' &&\r\n handleIsEdittingModules(itemData.item)}\r\n >\r\n {itemData.item.isWaitingForRes \r\n ? \r\n \r\n \r\n \r\n :\r\n \r\n {\r\n isEdittingModuleName.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n \r\n \r\n setModuleName(value) } \r\n maxLength={7}\r\n />\r\n\r\n \r\n \r\n {moduleName.length} / 7 \r\n\r\n \r\n \r\n :\r\n \r\n {moduleTypeHandler(itemData)} \r\n \r\n\r\n }\r\n {\r\n isEdittingModules.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n \r\n {\r\n isEdittingModuleName.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n handleChangeModuleName(itemData.item)}\r\n >\r\n {strings().save} \r\n \r\n \r\n :\r\n handleEditModuleName(itemData.item)}\r\n >\r\n {strings().edit} \r\n \r\n\r\n }\r\n\r\n handleCancelEditting(itemData.item)} \r\n >\r\n {strings().deny} \r\n \r\n \r\n :\r\n <>\r\n\r\n {\r\n itemData.item.newState \r\n ?\r\n <>\r\n {isEdittingSwitchIcon.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1 ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n handleChangeSwitchIcon('lightbulb-on')}>\r\n \r\n \r\n handleChangeSwitchIcon(\"wall-sconce\")}>\r\n \r\n \r\n handleChangeSwitchIcon(\"chandelier\")}>\r\n \r\n \r\n \r\n\r\n \r\n handleCancelSwitchIconEditting(itemData.item)}>\r\n {strings().back} \r\n \r\n \r\n \r\n :\r\n \r\n moduleCommandHandler(itemData.item, 2)}\r\n onLongPress={()=> handleIsEdittingSwitchIcon(itemData.item, 2)}\r\n >\r\n \r\n {itemData.item.newState[2] == 0 ? \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n } \r\n \r\n \r\n\r\n moduleCommandHandler(itemData.item, 1)}\r\n onLongPress={()=> handleIsEdittingSwitchIcon(itemData.item, 1)}\r\n >\r\n \r\n {itemData.item.newState[1] == 0 ? \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n } \r\n \r\n \r\n\r\n moduleCommandHandler(itemData.item, 0)}\r\n onLongPress={()=> handleIsEdittingSwitchIcon(itemData.item, 0)}\r\n >\r\n \r\n {itemData.item.newState[0] == 0 ? \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n } \r\n \r\n \r\n \r\n \r\n }\r\n\r\n >\r\n\r\n :\r\n {strings().connecting} \r\n }\r\n >\r\n }\r\n \r\n }\r\n \r\n }\r\n {\r\n itemData.item.type == 'S4' &&\r\n handleIsEdittingModules(itemData.item)}\r\n\r\n >\r\n {itemData.item.isWaitingForRes \r\n ? \r\n \r\n \r\n \r\n :\r\n \r\n {\r\n isEdittingModuleName.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n \r\n \r\n setModuleName(value) } \r\n maxLength={7}\r\n />\r\n\r\n \r\n \r\n {moduleName.length} / 7 \r\n\r\n \r\n \r\n :\r\n \r\n {moduleTypeHandler(itemData)} \r\n \r\n\r\n\r\n }\r\n\r\n {\r\n isEdittingModules.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n \r\n {\r\n isEdittingModuleName.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1\r\n ?\r\n handleChangeModuleName(itemData.item)}\r\n >\r\n {strings().save} \r\n \r\n \r\n :\r\n handleEditModuleName(itemData.item)}\r\n >\r\n {strings().edit} \r\n \r\n\r\n }\r\n\r\n handleCancelEditting(itemData.item)} \r\n >\r\n {strings().deny} \r\n \r\n \r\n :\r\n <>\r\n {\r\n itemData.item.newState ?\r\n <>\r\n {isEdittingSwitchIcon.findIndex(moduleItem => moduleItem.MAC == itemData.item.MAC) !== -1 ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n handleChangeSwitchIcon('lightbulb-on')}>\r\n \r\n \r\n handleChangeSwitchIcon(\"wall-sconce\")}>\r\n \r\n \r\n handleChangeSwitchIcon(\"chandelier\")}>\r\n \r\n \r\n \r\n\r\n \r\n handleCancelSwitchIconEditting(itemData.item)}>\r\n {strings().back} \r\n \r\n \r\n \r\n :\r\n \r\n moduleCommandHandler(itemData.item, 3)}\r\n onLongPress={()=> handleIsEdittingSwitchIcon(itemData.item, 3)}\r\n >\r\n \r\n {itemData.item.newState[3] == 0 ? \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n } \r\n \r\n \r\n \r\n moduleCommandHandler(itemData.item, 2)}\r\n onLongPress={()=> handleIsEdittingSwitchIcon(itemData.item, 2)}\r\n >\r\n \r\n {itemData.item.newState[2] == 0 ? \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n } \r\n \r\n \r\n \r\n moduleCommandHandler(itemData.item, 1)}\r\n onLongPress={()=> handleIsEdittingSwitchIcon(itemData.item, 1)}\r\n >\r\n \r\n {itemData.item.newState[1] == 0 ? \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n } \r\n \r\n \r\n \r\n moduleCommandHandler(itemData.item, 0)}\r\n onLongPress={()=> handleIsEdittingSwitchIcon(itemData.item, 0)}\r\n >\r\n \r\n {itemData.item.newState[0] == 0 ? \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n } \r\n \r\n \r\n \r\n\r\n }\r\n\r\n >\r\n :\r\n {strings().connecting} \r\n } \r\n \r\n >\r\n }\r\n\r\n \r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n\r\n // ListHeaderComponent=\r\n // {()=>\r\n \r\n \r\n // } \r\n >\r\n \r\n \r\n \r\n )\r\n};\r\n\r\n\r\nlet DarkStyles = {\r\n wrapper:{\r\n // justifyContent:'center',\r\n flex: 1,\r\n backgroundColor: '#3b3c37'\r\n },\r\n plugCard:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#1c1c1a',\r\n \r\n },\r\n loadedPlugCard:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#807f76',\r\n \r\n },\r\n acCard:{\r\n justifyContent: 'center',\r\n height: 250,\r\n backgroundColor: '#1c1c1a',\r\n \r\n },\r\n loadedACCard:{\r\n justifyContent: 'center',\r\n height: 250,\r\n backgroundColor: '#807f76',\r\n },\r\n acView:{\r\n flexDirection: 'row-reverse', flex: 1, justifyContent: 'space-between'\r\n },\r\n loadedAcView: {\r\n flex: 1, justifyContent: 'space-between',\r\n },\r\n s3Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#1c1c1a',\r\n \r\n },\r\n loadedS3Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#807f76',\r\n \r\n },\r\n s4Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#1c1c1a',\r\n \r\n },\r\n loadedS4Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#807f76',\r\n \r\n },\r\n cardTitle:{\r\n fontSize: 30,\r\n textAlign: 'right',\r\n color: 'white'\r\n },\r\n addModuleCard:{\r\n backgroundColor: '#ffffff',\r\n height: 100,\r\n alignItems:'center',\r\n justifyContent:'center'\r\n },\r\n modalView:{\r\n marginVertical: 10,\r\n marginHorizontal: '5%',\r\n backgroundColor: \"white\",\r\n borderRadius: 20,\r\n shadowColor: \"#000\",\r\n shadowOffset: {\r\n width: 0,\r\n height: 2\r\n },\r\n shadowOpacity: 0.25,\r\n shadowRadius: 4,\r\n elevation: 50,\r\n tintColor: 'black',\r\n },\r\n addModuleModalHeader:{\r\n flexDirection: 'row-reverse',\r\n paddingVertical: 15,\r\n backgroundColor: '#2b2b28',\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20,\r\n alignItems: 'center'\r\n },\r\n modalHeaderCloseIconWrapper:{\r\n paddingRight: 15,\r\n paddingVertical: 10\r\n },\r\n modalHeaderText:{\r\n fontSize: 25,\r\n fontWeight: '600',\r\n color: 'white',\r\n },\r\n addModuleModalBody:{\r\n padding: 20,\r\n backgroundColor: '#b3b2ad',\r\n },\r\n addModuleModalDescriptions:{\r\n fontSize: 18,\r\n fontWeight: '400',\r\n margin: 5,\r\n // textAlign: 'right',\r\n },\r\n UssidandPassTextInputs:{\r\n backgroundColor: '#F5F6FA',\r\n padding: 10,\r\n marginHorizontal: 20,\r\n marginVertical: 10,\r\n textAlign: 'center',\r\n borderWidth: 1,\r\n borderRadius: 20,\r\n fontSize: 22,\r\n fontWeight: '300'\r\n },\r\n addModuleModalSubmitBtn:{\r\n backgroundColor: '#807f76',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: 15,\r\n borderBottomLeftRadius: 20,\r\n borderBottomRightRadius: 20\r\n },\r\n addModuleModalSubmitBtnText:{\r\n color: 'white',\r\n fontSize: 30,\r\n fontWeight: '600',\r\n textAlign: 'center'\r\n },\r\n addModuleModalDescriptionsUSSIDandPassInputsWrapper:{\r\n margin: 20,\r\n marginBottom: 50\r\n },\r\n lottie: {\r\n width: 100,\r\n height: 100\r\n }\r\n};\r\nlet LightStyles = {\r\n wrapper:{\r\n justifyContent:'center',\r\n flex: 1\r\n },\r\n plugCard:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#88b388',\r\n \r\n },\r\n loadedPlugCard:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#c2ffc2',\r\n \r\n },\r\n acCard:{\r\n justifyContent: 'center',\r\n height: 225,\r\n backgroundColor: '#88b388',\r\n \r\n },\r\n loadedACCard:{\r\n justifyContent: 'center',\r\n height: 225,\r\n backgroundColor: '#c2ffc2',\r\n },\r\n acView:{\r\n flexDirection: 'row-reverse', flex: 1,justifyContent: 'space-between'\r\n },\r\n loadedAcView: {\r\n flexDirection: 'row-reverse', flex: 1,justifyContent: 'space-between', alignItems: 'flex-end'\r\n },\r\n s3Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#88b388',\r\n \r\n },\r\n loadedS3Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#c2ffc2',\r\n \r\n },\r\n s4Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#88b388',\r\n \r\n },\r\n loadedS4Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#c2ffc2',\r\n \r\n },\r\n cardTitle:{\r\n fontSize: 30,\r\n textAlign: 'right',\r\n color: 'black'\r\n },\r\n addModuleCard:{\r\n backgroundColor: '#ffffff',\r\n height: 30,\r\n alignItems:'center',\r\n justifyContent:'center'\r\n },\r\n modalView:{\r\n marginVertical: 10,\r\n marginHorizontal: '5%',\r\n backgroundColor: \"white\",\r\n borderRadius: 20,\r\n shadowColor: \"#000\",\r\n shadowOffset: {\r\n width: 0,\r\n height: 2\r\n },\r\n shadowOpacity: 0.25,\r\n shadowRadius: 4,\r\n elevation: 50,\r\n tintColor: 'black',\r\n },\r\n addModuleModalHeader:{\r\n flexDirection: 'row-reverse',\r\n paddingVertical: 15,\r\n backgroundColor: '#344a47',\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20,\r\n alignItems: 'center'\r\n },\r\n modalHeaderCloseIconWrapper:{\r\n paddingRight: 15,\r\n paddingVertical: 10\r\n },\r\n modalHeaderText:{\r\n fontSize: 25,\r\n fontWeight: '600',\r\n color: 'white',\r\n },\r\n addModuleModalBody:{\r\n padding: 20,\r\n },\r\n addModuleModalDescriptions:{\r\n fontSize: 18,\r\n fontWeight: '400',\r\n margin: 5,\r\n // textAlign: 'right',\r\n },\r\n UssidandPassTextInputs:{\r\n backgroundColor: '#F5F6FA',\r\n padding: 10,\r\n marginHorizontal: 20,\r\n marginVertical: 10,\r\n textAlign: 'center',\r\n borderWidth: 1,\r\n borderRadius: 20,\r\n fontSize: 22,\r\n fontWeight: '300'\r\n },\r\n addModuleModalSubmitBtn:{\r\n backgroundColor: '#dab2be',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: 15,\r\n borderBottomLeftRadius: 20,\r\n borderBottomRightRadius: 20\r\n },\r\n addModuleModalSubmitBtnText:{\r\n color: 'white',\r\n fontSize: 30,\r\n fontWeight: '600',\r\n textAlign: 'center'\r\n },\r\n addModuleModalDescriptionsUSSIDandPassInputsWrapper:{\r\n margin: 20,\r\n marginBottom: 50\r\n },\r\n lottie: {\r\n width: 100,\r\n height: 100\r\n },\r\n dropdown: {\r\n height: 50,\r\n borderColor: 'black',\r\n borderWidth: 0.5,\r\n borderRadius: 8,\r\n paddingHorizontal: 8,\r\n },\r\n icon: {\r\n marginRight: 5,\r\n },\r\n label: {\r\n position: 'absolute',\r\n backgroundColor: 'white',\r\n left: 22,\r\n top: 8,\r\n zIndex: 999,\r\n paddingHorizontal: 8,\r\n fontSize: 14,\r\n },\r\n placeholderStyle: {\r\n fontSize: 16,\r\n },\r\n selectedTextStyle: {\r\n fontSize: 16,\r\n },\r\n iconStyle: {\r\n width: 20,\r\n height: 20,\r\n },\r\n inputSearchStyle: {\r\n height: 40,\r\n fontSize: 16,\r\n },\r\n};\r\n\r\n\r\nexport default RoomModules;","import React, {useContext, useState, useEffect} from 'react';\r\nimport { Text, View, Platform, ActivityIndicator } from 'react-native';\r\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\r\nimport AsyncStorage from '@react-native-async-storage/async-storage';\r\n\r\nimport { CredentialsContext } from '../components/CredentialsContext';\r\nimport { useFonts } from 'expo-font'\r\nimport { StatusBar } from 'expo-status-bar';\r\n\r\nimport RoomModules from '../screens/RoomModules';\r\nimport BoldStyledText from '../components/BoldStyledText';\r\n\r\nconst Tab = createMaterialTopTabNavigator();\r\n\r\nconst MaterialTopTabNav = props =>{\r\n\r\n const {storedCredentials, setStoredCredentials} = useContext(CredentialsContext);\r\n // const [storedCredentials, setStoredCredentials] = useContext(CredentialsContext)\r\n const [appReady, setAppReady] = useState(false);\r\n\r\n useEffect(()=> {\r\n AsyncStorage.getItem('flowerCribCredentials')\r\n .then((result)=>{\r\n if(result !== null){\r\n setStoredCredentials(JSON.parse(result));\r\n setAppReady(true)\r\n } else {\r\n setStoredCredentials(null);\r\n setAppReady(true)\r\n }\r\n \r\n })\r\n .catch(err => console.log(err))\r\n\r\n }, [])\r\n\r\n let [fontsLoaded] = useFonts({\r\n \"Mikhak-Bold\": require('../assets/Fonts/Mikhak-Bold.ttf')\r\n })\r\n\r\n // const [userRooms, setuserRooms] = useState(()=> {\r\n // if(typeof storedCredentialsState.userRooms == 'string') return JSON.parse(storedCredentialsState.userRooms)\r\n // else return storedCredentialsState.userRooms\r\n // });\r\n \r\n if(!appReady) {\r\n return (\r\n \r\n \r\n \r\n \r\n ) \r\n }\r\n \r\n return (\r\n ({\r\n tabBarStyle: { backgroundColor: storedCredentials.theme == 'light' ? '#f2f2f2' : '#3b3c37' },\r\n tabBarIndicatorStyle:{ backgroundColor: storedCredentials.theme == 'light' ? '#f2f2f2' : '#3b3c37' },\r\n tabBarItemStyle:{width: 160},\r\n tabBarScrollEnabled: true,\r\n // animationEnabled: false,\r\n lazy: true,\r\n lazyPlaceholder: () => {\r\n return(\r\n \r\n درحال بارگذاری... \r\n \r\n )},\r\n tabBarLabel: ({ focused }) => {\r\n return (\r\n \r\n {focused ? \r\n \r\n {route.name}\r\n \r\n :\r\n \r\n {route.name}\r\n \r\n\r\n }\r\n \r\n );\r\n },\r\n animationEnabled: false,\r\n })}\r\n initialRouteName={props.route.params.itemData.item.name}\r\n swipeVelocityImpact={10}\r\n >\r\n {/* {(prop) => ModulesScreen(prop)} */}\r\n {storedCredentials.userRooms.map(room => \r\n \r\n {prop => } \r\n \r\n )}\r\n \r\n )\r\n};\r\n\r\nlet LightStyles = {\r\n wrapper:{\r\n justifyContent:'center',\r\n flex: 1\r\n },\r\n plugCard:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#88b388',\r\n \r\n },\r\n loadedPlugCard:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#c2ffc2',\r\n \r\n },\r\n acCard:{\r\n justifyContent: 'center',\r\n height: 225,\r\n backgroundColor: '#88b388',\r\n \r\n },\r\n loadedACCard:{\r\n justifyContent: 'center',\r\n height: 225,\r\n backgroundColor: '#c2ffc2',\r\n },\r\n acView:{\r\n flexDirection: 'row-reverse', flex: 1,justifyContent: 'space-between'\r\n },\r\n loadedAcView: {\r\n flexDirection: 'row-reverse', flex: 1,justifyContent: 'space-between', alignItems: 'flex-end'\r\n },\r\n s3Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#88b388',\r\n \r\n },\r\n loadedS3Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#c2ffc2',\r\n \r\n },\r\n s4Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#88b388',\r\n \r\n },\r\n loadedS4Card:{\r\n justifyContent: 'center',\r\n height: 100,\r\n backgroundColor: '#c2ffc2',\r\n \r\n },\r\n cardTitle:{\r\n fontSize: 30,\r\n textAlign: 'right',\r\n color: 'black'\r\n },\r\n addModuleCard:{\r\n backgroundColor: '#ffffff',\r\n height: 30,\r\n alignItems:'center',\r\n justifyContent:'center'\r\n },\r\n modalView:{\r\n marginVertical: 10,\r\n marginHorizontal: '5%',\r\n backgroundColor: \"white\",\r\n borderRadius: 20,\r\n shadowColor: \"#000\",\r\n shadowOffset: {\r\n width: 0,\r\n height: 2\r\n },\r\n shadowOpacity: 0.25,\r\n shadowRadius: 4,\r\n elevation: 50,\r\n tintColor: 'black',\r\n },\r\n addModuleModalHeader:{\r\n flexDirection: 'row-reverse',\r\n paddingVertical: 15,\r\n backgroundColor: '#344a47',\r\n borderTopLeftRadius: 20,\r\n borderTopRightRadius: 20,\r\n alignItems: 'center'\r\n },\r\n modalHeaderCloseIconWrapper:{\r\n paddingRight: 15,\r\n paddingVertical: 10\r\n },\r\n modalHeaderText:{\r\n fontSize: 25,\r\n fontWeight: '600',\r\n color: 'white',\r\n },\r\n addModuleModalBody:{\r\n padding: 20,\r\n },\r\n addModuleModalDescriptions:{\r\n fontSize: 22,\r\n fontWeight: '400',\r\n margin: 5,\r\n textAlign: 'right',\r\n },\r\n UssidandPassTextInputs:{\r\n backgroundColor: '#F5F6FA',\r\n padding: 10,\r\n marginHorizontal: 20,\r\n marginVertical: 10,\r\n textAlign: 'center',\r\n borderWidth: 1,\r\n borderRadius: 20,\r\n fontSize: 22,\r\n fontWeight: '300'\r\n },\r\n addModuleModalSubmitBtn:{\r\n backgroundColor: '#dab2be',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: 15,\r\n borderBottomLeftRadius: 20,\r\n borderBottomRightRadius: 20\r\n },\r\n addModuleModalSubmitBtnText:{\r\n color: 'white',\r\n fontSize: 30,\r\n fontWeight: '600'\r\n },\r\n addModuleModalDescriptionsUSSIDandPassInputsWrapper:{\r\n margin: 20,\r\n marginBottom: 50\r\n },\r\n lottie: {\r\n width: 100,\r\n height: 100\r\n }\r\n};\r\nexport default MaterialTopTabNav;","import React, { useState, useEffect, useContext } from 'react';\r\nimport { AppState } from 'react-native';\r\nimport { NavigationContainer } from '@react-navigation/native';\r\n// import { createNativeStackNavigator } from '@react-navigation/native-stack';\r\nimport { createStackNavigator } from '@react-navigation/stack';\r\nimport useWebSocket from 'react-native-use-websocket';\r\nimport bcryptjs from 'react-native-bcrypt';\r\n\r\nimport AsyncStorage from '@react-native-async-storage/async-storage';\r\nimport { CredentialsContext } from '../components/CredentialsContext';\r\n\r\nimport { Entypo, Ionicons} from '@expo/vector-icons';\r\nimport { useFonts } from 'expo-font'\r\n\r\n// import { socket, reconect} from '../components/Socket';\r\nimport SignUp from '../screens/SignUp';\r\nimport Home from '../screens/Home';\r\nimport ActivationWithSMS from '../screens/ActivationWithSMS';\r\nimport FetchRoom from '../screens/FetchRoom';\r\nimport Settings from '../screens/Settings';\r\n\r\nimport MaterialTopTabNav from './MaterialTopTabNav';\r\n\r\nimport { EnglishStrings } from '../strings/English';\r\nimport { PersianStrings } from '../strings/Persian';\r\nimport { ArabicStrings } from '../strings/Arabic';\r\n\r\nimport envVars from '../env';\r\n\r\nconst Stack = createStackNavigator();\r\n\r\nconst RootStack = (props) =>{\r\n const {storedCredentials, setStoredCredentials} = useContext(CredentialsContext);\r\n const [isTokenValidated, setIsTokenValidated] = useState(true)\r\n const [token, setToken] = useState('')\r\n\r\n const middleWareServerUrl = envVars.MIDDLE_WARE_SERVER_IP + envVars.MIDDLE_WARE_SERVER_PORT\r\n const welcomeMsg = {\r\n CTY: 'mc',\r\n DID: storedCredentials.userPhoneNumber,\r\n }\r\n\r\n // const { sendMessage, lastJsonMessage, lastMessage, readyState } = useWebSocket('ws://185.231.115.232:5050', { \r\n // const { sendMessage, lastJsonMessage, lastMessage, readyState } = useWebSocket('ws://185.231.115.232:5001', { \r\n // share: true,\r\n // onOpen: () => {\r\n // sendMessage(JSON.stringify(welcomeMsg))\r\n // },\r\n // // onOpen: () => {\r\n // // const d = new Date();\r\n // // let time = d.getTime();\r\n // // time = Math.floor(time/1000).toString() + envVars.SECRET\r\n // // const salt = bcryptjs.genSaltSync(10);\r\n // // const hash = bcryptjs.hashSync(time, salt);\r\n // // setToken(hash)\r\n\r\n // // const welcomeMsg = {\r\n // // CTY: 'mc',\r\n // // DID: storedCredentials.userPhoneNumber,\r\n // // token: hash\r\n // // }\r\n // // sendMessage(JSON.stringify(welcomeMsg))\r\n // // },\r\n // retryOnError: true,\r\n // // reconnectAttempts: 5,\r\n // // reconnectInterval: (attemptNumber) => {\r\n // // Math.min(Math.pow(2, attemptNumber) * 1000, 10000)\r\n // // },\r\n // shouldReconnect: (CloseEvent) => true,\r\n // })\r\n\r\n const [fontsLoaded] = useFonts({\r\n \"Mikhak-Bold\": require('../assets/Fonts/Mikhak-Bold.ttf')\r\n })\r\n\r\n useEffect(() => {\r\n props.navigation.setOptions({\r\n headerShown: false\r\n })\r\n }, [])\r\n useEffect(()=> {\r\n if(props.socket.lastMessage.data == 'token validated!'){\r\n setIsTokenValidated(true)\r\n\r\n AsyncStorage.getItem('flowerCribCredentials').then((storedData)=> {\r\n storedData = JSON.parse(storedData);\r\n storedData = {...storedData, ...{token: token}}\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(storedData));\r\n \r\n })\r\n .catch((err) => console.log(err))\r\n } \r\n }, [props.socket.lastMessage])\r\n\r\n const strings = () => {\r\n if(storedCredentials.language == 'English') {\r\n return EnglishStrings\r\n } else if(storedCredentials.language == 'Arabic') {\r\n return ArabicStrings\r\n } else return PersianStrings\r\n }\r\n\r\n return (\r\n \r\n {({storedCredentials})=> (\r\n \r\n \r\n {storedCredentials\r\n ?(\r\n <>\r\n {/* */}\r\n ,\r\n headerLeft: (props) => ,\r\n headerTintColor: storedCredentials.theme == \"light\" ? 'blue' : '#e88804',\r\n animationEnabled: false,\r\n freezeOnBlur: true,\r\n\r\n \r\n }}\r\n \r\n >\r\n {rootStackProps => }\r\n \r\n \r\n {rootStackProps => }\r\n \r\n {/* */}\r\n \r\n {props => }\r\n \r\n {/* */}\r\n \r\n {props=> }\r\n \r\n >\r\n \r\n ):(\r\n <>\r\n {/* */}\r\n \r\n {props=> }\r\n \r\n {/* */}\r\n \r\n {props=> }\r\n \r\n \r\n >\r\n )}\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n\r\n // return (\r\n // \r\n // {({storedCredentials})=> (\r\n // \r\n // \r\n // {storedCredentials\r\n // ?(\r\n // <>\r\n\r\n // \r\n // \r\n // \r\n // \r\n // >\r\n // ):(\r\n // <>\r\n // \r\n // {/* */}\r\n // \r\n // >\r\n // )}\r\n \r\n // \r\n // \r\n // )}\r\n // \r\n // )\r\n};\r\n\r\nexport default RootStack;","import React, {useContext, useState, useEffect} from 'react'\r\nimport { View, Text, TouchableOpacity } from 'react-native';\r\nimport { NavigationContainer } from '@react-navigation/native';\r\nimport AsyncStorage from \"@react-native-async-storage/async-storage\";\r\nimport { createBottomTabNavigator } from '@react-navigation/bottom-tabs';\r\nimport { CredentialsContext } from '../components/CredentialsContext';\r\nimport useWebSocket from 'react-native-use-websocket';\r\n\r\nimport RootStack from './RootStack';\r\nimport SenariosScreen from '../screens/SenariosScreen';\r\n\r\nimport { EnglishStrings } from '../strings/English';\r\nimport { PersianStrings } from '../strings/Persian';\r\nimport { ArabicStrings } from '../strings/Arabic';\r\nimport BoldStyledText from '../components/BoldStyledText';\r\n\r\nimport { AntDesign } from '@expo/vector-icons'; \r\n\r\nconst Tab = createBottomTabNavigator();\r\n\r\nconst BottomTabBar = ({state, descriptors, navigation}) => {\r\n return(\r\n \r\n {state.routes.map((route, index) => {\r\n const { options } = descriptors[route.key];\r\n const label = \r\n options.tabBarLable !== undefined\r\n ? options.tabBarLable\r\n : options.title !== undefined\r\n ? options.title\r\n : route.name\r\n const isFocused = state.index === index;\r\n\r\n const onPress = () => {\r\n const event = navigation.emit({\r\n type: 'tabPress',\r\n target: route.key,\r\n canPreventDefault: true\r\n });\r\n if(!isFocused && !event.defaultPrevented) {\r\n navigation.navigate({ name: route.name, merge: true });\r\n }\r\n }\r\n \r\n const onLongPress = () => {\r\n navigation.emit({\r\n type: 'tabLongPress',\r\n target: route.key,\r\n })\r\n }\r\n\r\n return (\r\n \r\n \r\n {label}\r\n \r\n \r\n )\r\n })}\r\n\r\n \r\n )\r\n}\r\n\r\nconst BottomTabNav = props => {\r\n const {storedCredentials, setStoredCredentials} = useContext(CredentialsContext);\r\n\r\n const [isTokenValidated, setIsTokenValidated] = useState(true)\r\n const [token, setToken] = useState('')\r\n\r\n const [selectedModulesHelper, setSelectedModulesHelper] = useState(0)\r\n\r\n const welcomeMsg = {\r\n CTY: 'mc',\r\n DID: storedCredentials.userPhoneNumber,\r\n }\r\n// const { sendMessage, lastJsonMessage, lastMessage, readyState } = useWebSocket('ws://185.231.115.232:5050', { \r\n const { sendMessage, lastJsonMessage, lastMessage, readyState } = useWebSocket('ws://185.231.115.232:5001', { \r\n share: true,\r\n onOpen: () => {\r\n sendMessage(JSON.stringify(welcomeMsg))\r\n // console.log('connected from BTN')\r\n },\r\n // onOpen: () => {\r\n // const d = new Date();\r\n // let time = d.getTime();\r\n // time = Math.floor(time/1000).toString() + envVars.SECRET\r\n // const salt = bcryptjs.genSaltSync(10);\r\n // const hash = bcryptjs.hashSync(time, salt);\r\n // setToken(hash)\r\n\r\n // const welcomeMsg = {\r\n // CTY: 'mc',\r\n // DID: storedCredentials.userPhoneNumber,\r\n // token: hash\r\n // }\r\n // sendMessage(JSON.stringify(welcomeMsg))\r\n // },\r\n retryOnError: true,\r\n reconnectAttempts: 15,\r\n shouldReconnect: (CloseEvent) => true,\r\n })\r\n\r\n useEffect(()=> {\r\n if(!storedCredentials.senarios){\r\n const updatedStoredCredentials = {...storedCredentials, ...{senarios: []}}\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials) \r\n // setSelectedRoomsHelper(selectedModulesHelper - 1)\r\n \r\n NetInfo.fetch().then(state=> {\r\n if(state.isConnected){\r\n const url = envVars.SERVER_URL + envVars.SERVER_PORT + '/users/updateUserInfo';\r\n const credentials = {\r\n userPhoneNumber: storedCredentials.userPhoneNumber,\r\n data: {newSenario: updatedStoredCredentials.senarios} \r\n }\r\n axios.post(url, credentials)\r\n .catch(err=> {console.log(err);})\r\n }\r\n })\r\n }).catch(err=> {console.log(err);})\r\n }\r\n }, [])\r\n useEffect(()=> {\r\n // console.log('lastMSGfromRootStack: ', lastMessage.data)\r\n if(lastMessage.data == 'token validated!'){\r\n setIsTokenValidated(true)\r\n\r\n AsyncStorage.getItem('flowerCribCredentials').then((storedData)=> {\r\n storedData = JSON.parse(storedData);\r\n storedData = {...storedData, ...{token: token}}\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(storedData));\r\n \r\n })\r\n .catch((err) => console.log(err))\r\n } \r\n }, [lastMessage])\r\n\r\n const strings = () => {\r\n if(storedCredentials.language == 'English') {\r\n return EnglishStrings\r\n } else if(storedCredentials.language == 'Arabic') {\r\n return ArabicStrings\r\n } else return PersianStrings\r\n }\r\n\r\n return (\r\n \r\n }\r\n >\r\n {\r\n return (\r\n \r\n )\r\n }\r\n \r\n }} \r\n >\r\n {props=> }\r\n \r\n {\r\n return (\r\n \r\n )\r\n }}\r\n \r\n }\r\n >\r\n {props=> }\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default BottomTabNav;","import React from 'react';\r\n\r\nimport { useState, useContext, useEffect } from 'react';\r\nimport { StyleSheet, Text, View, KeyboardAvoidingView, TextInput, ScrollView, TouchableOpacity, Alert, ActivityIndicator, Platform } from 'react-native';\r\n\r\nimport { StatusBar } from 'expo-status-bar';\r\nimport * as Device from 'expo-device';\r\nimport * as Application from 'expo-application';\r\n\r\nimport axios from 'axios';\r\nimport uuid from 'react-native-uuid';\r\nimport CheckBox from '@react-native-community/checkbox';\r\n\r\nimport AsyncStorage from '@react-native-async-storage/async-storage';\r\nimport { CredentialsContext } from '../components/CredentialsContext';\r\nimport StyledText from '../components/StyledText';\r\nimport BoldStyledText from '../components/BoldStyledText';\r\nimport Card from '../components/Card';\r\n\r\nimport { EnglishStrings } from '../strings/English';\r\nimport { PersianStrings } from '../strings/Persian';\r\nimport { ArabicStrings } from '../strings/Arabic';\r\n\r\n\r\nimport envVars from '../env';\r\n\r\nconst TermsAndPoliciesScreen = props => {\r\n\r\n const [phoneNumber, setPhoneNumber] = useState([]);\r\n const [phoneNumberInputIsFocused , setPhoneNumberInputIsFocused] = useState(false);\r\n const [language, setLanguage] = useState('Persian')\r\n\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n \r\n const {storedCredentials, setStoredCredentials} = useContext(CredentialsContext);\r\n \r\n const strings = () => {\r\n if(language == 'English') {\r\n return EnglishStrings\r\n } else if(language == 'Arabic') {\r\n return ArabicStrings\r\n } else return PersianStrings\r\n }\r\n\r\n useEffect(()=> {\r\n // changeLanguage('Arabic')\r\n\r\n props.navigation.setOptions({\r\n headerStyle:{\r\n backgroundColor: 'transparent'\r\n },\r\n headerTransparent: true,\r\n headerTitle: '',\r\n headerLeftContainerStyle:{\r\n paddingLeft: 20\r\n },\r\n headerTintColor: 'white'\r\n });\r\n\r\n }, [])\r\n\r\n const changeLanguage = targetLanguage => {\r\n if(language != targetLanguage) {\r\n const updatedStoredCredentials = {...storedCredentials, ...{language: targetLanguage}}\r\n\r\n AsyncStorage.setItem('flowerCribCredentials', JSON.stringify(updatedStoredCredentials))\r\n .then(()=> {\r\n setStoredCredentials(updatedStoredCredentials)\r\n })\r\n .catch(err =>{\r\n console.log(err);\r\n }) \r\n \r\n setLanguage(targetLanguage)\r\n }\r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {strings().termsAndPolices} \r\n \r\n {strings().readTermsAndPolicies} \r\n \r\n \r\n\r\n \r\n changeLanguage('Persian')}>\r\n FA \r\n \r\n changeLanguage('English')}>\r\n EN \r\n \r\n changeLanguage('Arabic')}>\r\n AR \r\n \r\n \r\n \r\n\r\n \r\n به نام خدا\r\n سیاست حفظ حریم خصوصی برنامه خانه هوشمند Zitco\r\n \r\n تاریخ اجرایی: 11/6/1402\r\n \r\n 1. معرفی\r\n \r\n به برنامه خانه هوشمند Zit Kit خوش آمدید. (\"Zit Kit\") که توسط Zitco توسعه و ارائه شده است. در Zitco، ما متعهد به حفظ حریم خصوصی شما و محافظت از اطلاعات شخصی شما هستیم. این خطمشی رازداری نحوه جمعآوری، استفاده، افشای و محافظت از اطلاعات شما را هنگام استفاده از برنامه مشخص میکند. با استفاده از برنامه، با اقداماتی که در این خط مشی رازداری توضیح داده شده است، موافقت می کنید.\r\n \r\n \r\n 2. اطلاعاتی که ما جمع آوری می کنیم\r\n هنگام استفاده از برنامه ما ممکن است انواع اطلاعات زیر را جمع آوری کنیم: \r\n \r\n 2.1 اطلاعات شخصی:\r\n شماره تلفن: ما شماره تلفن شما را جمعآوری میکنیم تا کدهای تأیید را برای ثبت نام و ورود به سیستم برای شما ارسال کنیم و همچنین برای ارائه اعلانهای مهم مانند تخفیفها و بهروزرسانیها.\r\n 2.2 اطلاعات استفاده:\r\n اطلاعات دستگاه: برای بهبود عملکرد برنامه، ممکن است اطلاعاتی درباره دستگاه تلفن همراه شما، از جمله شناسه دستگاه منحصر به فرد، سیستم عامل، و نسخه برنامه جمع آوری کنیم. \r\n \r\n \r\n 3. چگونه از اطلاعات شما استفاده می کنیم\r\n ما از اطلاعات جمع آوری شده برای اهداف زیر استفاده می کنیم: \r\n •\tبه شما امکان دسترسی و استفاده از ویژگی های برنامه را می دهد.\r\n •\tبرای تایید هویت خود در طی مراحل ثبت نام و ورود به سیستم.\r\n •\tبرای برقراری ارتباط اطلاعات مهم، به روز رسانی ها و تخفیف های مربوط به محصولات و خدمات زیتکو.\r\n •\tبرای بهبود عملکرد و تجربه کاربری برنامه.\r\n \r\n 4. اشتراک گذاری و افشای داده ها\r\n در شرایط زیر ممکن است اطلاعات شما را با اشخاص ثالث به اشتراک بگذاریم:\r\n •\tبا رضایت شما: در صورت ارائه رضایت صریح برای اهداف خاص، ممکن است اطلاعات شما را با اشخاص ثالث به اشتراک بگذاریم.\r\n •\tبه دلایل قانونی: در صورت نیاز به قانون یا در پاسخ به درخواستهای قانونی، مانند احکام دادگاه یا احضاریه، ممکن است اطلاعات شما را فاش کنیم. \r\n\r\n 5. امنیت داده ها\r\n ما اقدامات معقولی را برای محافظت از اطلاعات شخصی شما در برابر دسترسی، افشا، تغییر یا تخریب غیرمجاز انجام می دهیم. با این حال، هیچ سیستم انتقال داده یا ذخیره سازی را نمی توان تضمین کرد که 100٪ ایمن است.\r\n\r\n 6. انتخاب های شما\r\n •\tاز طریق تنظیمات برنامه به اطلاعات خود دسترسی پیدا کرده و بهروزرسانی کنید. \r\n •\tحساب و داده های مرتبط خود را حذف کنید. \r\n •\tاز دریافت ارتباطات بازاریابی از ما انصراف دهید. \r\n\r\n 7. تغییرات در این سیاست حفظ حریم خصوصی\r\n ما ممکن است این خط مشی رازداری را برای منعکس کردن تغییرات در شیوه های داده های ما به روز کنیم. هر گونه تغییر با تاریخ اجرایی به روز شده در این صفحه پست می شود. ادامه استفاده شما از برنامه پس از ایجاد تغییرات به معنای پذیرش سیاست حفظ حریم خصوصی اصلاح شده توسط شما است. \r\n \r\n 8. تماس با ما\r\n اگر سؤال، نگرانی یا درخواستی در رابطه با این سیاست حفظ حریم خصوصی دارید، لطفاً با ما درتماس باشید. \r\n 05138426747, 05138469096, 09152452988 \r\n \r\n \r\n\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n\r\nlet Styles = { \r\n wrapper:{\r\n flex: 1,\r\n justifyContent: 'space-between',\r\n backgroundColor: '#F26B08',\r\n },\r\n contentWrapper:{\r\n\r\n },\r\n headerCard:{\r\n width:'100%',\r\n minHeight: 250,\r\n height:'20%',\r\n padding: 15,\r\n alignSelf:'center',\r\n backgroundColor:'white',\r\n shadowColor: 'black',\r\n shadowOffset: {width:0 , height:2},\r\n shadowRadius: 6,\r\n shadowOpacity: 0.26,\r\n elevation:20,\r\n borderBottomStartRadius: 60 ,\r\n padding: 20,\r\n height: '30%',\r\n backgroundColor: '#1C0947',\r\n flexDirection: 'row-reverse',\r\n justifyContent: 'space-between',\r\n alignItems: 'center'\r\n },\r\n cardHeaderText:{\r\n fontWeight:'400',\r\n fontSize:50,\r\n color: 'white',\r\n // alignSelf: 'flex-end'\r\n },\r\n descriptionOrSignin:{\r\n flexDirection:'row-reverse'\r\n },\r\n topSignInBtn:{\r\n backgroundColor: '#00008B',\r\n borderRadius: 10,\r\n paddingHorizontal: 5\r\n },\r\n cardHeaderTextDescription:{\r\n fontSize:20,\r\n fontWeight:'300',\r\n color:'white',\r\n // paddingVertical: 5,\r\n margin:5\r\n },\r\n textInputWrapper:{\r\n alignItems: 'flex-end',\r\n margin: '5%',\r\n marginTop: '10%',\r\n },\r\n textInput:{\r\n backgroundColor: 'white',\r\n padding: 15,\r\n marginTop: 10,\r\n marginBottom: 20,\r\n borderRadius: 40,\r\n shadowColor: 'black',\r\n shadowOffset: {width:0 , height:2},\r\n shadowRadius: 6,\r\n shadowOpacity: 0.26,\r\n elevation:20,\r\n fontSize: 25,\r\n },\r\n inputLabel:{\r\n fontSize: 20,\r\n fontWeight: '500',\r\n color: 'white'\r\n },\r\n InputArea:{\r\n width: '100%', \r\n },\r\n passwordWarningText:{\r\n color: 'red',\r\n\r\n },\r\n footer:{\r\n paddingVertical:10,\r\n // marginBottom: 10,\r\n },\r\n submitBtn:{\r\n backgroundColor: '#1C0947',\r\n alignItems: 'center',\r\n marginHorizontal:'5%',\r\n borderRadius: 40,\r\n minHeight: 60,\r\n justifyContent: 'center'\r\n },\r\n TermsAndPolicesBTN:{\r\n // backgroundColor: '#1C0947',\r\n // alignItems: 'center',\r\n\r\n marginHorizontal:'8%',\r\n borderRadius: 40,\r\n minHeight: 60,\r\n justifyContent: 'center'\r\n },\r\n submitBtnText:{\r\n fontSize: 35,\r\n fontWeight: '300',\r\n color:'white',\r\n padding:5\r\n },\r\n alreadySinedUpTextArea:{\r\n alignItems:'center',\r\n marginTop: '5%'\r\n },\r\n alreadySinedUpText:{\r\n color: '#6F8FEA'\r\n }\r\n}\r\n\r\n\r\n\r\nexport default TermsAndPoliciesScreen;","import React from 'react';\r\nimport { NavigationContainer } from '@react-navigation/native';\r\nimport { createStackNavigator } from '@react-navigation/stack';\r\n\r\nimport { CredentialsContext } from '../components/CredentialsContext';\r\n\r\nimport SignUp from '../screens/SignUp';\r\nimport ActivationWithSMS from '../screens/ActivationWithSMS';\r\nimport TermsAndPoliciesScreen from '../screens/TermsAndPoliciesSreen';\r\n\r\n\r\nconst Stack = createStackNavigator();\r\n\r\nconst NewUserNavigator = () =>{\r\n return (\r\n \r\n {({storedCredentials})=> (\r\n \r\n \r\n \r\n {props=> }\r\n \r\n\r\n \r\n {props=> }\r\n \r\n\r\n \r\n {props=> }\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n\r\n // return (\r\n // \r\n // {({storedCredentials})=> (\r\n // \r\n // \r\n // {storedCredentials\r\n // ?(\r\n // <>\r\n\r\n // \r\n // \r\n // \r\n // \r\n // >\r\n // ):(\r\n // <>\r\n // \r\n // {/* */}\r\n // \r\n // >\r\n // )}\r\n \r\n // \r\n // \r\n // )}\r\n // \r\n // )\r\n};\r\n\r\nexport default NewUserNavigator;","import { registerRootComponent } from 'expo';\n\nimport App from './App';\n\n// registerRootComponent calls AppRegistry.registerComponent('main', () => App);\n// It also ensures that whether you load the app in Expo Go or in a native build,\n// the environment is set up appropriately\nregisterRootComponent(App);\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { View, ActivityIndicator } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport RootStack from './navigators/RootStack';\nimport BottomTabNav from './navigators/BottomTabNav';\n\nimport { StatusBar } from 'expo-status-bar';\n\nimport AsyncStorage from '@react-native-async-storage/async-storage';\nimport { CredentialsContext } from './components/CredentialsContext';\nimport NewUserNavigator from './navigators/NewUserNavigator';\n\n// LogBox.ignoreAllLogs()\nexport default function App() { \n\n const [appReady, setAppReady] = useState(false);\n const [storedCredentials, setStoredCredentials] = useState(\"\");\n\n useEffect(() => {\n\n AsyncStorage.getItem('flowerCribCredentials')\n .then((result)=>{\n\n if(result !== null){\n setStoredCredentials(JSON.parse(result));\n setAppReady(true);\n } else {\n setStoredCredentials(null);\n setAppReady(true);\n }\n\n \n })\n .catch(err => console.log(err))\n\n }, []);\n\n const handleScreen = storedCredentials => {\n if(storedCredentials && storedCredentials.userRooms){\n // return \n return \n } else {\n return \n }\n }\n\n if(!appReady) {\n return (\n \n \n \n \n \n \n ) \n }\n return (\n \n \n {handleScreen(storedCredentials)}\n \n \n \n )\n \n\n};\n","export const EnglishStrings = {\r\n language: \"Language\",\r\n settings: \"Settings\",\r\n theme: 'Theme',\r\n light: 'Light',\r\n dark: 'Dark',\r\n places: \"Places\",\r\n updating: \"Updating...\",\r\n addingPlace: \"Add New Place\",\r\n manual: 'Manual',\r\n receive: 'Receive',\r\n roomName: 'Room Name:',\r\n add: 'Add',\r\n cancel: 'Cancel',\r\n fetchingReceiveCode: 'Fetching Receive Code...',\r\n enterThisCodeToGetPlaces: 'Enter this code to get place(s)',\r\n anErrorOccurredPleaseCheckInternetConnection: \"An error occurred, Please check your internet connection\",\r\n error: 'error',\r\n ok: 'OK',\r\n pleaseEnterRoomName: 'Please Enter Room Name.',\r\n pleaseEnterTargetUserCode: \"Please Enter Target User Code\",\r\n selectedRoomsSentSuccessfully: \"Selected rooms sent successfully\",\r\n userWithProvidedCodeDidNotFound: \"User with provided code did NOT found.\",\r\n receivePlace: 'Fetch Room',\r\n logOut: 'Log out',\r\n update: 'Update',\r\n anErrorOccurredWhileConnectingToDevicePleaseTryAgain: 'An error occurred while connecting to device, Please try again.',\r\n pleaseEnterRequestedInformations: 'Please enter requseted informations.',\r\n dataSusseccfullySentToDevicePleaseCloseAppAndConnectToInternet: 'Data Successfully sent to device. Please close application and connect to internet. Disappearing ZITCO_CONFIG is sign of compelete setup.',\r\n anErrorOccurredPleaseEnsureThatYouAreConnectedToDeviceNetwork: 'An Error occurred, Please Ensure thet you are connected to device WiFi network',\r\n errorInSocketConnection: 'Error in socket connection',\r\n deviceConfigurationIsNotPossibleWithWebApplication: 'Device configuration is not possible with web application',\r\n pleaseTurnOnLocationService: \"Please Turn on location service\",\r\n permissionDenied: \"Permission Denied\",\r\n plug: 'Plug',\r\n AC: 'A/C',\r\n switch: 'Switch',\r\n connecting:'Connecting...',\r\n addDevice: 'Add Device',\r\n putDeviceOnConfigMode: 'First, Put device on configuration mode.(The LED should be blinking)',\r\n nextStep: 'Next',\r\n connectZITCOCONFIGThroughtWifi: 'Connect ZITCO_CONFIG through WiFi',\r\n password: '(Password:123456789)',\r\n chooseNetworkAndEnterItsPassword: 'Choose Network name and enter password',\r\n placeholderPassword: 'Password',\r\n chooseNetwork: \"Choose Network...\" ,\r\n search: 'Search',\r\n saveModemInfo:'Save modem data',\r\n addingDevice: 'Adding Device...',\r\n addDevice: 'Add Device',\r\n edit: 'Edit',\r\n deny: 'Cancel',\r\n save: 'Save',\r\n signIn: 'Sign In',\r\n enterYourPhoneNumber: 'Enter Your Phone number',\r\n phoneNumber: 'Phone Number:',\r\n sendCode: 'Send Code',\r\n serverInternalError: 'Server Internal Error',\r\n textMessage: 'Text Message',\r\n activationWithTextMessage:'Activation With Text Message',\r\n activationCode: 'Activation Code:',\r\n activationCodeSuccessfullySentTo: 'Activation Code Successfully sent To:',\r\n wrongCode: 'Entered code is incorrect',\r\n back: 'Back',\r\n offlineConfig: 'Activate through offline usage',\r\n home: 'Home',\r\n senarios: 'Senarios',\r\n addSenario: 'افزودن سناریو',\r\n senarioName: 'نام سناریو',\r\n pleaseUseAnUsedName: \"لطفا نام غیر تکراری انتخاب کنید.\",\r\n pleaseChooseASenarioName: 'لظفا یک نام برای سناریو انتخاب کنید.',\r\n thisSenarioNameAlreadyUsed: 'این نام برای سناریو دیگری انتخاب شده است، لطفا نام غیرتکراری وارد کنید.',\r\n delete: 'حذف',\r\n share: 'اشتراک گذاری',\r\n offlineUsage: 'کاربری آفلاین',\r\n toUseOfflineUsageYouShouldEnableWifi: 'برای استفاده از حالت آفلاین باید شبکه وای فای روشن باشد. (شما میتوانید تنظیمات مربوط به کاربری آفلاین را در صفحه تنظیمات تغییر دهید.)',\r\n requestForWifiPermission: 'درخواست دسترسی به فای وای',\r\n ZitkitNeedsThisPermissionToConnectToYourSmartSwitch: 'زیت کیت برای اتصال خودکار به کلید هوشمند نیاز به این دسترسی دارد.',\r\n notNow: 'فعلا نه',\r\n notAllowed: 'مجاز نیست',\r\n Allowed: 'مجاز است',\r\n searchForOfflineModule: 'جست و جو',\r\n toYouOfflineUsageYouShouldTurnOfflineUsageOnInSettings: 'برای استفاده از حالت کاربری آفلاین باید کاربری آفلاین را در تنظیمات فعال کنید.',\r\n termsAndPolices: 'قوانین',\r\n readTermsAndPolicies: 'مطالعه قوانین و شرایط استفاده',\r\n\r\n\r\n}","export const PersianStrings = {\r\n settings: \"تنظیمات\",\r\n language: \"زبان\",\r\n theme: 'رنگ پوسته',\r\n light: 'روشن',\r\n dark: 'تیره',\r\n places: \"مکان ها\",\r\n updating: 'درحال بروزرسانی...',\r\n addingPlace: 'افزودن مکان',\r\n manual: 'افزودن دستی',\r\n receive: 'دریافت مکان',\r\n roomName: 'نام مکان:',\r\n add: 'افزودن',\r\n cancel: 'انصراف',\r\n fetchingReceiveCode: 'درحال دریافت کد',\r\n enterThisCodeToGetPlaces: 'برای دریافت مکان این کد را وارد کنید.',\r\n anErrorOccurredPleaseCheckInternetConnection: \"خطایی رخ داده، از اتصالتان به اینترنت مطمئن شوید.\",\r\n error: 'خطا',\r\n ok: 'تایید',\r\n pleaseEnterRoomName: 'لطفا نام مکان را وارد کنید.',\r\n pleaseEnterTargetUserCode: \"لطفا کد کاربر مقصد را کامل وارد کنید.\",\r\n selectedRoomsSentSuccessfully: \"مکان های انتخاب شده با موفقیت ارسال شد.\",\r\n userWithProvidedCodeDidNotFound: \"کاربری با این کد پیدا نشد.\",\r\n receivePlace: 'دریافت مکان',\r\n logOut: 'خروج',\r\n update: 'بروزرسانی',\r\n anErrorOccurredWhileConnectingToDevicePleaseTryAgain: 'خطایی در اتصال با دستگاه ایجاد شده، لطفا دوباره امتحان کنید.',\r\n pleaseEnterRequestedInformations: 'لطفا اطلاعات درخواست شده را وارد کنید.',\r\n dataSusseccfullySentToDevicePleaseCloseAppAndConnectToInternet: 'اطلاعات با موفقیت برای دستگاه ارسال شد. نرم افزار را بسته و به اینترنت متصل شوید. ناپدید شدن شبکه ی zitco_config نشانه ی ثبت کامل دستگاه است.',\r\n anErrorOccurredPleaseEnsureThatYouAreConnectedToDeviceNetwork: 'خطایی رخ داده، از اتصال به شبکه دستگاه مطمئن شوید.',\r\n errorInSocketConnection: 'خطا در اتصال سوکت',\r\n deviceConfigurationIsNotPossibleWithWebApplication: 'ثبت دستگاه با نسخه وب امکان پذیر نمی باشد.',\r\n pleaseTurnOnLocationService: \"لطفا روشن بودن موقعیت مکانی تان را چک کنید.\",\r\n permissionDenied: \"عدم دسترسی\",\r\n plug: 'پریز',\r\n AC: 'تهویه',\r\n switch: 'کلید',\r\n connecting:'درحال اتصال...',\r\n addDevice: 'افزودن دستگاه',\r\n putDeviceOnConfigMode: 'ابتدا دستگاه را در حالت تنظیم قرار دهید.(چراغ روی دستگاه چشمک زن شود.)',\r\n nextStep: 'مرحله بعد',\r\n connectZITCOCONFIGThroughtWifi: 'از طریق وای فای به شبکه ZITCO_config متصل شوید.',\r\n password: '(رمز:123456789)',\r\n chooseNetworkAndEnterItsPassword: 'شبکه مورد نظر را انتخاب و پسورد آن را وارد کنید.',\r\n placeholderPassword: 'پسورد',\r\n chooseNetwork: \"انتخاب شبکه...\" ,\r\n search: 'جستوجو',\r\n saveModemInfo:'اطلاعات مودم را ذخیره کن.',\r\n addingDevice: 'درحال افزودن دستگاه',\r\n addDevice: 'ثبت',\r\n edit: 'ویرایش',\r\n deny: 'لغو',\r\n save: 'ذخیره',\r\n signIn: 'ورود',\r\n enterYourPhoneNumber: 'شماره موبایل خود را وارد کنید.',\r\n phoneNumber: 'شماره موبایل:',\r\n sendCode: 'دریافت پیامک',\r\n serverInternalError: 'خطا داخلی سرور',\r\n textMessage: 'پیامک',\r\n activationWithTextMessage:'فعالسازی با پیامک',\r\n activationCode: 'کد فعالسازی:',\r\n activationCodeSuccessfullySentTo: 'کد فعالسازی با موفیقت ارسال شد به:',\r\n wrongCode: 'کد وارد شده، اشتباه است.',\r\n back: 'بازگشت',\r\n offlineConfig: 'فعالسازی کاربری آفلاین',\r\n home: 'خانه',\r\n senarios: 'سناریو ها',\r\n addSenario: 'افزودن سناریو',\r\n senarioName: 'نام سناریو',\r\n pleaseUseAnUsedName: \"لطفا نام غیر تکراری انتخاب کنید.\",\r\n pleaseChooseASenarioName: 'لظفا یک نام برای سناریو انتخاب کنید.',\r\n thisSenarioNameAlreadyUsed: 'این نام برای سناریو دیگری انتخاب شده است، لطفا نام غیرتکراری وارد کنید.',\r\n delete: 'حذف',\r\n share: 'اشتراک گذاری',\r\n offlineUsage: 'کاربری آفلاین',\r\n toUseOfflineUsageYouShouldEnableWifi: 'برای استفاده از حالت آفلاین باید شبکه وای فای روشن باشد. (شما میتوانید تنظیمات مربوط به کاربری آفلاین را در صفحه تنظیمات تغییر دهید.)',\r\n requestForWifiPermission: 'درخواست دسترسی به فای وای',\r\n ZitkitNeedsThisPermissionToConnectToYourSmartSwitch: 'زیت کیت برای اتصال خودکار به کلید هوشمند نیاز به این دسترسی دارد.',\r\n notNow: 'فعلا نه',\r\n notAllowed: 'مجاز نیست',\r\n Allowed: 'مجاز است',\r\n searchForOfflineModule: 'جست و جو',\r\n toYouOfflineUsageYouShouldTurnOfflineUsageOnInSettings: 'برای استفاده از حالت کاربری آفلاین باید کاربری آفلاین را در تنظیمات فعال کنید.',\r\n termsAndPolices: 'قوانین',\r\n readTermsAndPolicies: 'مطالعه قوانین و شرایط استفاده',\r\n\r\n}","export const ArabicStrings = {\r\n language: \"اللغة\",\r\n settings: \"إعدادات\",\r\n theme: 'لون القشرة',\r\n light: 'ساطع',\r\n dark: 'مظلم',\r\n places: \"أماکن\",\r\n updating: \"جارٍ التحدیث...\",\r\n addingPlace: 'أضف الموقع',\r\n manual: 'إضافة یدویة',\r\n receive: 'احصل علی الموقع',\r\n roomName: 'اسم المکان',\r\n add: 'إضافه',\r\n cancel: 'الغإ',\r\n fetchingReceiveCode: 'جار الاستلام الرمز',\r\n enterThisCodeToGetPlaces: 'أدخل هذا الرمز للحصول علی الموقع.',\r\n anErrorOccurredPleaseCheckInternetConnection: \"حدث خطأ، تأکد من أنک متصل بلإنترنت.\",\r\n error: 'خطأ',\r\n ok: 'تأئید',\r\n pleaseEnterRoomName: 'الرجإ أدخل اسم المکان',\r\n pleaseEnterTargetUserCode: \"الرجإ أدخل رمز المستخدم بالکامل\",\r\n selectedRoomsSentSuccessfully: \"تم إرسال المواقع المختارة بنجاح\",\r\n userWithProvidedCodeDidNotFound: \"لم یتم العثور علی مستخدم بهذا الرمز\",\r\n receivePlace: 'احصل علی الموقع',\r\n logOut: 'خروج',\r\n update: 'تحدیث',\r\n anErrorOccurredWhileConnectingToDevicePleaseTryAgain: 'حدث خطا في الإتصال بالجهاز، یرجی المحاولة مرة أخری',\r\n pleaseEnterRequestedInformations: ' الرجاء إدخال المعلومات المطلوبة',\r\n dataSusseccfullySentToDevicePleaseCloseAppAndConnectToInternet: 'تم إرسال المعلومات إلى الجهاز بنجاح. أغلق البرنامج واتصل بالإنترنت. يعد اختفاء شبكة zitco_config علامة على التسجيل الكامل للجهاز.',\r\n anErrorOccurredPleaseEnsureThatYouAreConnectedToDeviceNetwork: 'حدث خطأ ، تأكد من أن الجهاز متصل بالشبكة.',\r\n errorInSocketConnection: 'خطأ في اتصال المقبس',\r\n deviceConfigurationIsNotPossibleWithWebApplication: 'لا يمكن تسجيل الجهاز بإصدار الويب',\r\n pleaseTurnOnLocationService: \"يرجى التحقق أن موقعک مفعل\",\r\n permissionDenied: \"عدم الاتصال\",\r\n plug: 'مَنفَذ کهربائی',\r\n AC: 'مکیف',\r\n switch: 'مفتاح',\r\n connecting:'جار استلام المعلومات',\r\n addDevice: 'اضافة الجهاز ',\r\n putDeviceOnConfigMode: 'اولا ، ضع الجهاز في وضع الإعداد (يجب أن يومض الضوء الموجود على الجهاز).',\r\n nextStep: 'المرحلة التالیة',\r\n connectZITCOCONFIGThroughtWifi: 'اتصل بشبكة ZITCO_config عبر Wi-Fi',\r\n password: '(الرمز:123456789)',\r\n chooseNetworkAndEnterItsPassword: 'حدد الشبكة المطلوبة وأدخل كلمة المرور الخاصة بها.',\r\n placeholderPassword: 'کلمة المرور',\r\n chooseNetwork: \"اختر شبکة...\" ,\r\n search: 'بحث',\r\n saveModemInfo:'سجل المعلومات المودم.',\r\n addingDevice: 'جار اضافة الجهاز',\r\n addDevice: 'سجل',\r\n edit: 'تعدیل',\r\n deny: 'الغأ',\r\n save: 'حفظ',\r\n signIn: 'الدخول',\r\n enterYourPhoneNumber: 'أدخل رقم هاتفك المحمول',\r\n phoneNumber: 'رقم التلیفون:',\r\n sendCode: 'استلام الرسالة نسیه',\r\n serverInternalError: 'خطأ فی شبکة الداخلی',\r\n textMessage: 'رسالة نصیّة',\r\n activationWithTextMessage:'تفعیل عن طریق الرسائل نصیّه',\r\n activationCode: 'رمز التفعیل:',\r\n activationCodeSuccessfullySentTo: 'تم إرسال رمز التفعیل بنجاح إلی:',\r\n wrongCode: 'الکود الذي تم إدخاله غیر صحیح',\r\n back: 'العودة',\r\n offlineConfig: 'فعالسازی کاربری آفلاین',\r\n home: 'خانه',\r\n senarios: 'سناریو ها',\r\n addSenario: 'افزودن سناریو',\r\n senarioName: 'نام سناریو',\r\n pleaseUseAnUsedName: \"لطفا نام غیر تکراری انتخاب کنید.\",\r\n pleaseChooseASenarioName: 'لظفا یک نام برای سناریو انتخاب کنید.',\r\n thisSenarioNameAlreadyUsed: 'این نام برای سناریو دیگری انتخاب شده است، لطفا نام غیرتکراری وارد کنید.',\r\n delete: 'حذف',\r\n share: 'اشتراک گذاری',\r\n offlineUsage: 'کاربری آفلاین',\r\n toUseOfflineUsageYouShouldEnableWifi: 'برای استفاده از حالت آفلاین باید شبکه وای فای روشن باشد. (شما میتوانید تنظیمات مربوط به کاربری آفلاین را در صفحه تنظیمات تغییر دهید.)',\r\n requestForWifiPermission: 'درخواست دسترسی به فای وای',\r\n ZitkitNeedsThisPermissionToConnectToYourSmartSwitch: 'زیت کیت برای اتصال خودکار به کلید هوشمند نیاز به این دسترسی دارد.',\r\n notNow: 'فعلا نه',\r\n notAllowed: 'مجاز نیست',\r\n Allowed: 'مجاز است',\r\n searchForOfflineModule: 'جست و جو',\r\n toYouOfflineUsageYouShouldTurnOfflineUsageOnInSettings: 'برای استفاده از حالت کاربری آفلاین باید کاربری آفلاین را در تنظیمات فعال کنید.',\r\n termsAndPolices: 'قوانین',\r\n readTermsAndPolicies: 'مطالعه قوانین و شرایط استفاده',\r\n\r\n\r\n \r\n}","import React from 'react';\r\nimport { View, StyleSheet, TouchableOpacity } from 'react-native';\r\n\r\nconst Card = props =>{\r\n return {props.children}\r\n};\r\n\r\nlet Styles = {\r\n card: {\r\n padding: 20,\r\n margin:10,\r\n backgroundColor: '#ffffff',\r\n shadowColor: 'black',\r\n shadowOffset: {width: 0, height:2},\r\n shadowRadius: 6,\r\n shadowOpacity: 0.26,\r\n elevation: 10,\r\n borderRadius: 7,\r\n },\r\n};\r\n// const styles = StyleSheet.create({\r\n// card: {\r\n// padding: 20,\r\n// margin:10,\r\n// backgroundColor: '#ffffff',\r\n// shadowColor: 'black',\r\n// shadowOffset: {width: 0, height:2},\r\n// shadowRadius: 6,\r\n// shadowOpacity: 0.26,\r\n// elevation: 10,\r\n// borderRadius: 15,\r\n// },\r\n// });\r\n\r\nexport default Card;"],"sourceRoot":""}