import * as DateUtils from "utils/DateUtils" export const defaultHomePage = '/dashboard' // ** Checks if an object is empty (returns boolean) export const isObjEmpty = obj => { if (obj === null || obj === undefined) { return true } return Object.keys(obj).length === 0 } // ** Returns K format from a number export const kFormatter = num => (num > 999 ? `${(num / 1000).toFixed(1)}k` : num) // ** Converts HTML to string export const htmlToString = html => html.replace(/<\/?[^>]+(>|$)/g, '') // ** Checks if the passed date is today const isToday = date => { const today = new Date() return ( /* eslint-disable operator-linebreak */ date.getDate() === today.getDate() && date.getMonth() === today.getMonth() && date.getFullYear() === today.getFullYear() /* eslint-enable */ ) } /** ** Format and return date in Humanize format ** Intl docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format ** Intl Constructor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat * @param {String} value date to format * @param {Object} formatting Intl object to format with */ export const formatDate = (value, formatting = {month: 'short', day: 'numeric', year: 'numeric'}) => { if (!value) return value return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value)) } // ** Returns short month of passed date export const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => { const date = new Date(value) let formatting = {month: 'short', day: 'numeric'} if (toTimeForCurrentDay && isToday(date)) { formatting = {hour: 'numeric', minute: 'numeric'} } return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value)) } /** ** Return if user is logged in ** This is completely up to you and how you want to store the token in your frontend application * ? e.g. If you are using cookies to store the application please update this function */ export const isUserLoggedIn = () => localStorage.getItem('userData') != null export const getUserData = () => JSON.parse(localStorage.getItem('userData')) export const isAdminLoggedIn = () =>{ if (localStorage.getItem('userData') != null){ return JSON.parse(localStorage.getItem('userData')).role === 'admin' } } export const isGLDLoggedIn = () =>{ if (localStorage.getItem('userData') != null){ return JSON.parse(localStorage.getItem('userData')).type === 'GLD' } } export const isINDLoggedIn = () =>{ if (localStorage.getItem('userData') != null){ return JSON.parse(localStorage.getItem('userData')).type === 'IND' } } export const isORGLoggedIn = () =>{ if (localStorage.getItem('userData') != null){ return JSON.parse(localStorage.getItem('userData')).type === 'ORG' } } export const isPrimaryLoggedIn = () =>{ if (localStorage.getItem('userData') != null){ return JSON.parse(localStorage.getItem('userData')).role === 'primary' } } export const isCreditorLoggedIn = () =>{ if (localStorage.getItem('userData') != null){ return JSON.parse(localStorage.getItem('userData')).creditor } } export const isDummyLoggedIn = () =>{ if (localStorage.getItem('userData') != null){ return JSON.parse(localStorage.getItem('userData')).role === 'dummy' } } /** ** This function is used for demo purpose route navigation ** In real app you won't need this function because your app will navigate to same route for each users regardless of ability ** Please note role field is just for showing purpose it's not used by anything in frontend ** We are checking role just for ease * ? NOTE: If you have different pages to navigate based on user ability then this function can be useful. However, you need to update it. * @param {String} userRole Role of user */ export const getHomeRouteForLoggedInUser = userRole => { if (userRole === 'admin') return defaultHomePage if (userRole === 'user') return defaultHomePage if (userRole === 'client') return '/access-control' return '/login' } // ** React Select Theme Colors export const selectThemeColors = theme => ({ ...theme, colors: { ...theme.colors, primary25: '#7367f01a', // for option hover bg-color primary: '#7367f0', // for selected option bg-color neutral10: '#008a9a', // for tags bg-color neutral20: '#ededed', // for input border-color neutral30: '#ededed' // for input hover border-color } }) export const momentMinuteDiff = (date1, date2) => { return moment.duration(moment(new Date(date1)).diff(moment(new Date(date2)))).asMinutes() } export const minuteDiff = (nowDate, createdAtDate) => { let diff = (nowDate.getTime() - new Date(createdAtDate)) / 1000 diff /= 60 return Math.abs(Math.ceil(diff)) } export const gazetteLength = (length,noOfPages) => { let countLength=0; if (noOfPages!==null){ let pages = noOfPages countLength = pages*18 }else{ countLength = length } return countLength+" cm" } export const getUserId = () =>{ if (localStorage.getItem('userData') != null){ return JSON.parse(localStorage.getItem('userData')).id } } export const isPasswordExpiry = () =>{ var date; if (localStorage.getItem('userData') != null){ date = JSON.parse(localStorage.getItem('userData')).passwordExpiryDate } if (date != null){ var currentDate = new Date(); var expirationDate = DateUtils.convertToDate(date); if (expirationDate < currentDate) { console.log(true) return true; // The date has expired } else { console.log(false) return false; // The date is still valid } }else{ return false; } }