diff --git a/package.json b/package.json
index 0e3828b..fb98f93 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,7 @@
"node-sass": "^5.0.0",
"prop-types": "^15.7.2",
"react": "^17.0.1",
+ "react-device-detect": "^1.17.0",
"react-dom": "^17.0.1",
"react-router-dom": "^5.2.0",
"react-scripts": "^4.0.3",
diff --git a/src/contexts/common/DeviceInfoContext.js b/src/contexts/common/DeviceInfoContext.js
index e2207bb..3b578a4 100644
--- a/src/contexts/common/DeviceInfoContext.js
+++ b/src/contexts/common/DeviceInfoContext.js
@@ -2,12 +2,13 @@ import React from 'react';
import PropTypes from 'prop-types';
import { LoadingScreen } from 'components/index';
import { validate, v4 } from 'uuid';
-
+import { deviceDetect } from 'react-device-detect';
export const DeviceInfoContext = React.createContext();
export const DeviceInfoProvider = (props) => {
const [deviceUUID, setDeviceUUID] = React.useState();
+ const [deviceInfo, setDeviceInfo] = React.useState();
React.useEffect(() => {
const string = window.localStorage.getItem('uuid');
if (!validate(string)) {
@@ -16,11 +17,12 @@ export const DeviceInfoProvider = (props) => {
setDeviceUUID(newUUID);
}
else setDeviceUUID(string);
+ setDeviceInfo(deviceDetect());
}, []);
- if (deviceUUID === undefined) return ;
+ if (deviceUUID === undefined || deviceInfo === undefined) return ;
- return {props.children};
+ return {props.children};
};
DeviceInfoProvider.propTypes = {
diff --git a/src/views/common/Login/Login.js b/src/views/common/Login/Login.js
index 930dfac..7c96adb 100644
--- a/src/views/common/Login/Login.js
+++ b/src/views/common/Login/Login.js
@@ -4,12 +4,11 @@
import React, { useState, useContext, useCallback } from 'react';
import { Link } from 'react-router-dom';
import { TextField, Paper, makeStyles, Typography, Button, Box, Grid } from '@material-ui/core';
-import { LoginContext } from 'contexts';
+import { LoginContext, DeviceInfoContext } from 'contexts';
import { notify } from 'components';
import { DevModeConfig } from 'configurations';
import { API, useKeyPress, TextHelper } from 'helpers';
-
const useStyles = makeStyles(theme => ({
'@global': {
body: {
@@ -49,21 +48,27 @@ export const Login = () => {
const [emailId, setEmailId] = useState('');
const [password, setPassword] = useState('');
const { devMode, loginStatus, setAccessToken } = useContext(LoginContext);
+ const { deviceUUID, deviceName } = useContext(DeviceInfoContext);
- const performLogin = useCallback(() => {
+ const performLogin = useCallback(async () => {
if (DevModeConfig.bypassBackend) {
setAccessToken('dummyToken');
} else {
let details = {
- username: (devMode ? (DevModeConfig.devDetails !== undefined ? DevModeConfig.devDetails.user : '') : emailId),
- password: (devMode ? (DevModeConfig.devDetails !== undefined ? DevModeConfig.devDetails.password : '') : password)
+ emailId: (devMode ? (DevModeConfig.devDetails !== undefined ? DevModeConfig.devDetails.user : '') : emailId),
+ password: (devMode ? (DevModeConfig.devDetails !== undefined ? DevModeConfig.devDetails.password : '') : password),
+ deviceData: {
+ deviceType: 'WEB',
+ deviceName: deviceName,
+ deviceUUID: deviceUUID
+ }
};
- let apiResponse = API.login(details);
+ let apiResponse = await API.login(details);
if (apiResponse.success) {
setAccessToken(apiResponse.data);
}
}
- }, [devMode, emailId, password, setAccessToken]);
+ }, [devMode, emailId, password, setAccessToken, deviceUUID, deviceName]);
const validationCheck = useCallback(() => {
if (devMode) {