{"version":3,"sources":["mixins/chartjs.js","utils/axiosMock.js","utils/mock.js","mock/accountMock.js","mock/searchMock.js","mock/notificationsMock.js","mock/reportsMock.js","mock/managementMock.js","mock/chatMock.js","mock/kanbanMock.js","mock/mailMock.js","mock/projectMock.js","mock/socialMock.js","serviceWorker.js","reducers/accountReducer.js","actions/notificationsActions.js","reducers/notificationsReducer.js","utils/objFromArray.js","reducers/chatReducer.js","actions/chatActions.js","reducers/mailReducer.js","actions/mailActions.js","reducers/queueReducer.js","reducers/kanbanReducer.js","actions/kanbanActions.js","reducers/organisationReducer.js","reducers/wikiReducer.js","reducers/projectReducer.js","reducers/index.js","store/index.js","components/SplashScreen.js","components/Auth.js","components/GoogleAnalytics.js","components/ScrollReset.js","theme/shadows.js","theme/index.js","theme/typography.js","layouts/DashboardLayout/NavBar/NavItem.js","layouts/DashboardLayout/NavBar/index.js","layouts/DashboardLayout/TopBar/Account.js","layouts/DashboardLayout/TopBar/Notifications.js","layouts/DashboardLayout/TopBar/Settings.js","layouts/DashboardLayout/TopBar/TicketAssign.js","layouts/DashboardLayout/TopBar/index.js","layouts/DashboardLayout/index.js","layouts/CustomerPortalLayout/TopBar/Account.js","layouts/CustomerPortalLayout/TopBar/Notifications.js","layouts/CustomerPortalLayout/TopBar/Settings.js","layouts/CustomerPortalLayout/TopBar/index.js","layouts/CustomerPortalLayout/NavBar/NavItem.js","layouts/CustomerPortalLayout/NavBar/index.js","layouts/CustomerPortalLayout/index.js","layouts/ExternalSupportPortalLayout/TopBar/Account.js","layouts/ExternalSupportPortalLayout/TopBar/index.js","layouts/ExternalSupportPortalLayout/NavBar/NavItem.js","layouts/ExternalSupportPortalLayout/NavBar/index.js","layouts/ExternalSupportPortalLayout/index.js","components/NewsLoginNotification.js","layouts/NewsPortalLayout/TopBar/index.js","layouts/NewsPortalLayout/NavBar/NavItem.js","layouts/NewsPortalLayout/NavBar/index.js","layouts/NewsPortalLayout/index.js","layouts/MenuLayout/TopBar/index.js","layouts/MenuLayout/index.js","layouts/MainLayout/TopBar.js","layouts/MainLayout/index.js","components/LoadingScreen.js","components/AuthGuard.js","components/GuestGuard.js","Routes.js","App.js","eventHandler.js","index.js","actions/wikiActions.js","hooks/useSettings.js","config/index.js","utils/axios.js","utils/useQuery.js","actions/organisationActions.js","utils/useLocalStorage.js","context/SettingsContext.js","utils/settings.js","actions/projectActions.js","constants/index.js","actions/accountActions.js","utils/analytics.js","components/Page.js","views/queues/QueueView/QueueList/Toolbar.js","views/queues/QueueView/QueueList/index.js","views/queues/QueueView/QueueList/QueueItem.js","components/Logo.js","actions/queueActions.js","views/queues/QueueView/QueueEditNew.js","services/authService.js","components/OCLogo.js","components/EdgePOSLogo.js","views/auth/LoginView/LoginForm.js","views/auth/LoginView/index.js","authProvider.js"],"names":["Chart","helpers","extend","elements","Rectangle","prototype","draw","left","right","top","bottom","signX","signY","borderSkipped","radius","ctx","this","_chart","vm","_view","borderWidth","cornerRadius","config","options","horizontal","base","x","y","height","width","barSize","Math","min","abs","halfStroke","borderLeft","borderRight","borderTop","borderBottom","beginPath","fillStyle","backgroundColor","strokeStyle","borderColor","lineWidth","corners","startCorner","indexOf","cornerAt","index","corner","moveTo","i","nextCornerId","floor","xTl","xTr","yTl","yTr","xBl","xBr","yBl","yBr","lineTo","quadraticCurveTo","fill","stroke","instance","axios","create","AxiosMockAdapter","delayResponse","db","user","id","avatar","position","canHire","country","email","username","password","firstName","isPublic","lastName","phoneNumber","role","state","timezone","mock","onPost","reply","JSON","parse","data","message","accessToken","jwt","sign","expiresIn","onGet","Authorization","headers","split","verify","error","request","update","_","assign","settings","subscription","name","price","currency","proposalsLeft","templatesLeft","invitesLeft","adsLeft","hasAnalytics","hasEmailAlerts","Promise","resolve","setTimeout","results","title","description","notifications","type","createdAt","moment","subtract","toDate","getTime","referrals","color","colors","blueGrey","initials","value","cyan","indigo","red","orange","blue","products","uuidv4","image","subscriptions","progress","activities","customer","earnings","datasets","labels","orders","ref","items","status","projects","author","technologies","tasks","deadline","add","members","customers","spent","isProspect","isReturning","acceptsMarketing","updatedAt","location","fullName","phone","zipCode","address1","address2","creditCard","autoCC","verified","vat","balance","emails","invoices","date","paymentMethod","logs","method","route","desc","IP","isAvailable","isShippable","inventoryType","quantity","variants","category","attributes","payment","total","order","promoCode","address","city","cuantity","billing","amount","invoice","dueDate","issueDate","company","taxId","subtotal","taxes","contacts","isActive","lastActivity","threads","key","messages","body","contentType","senderId","participantIds","unreadCount","threadKey","params","thread","find","_thread","userId","otherUser","contact","otherUserId","board","lists","cardIds","cards","attachments","checklists","checkItems","comments","cardId","memberId","cover","due","isSubscribed","listId","memberIds","list","_list","map","filter","card","reject","_card","sourceList","pull","destinationList","splice","_cardId","comment","checklist","checklistId","_checklist","checkItem","checkItemId","_checkItem","totalCount","green","mails","folder","isUnread","isStarred","isImportant","labelIds","subject","from","to","systemLabel","customLabel","label","_label","mail","includes","filterMails","mailId","_mail","statistics","payout","visitors","watching","media","technology","isLiked","likes","rating","subscribers","todos","done","project","active","endDate","bio","brief","tags","files","url","mimeType","size","commonContacts","connectedStatus","profileProgress","quote","currentJob","previousJob","currentCity","originCity","posts","liked","reviews","reviewer","pricePerHour","hours","connections","common","isLocalhost","Boolean","window","hostname","match","protocol","registerValidSW","swUrl","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","controller","console","log","onUpdate","onSuccess","catch","initialState","isAdmin","accountReducer","action","LOGIN_REQUEST","produce","draft","LOGIN_SUCCESS","payload","LOGIN_FAILURE","LOGOUT","SILENT_LOGIN","UPDATE_PROFILE","localStorage","setItem","stringify","UPDATE_AVATAR","avatarURL","getNotifications","get","dispatch","response","notificationsReducer","objFromArray","arr","reduce","accumulator","current","byId","allIds","byKey","allKeys","sidebarOpen","chatReducer","Object","keys","push","newMessageOpen","mailReducer","tickets","allColumns","allTickets","recordCount","parserErrors","queues","queueReducer","GET_QUEUES","GET_TICKETS","columns","searchId","GET_CUSTOMER_TICKETS","GET_EXTERNAL_SUPPORT_TICKETS","GET_TICKET","ticket","OPEN_SIDEBAR","CLOSE_SIDEBAR","OPEN_NEW_MESSAGE","CLOSE_NEW_MESSAGE","isLoaded","kanbanReducer","merge","omit","sourceListId","allCustomers","organisationReducer","GET_ALL","GET_CUSTOMERS","RESET","currentNode","nodes","flatNodes","articles","wikiReducer","SET_NODES","SET_FLAT_NODES","APPEND_NODE","SET_ARTICLE","projectReducer","GET_PROJECT","rootReducer","combineReducers","account","chat","queue","kanban","organisation","form","formReducer","wiki","loggerMiddleware","createLogger","useStyles","makeStyles","theme","root","alignItems","palette","background","default","display","flexDirection","justifyContent","padding","spacing","zIndex","logo","maxWidth","SlashScreen","classes","className","Box","mb","Logo","CircularProgress","Auth","children","useDispatch","useState","isLoading","setLoading","useEffect","authService","setAxiosInterceptors","setDefaults","isAuthenticated","loginInWithToken","setUserData","logout","initAuth","SplashScreen","GA_MEASUREMENT_ID","process","REACT_APP_GA_MEASUREMENT_ID","GoogleAnalytics","Helmet","async","src","ScrollReset","useLocation","scrollTo","pathname","softShadows","strongShadows","baseConfig","direction","typography","h1","fontWeight","fontSize","letterSpacing","h2","h3","h4","h5","h6","overline","overrides","MuiLinearProgress","borderRadius","overflow","MuiListItemIcon","minWidth","MuiChip","themeConfigs","THEMES","LIGHT","MuiInputBase","input","opacity","white","dark","calendar","paper","primary","main","secondary","text","shadows","ONE_DARK","hover","selected","disabled","disabledBackground","focus","UNICORN","FOREST","createTheme","themeConfig","warn","Error","createMuiTheme","responsiveFontSizes","item","paddingTop","paddingBottom","itemLeaf","button","textTransform","buttonLeaf","fontWeightRegular","fontWeightMedium","icon","marginRight","NavItem","href","depth","Icon","openProp","open","Info","info","exact","rest","setOpen","paddingLeft","style","ListItem","clsx","disableGutters","Button","onClick","prevOpen","Collapse","in","activeClassName","component","RouterLink","defaultProps","renderNavItems","navOpen","List","disablePadding","acc","matchPath","path","reduceChildRoutes","mobileDrawer","desktopDrawer","cursor","drawer","flexShrink","whiteSpace","drawerOpen","transition","transitions","easing","sharp","duration","enteringScreen","drawerClose","leavingScreen","overflowX","breakpoints","up","toolbar","mixins","NavBar","openMobile","onMobileClose","getItem","setNavOpen","checkNavOpen","addEventListener","removeEventListener","content","marginTop","suppressScrollX","Hidden","lgUp","p","subheader","QueuesIcon","UsersIcon","RaiseRequestIcon","ProjectIcon","TicketsIcon","ReportsIcon","DashboardIcon","MyDashboardIcon","CalendarIcon","BuildIcon","TimesheetIcon","WorkflowIcon","SecretIcon","CloudflareVideoIcon","MapIcon","SavedArticleIcon","ArticleIcon","navConfig","ListSubheader","disableSticky","Grid","container","justify","IconButton","dispatchEvent","Event","Drawer","anchor","onClose","variant","mdDown","popover","Account","history","useHistory","useRef","useSelector","enqueueSnackbar","useSnackbar","isOpen","handleClose","handleLogout","ButtonBase","Avatar","alt","smDown","Typography","Menu","anchorOrigin","vertical","keepMounted","PaperProps","getContentAnchorEl","anchorEl","MenuItem","contrastText","badge","Notifications","useTheme","loaded","setLoaded","interval","setInterval","clearInterval","Tooltip","Badge","badgeContent","invisible","portalSeen","length","SvgIcon","Popover","notification","listItem","divider","portalLink","put","handleClick","ListItemAvatar","ListItemText","portalTitle","primaryTypographyProps","portalDescription","Settings","useSettings","saveSettings","hideQueueInDetail","reverseCommentOrder","values","setValues","handleChange","field","mt","px","FormControlLabel","control","Switch","checked","edge","onChange","event","target","TextField","fullWidth","select","SelectProps","native","capitalCase","backdrop","tooltip","TicketAssign","backdropOpen","setBackdropOpen","questionOpen","setQuestionOpen","questionTitle","setQuestionTitle","questionMessage","setQuestionMessage","handleQuestionClose","answer","post","result","successful","Backdrop","Dialog","aria-labelledby","aria-describedby","DialogTitle","DialogContent","DialogContentText","DialogActions","autoFocus","boxShadow","minHeight","TopBar","onMobileNavOpen","searchValue","setSearchValue","AppBar","Toolbar","menuButton","ml","flexGrow","Autocomplete","freeSolo","disableClearable","undefined","option","summary","clearOnBlur","e","v","blur","searchPath","q","dir","search","renderInput","placeholder","InputProps","startAdornment","InputAdornment","userPermissions","wrapper","flex","contentContainer","DashboardLayout","isMobileNavOpen","setMobileNavOpen","toLowerCase","ticketId","substring","articleId","ShowAlert","showAlert","marginLeft","marginBottom","TicketIcon","ClosedTicketIcon","CreateTicketIcon","ActionRequiredIcon","hostingOnly","ReportIcon","actionRequired","setActionRequired","getActionRequired","isHostedOrganisation","CustomerPortalLayout","ExternalSupportPortalLayout","black","margin","outline","NewsLoginNotification","loginOpen","setLoginOpen","ignoreNewsLogin","setIgnoreNewsLogin","ignoreNewsLoginChanged","LoginView","Portal","NewsIcon","SavedIcon","NewsPortalLayout","startsWith","MenuLayout","link","APP_VERSION","Link","underline","Divider","MainLayout","LoadingScreen","NProgress","start","LinearProgress","AuthGuard","query","URLSearchParams","append","toString","GuestGuard","returnPath","delete","routesConfig","lazy","guard","layout","routes","Routes","renderRoutes","fallback","Guard","Fragment","Layout","Component","render","props","Quill","MarkdownShortcuts","createBrowserHistory","jss","plugins","jssPreset","rtl","createStyles","boxSizing","html","App","ThemeProvider","StylesProvider","utils","MomentUtils","maxSnack","msalInstance","handleMessage","port","ports","getAccessToken","token","postMessage","fetchToken","enableES5","store","preloadedState","middlewares","thunkMiddleware","ENABLE_REDUX_LOGGER","middlewareEnhancer","composeWithDevTools","applyMiddleware","enhancers","composedEnhancers","compose","createStore","configureStore","restoreSettings","ReactDOM","document","getElementById","eventHandler","URL","origin","fetch","ready","unregister","reload","checkValidServiceWorker","setNodes","getNodesCreator","setFlatNodes","getFlatNodesCreator","appendNode","node","setArticle","article","getArticleCreator","revision","closeSidebar","useContext","SettingsContext","API_BASE_URL","REACT_APP_API_PORT","defaults","baseURL","interceptors","use","useQuery","queryString","setQuery","QueryString","getAll","getCustomers","organisationId","reset","useLocalStorage","setValue","checkStorage","newValue","setStorage","useCallback","createContext","defaultSettings","SettingsProvider","currentSettings","setCurrentSettings","Provider","updatedSettings","mergedSettings","storeSettings","Consumer","storedData","err","getProject","login","loginWithEmailAndPassword","updateProfile","updateAvatar","track","gtag","pageview","Page","forwardRef","sendPageViewEvent","page_path","queueName","editQueueOpen","setEditQueueOpen","queueId","useParams","editQueueRef","handleEditQueueClose","mdUp","openSidebar","QueueEditNew","save","header","page","asAtDate","QueueList","recordsPerPage","rowsPerPage","setRowsPerPage","queuePage","setQueuePage","csvData","setCSVData","setSize","useLayoutEffect","updateSize","innerWidth","innerHeight","useWindowSize","windowHeight","tableRef","csvRef","selectedRow","setSelectedRow","colourDialogOpen","setColourDialogOpen","selectedColour","setSelectedColour","getPath","newPage","newSize","newQ","newOrder","newDir","newAsAtDate","useImperativeHandle","exportGrid","column","row","col","replace","priority","reporter","assignee","loggedTime","charAt","slice","click","getTickets","handleColourClose","colour","setRowColour","highlightRowColour","clearRowColour","hex","filename","TableContainer","Table","stickyHeader","line","TableHead","TableRow","TableCell","columnName","toUpperCase","columnClick","TableBody","currentTicket","QueueItem","TablePagination","rowsPerPageOptions","count","Number","onChangePage","onChangeRowsPerPage","textDecoration","cell","link2","getTo","showRightClickMenu","setShowRightClickMenu","React","setAnchorEl","getIcon","Icons","cellRightClicked","preventDefault","currentTarget","onContextMenu","typeIcon","priorityIcon","priorityColour","statusColour","textOverflow","createdDateTime","format","lastModifiedDateTime","resolvedDateTime","getColumnValue","getQueues","getTicketsContinue","searchString","getTicketContinue","getTicket","getCustomerTicketsContinue","all","orderBy","closed","watchedOnly","getCustomerTickets","getExternalSupportTickets","setName","setFilter","setOrderBy","orderByDirection","setOrderByDirection","setColumns","shownColumns","setShownColumns","orderByDesc","handleColumnChange","newColumns","handleColumnChooserClose","updateColumns","align","aria-label","res","originalConfig","_retry","loggedInUser","getLoggedInUser","RefreshAuth","btoa","refreshToken","setSession","givenName","jobTitle","surname","mobilePhone","setTicketTypes","setTicketPriorities","setTicketResolutionTypes","setCacheExpiry","removeItem","onRedirectNavigate","getBasicAccount","ticketTypes","expiry","ticketPriority","ticketResolutionTypes","getAccountByUsername","acquireTokenSilent","scopes","loginRequest","getDevopsToken","getAzureCalendarToken","isValidToken","decoded","jwtDecode","currentTime","Date","now","exp","OCLogo","EdgePOSLogo","LoginForm","onSubmitSuccess","initialValues","validationSchema","Yup","shape","max","required","onSubmit","setErrors","setStatus","setSubmitting","success","submit","errors","handleBlur","handleSubmit","isSubmitting","touched","noValidate","helperText","onBlur","FormHelperText","backButton","flexBasis","edgePosIcon","useMsal","loginPopup","loginResponse","userDetails","isEdgePOS","Container","Card","CardContent","my","itLogin","PublicClientApplication","auth","authority","clientId","cache","cacheLocation","ImplicitMSALAuthenticationProvider","MSALAuthenticationProviderOptions"],"mappings":"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","file":"static/js/main.eeca92b0.chunk.js","sourcesContent":["/* eslint-disable */\nimport { Chart } from 'react-chartjs-2';\n\n// ChartJS extension rounded bar chart\n// https://codepen.io/jedtrow/full/ygRYgo\nfunction draw() {\n const { ctx } = this._chart;\n const vm = this._view;\n let { borderWidth } = vm;\n\n let left;\n let right;\n let top;\n let bottom;\n let signX;\n let signY;\n let borderSkipped;\n let radius;\n\n // If radius is less than 0 or is large enough to cause drawing errors a max\n // radius is imposed. If cornerRadius is not defined set it to 0.\n let { cornerRadius } = this._chart.config.options;\n if (cornerRadius < 0) {\n cornerRadius = 0;\n }\n\n if (typeof cornerRadius === 'undefined') {\n cornerRadius = 0;\n }\n\n if (!vm.horizontal) {\n // bar\n left = vm.x - vm.width / 2;\n right = vm.x + vm.width / 2;\n top = vm.y;\n bottom = vm.base;\n signX = 1;\n signY = bottom > top ? 1 : -1;\n borderSkipped = vm.borderSkipped || 'bottom';\n } else {\n // horizontal bar\n left = vm.base;\n right = vm.x;\n top = vm.y - vm.height / 2;\n bottom = vm.y + vm.height / 2;\n signX = right > left ? 1 : -1;\n signY = 1;\n borderSkipped = vm.borderSkipped || 'left';\n }\n\n // Canvas doesn't allow us to stroke inside the width so we can\n // adjust the sizes to fit if we're setting a stroke on the line\n if (borderWidth) {\n // borderWidth shold be less than bar width and bar height.\n const barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n borderWidth = borderWidth > barSize ? barSize : borderWidth;\n const halfStroke = borderWidth / 2;\n // Adjust borderWidth when bar top position is near vm.base(zero).\n const borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n const borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n const borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n const borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n // not become a vertical line?\n if (borderLeft !== borderRight) {\n top = borderTop;\n bottom = borderBottom;\n }\n // not become a horizontal line?\n if (borderTop !== borderBottom) {\n left = borderLeft;\n right = borderRight;\n }\n }\n\n ctx.beginPath();\n ctx.fillStyle = vm.backgroundColor;\n ctx.strokeStyle = vm.borderColor;\n ctx.lineWidth = borderWidth;\n\n // Corner points, from bottom-left to bottom-right clockwise\n // | 1 2 |\n // | 0 3 |\n const corners = [[left, bottom], [left, top], [right, top], [right, bottom]];\n\n // Find first (starting) corner with fallback to 'bottom'\n const borders = ['bottom', 'left', 'top', 'right'];\n let startCorner = borders.indexOf(borderSkipped, 0);\n if (startCorner === -1) {\n startCorner = 0;\n }\n\n function cornerAt(index) {\n return corners[(startCorner + index) % 4];\n }\n\n // Draw rectangle from 'startCorner'\n let corner = cornerAt(0);\n ctx.moveTo(corner[0], corner[1]);\n\n for (let i = 1; i < 4; i += 1) {\n corner = cornerAt(i);\n let nextCornerId = i + 1;\n if (nextCornerId === 4) {\n nextCornerId = 0;\n }\n\n const width = corners[2][0] - corners[1][0];\n const height = corners[0][1] - corners[1][1];\n const x = corners[1][0];\n const y = corners[1][1];\n\n radius = cornerRadius;\n // Fix radius being too large\n if (radius > Math.abs(height) / 2) {\n radius = Math.floor(Math.abs(height) / 2);\n }\n if (radius > Math.abs(width) / 2) {\n radius = Math.floor(Math.abs(width) / 2);\n }\n\n if (height < 0) {\n // Negative values in a standard bar chart\n const xTl = x;\n const xTr = x + width;\n const yTl = y + height;\n const yTr = y + height;\n\n const xBl = x;\n const xBr = x + width;\n const yBl = y;\n const yBr = y;\n\n // Draw\n ctx.moveTo(xBl + radius, yBl);\n ctx.lineTo(xBr - radius, yBr);\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\n ctx.lineTo(xTr, yTr + radius);\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\n ctx.lineTo(xTl + radius, yTl);\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\n ctx.lineTo(xBl, yBl - radius);\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\n } else if (width < 0) {\n // Negative values in a horizontal bar chart\n const xTl = x + width;\n const xTr = x;\n const yTl = y;\n const yTr = y;\n\n const xBl = x + width;\n const xBr = x;\n const yBl = y + height;\n const yBr = y + height;\n\n // Draw\n ctx.moveTo(xBl + radius, yBl);\n ctx.lineTo(xBr - radius, yBr);\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\n ctx.lineTo(xTr, yTr + radius);\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\n ctx.lineTo(xTl + radius, yTl);\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\n ctx.lineTo(xBl, yBl - radius);\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\n } else {\n // Positive Value\n ctx.moveTo(x + radius, y);\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(\n x + width,\n y + height,\n x + width - radius,\n y + height\n );\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n }\n }\n\n ctx.fill();\n if (borderWidth) {\n ctx.stroke();\n }\n}\n\nChart.helpers.extend(Chart.elements.Rectangle.prototype, {\n draw\n});\n","import axios from 'axios';\n\nconst instance = axios.create();\n\nexport default instance;\n","import AxiosMockAdapter from 'axios-mock-adapter';\nimport axios from './axiosMock';\n\nconst instance = new AxiosMockAdapter(axios, { delayResponse: 0 });\n\nexport default instance;\n","import _ from 'lodash';\nimport jwt from 'jsonwebtoken';\nimport mock from 'src/utils/mock';\n\nconst JWT_SECRET = 'devias-top-secret-key';\nconst JWT_EXPIRES_IN = '2 days';\n\nconst db = {\n user: {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n position: 'Sales Manager',\n canHire: false,\n country: 'USA',\n email: 'katarina.smith@devias.io',\n username: 'admin',\n password: 'admin',\n firstName: 'Katarina',\n isPublic: true,\n lastName: 'Smith',\n phoneNumber: '+40 777666555',\n role: 'admin',\n state: 'New York',\n timezone: '4:32PM (GMT-4)'\n }\n};\n\nmock.onPost('/api/account/login').reply((config) => {\n const { email, password } = JSON.parse(config.data);\n\n if (email !== 'admin@devias.io' || password !== 'admin') {\n return [400, { message: 'Please check your email and password' }];\n }\n\n const { user } = db;\n\n const accessToken = jwt.sign(\n { id: user.id },\n JWT_SECRET,\n { expiresIn: JWT_EXPIRES_IN }\n );\n\n return [200, { user, accessToken }];\n});\n\nmock.onGet('/api/account/me').reply((config) => {\n const { Authorization } = config.headers;\n\n if (!Authorization) {\n return [401, { message: 'Authorization token missing' }];\n }\n\n try {\n const accessToken = Authorization.split(' ')[1];\n\n const { id } = jwt.verify(accessToken, JWT_SECRET);\n\n if (id !== db.user.id) {\n return [401, { message: 'Invalid authorization token' }];\n }\n\n return [200, { user: db.user }];\n } catch (error) {\n return [401, { message: 'Invalid authorization token' }];\n }\n});\n\nmock.onPost('/api/account/profile').reply((request) => {\n const { update } = JSON.parse(request.data);\n\n _.assign(db.user, update);\n\n return [200, { user: db.user }];\n});\n\nmock.onGet('/api/account/settings').reply(200, {\n settings: {}\n});\n\nmock.onGet('/api/account/subscription').reply(200, {\n subscription: {\n name: 'Freelancer',\n price: '5',\n currency: '$',\n proposalsLeft: 12,\n templatesLeft: 5,\n invitesLeft: 24,\n adsLeft: 10,\n hasAnalytics: true,\n hasEmailAlerts: true\n }\n});\n","import mock from 'src/utils/mock';\n\nmock.onGet('/api/search').reply(() => new Promise(((resolve) => {\n setTimeout(() => {\n resolve([200, {\n results: [\n {\n title: 'What does Algolia do?',\n description: 'Algolia broadly consists of two parts: search implementation and search analytics. We provide tools that make it easy for your developers...'\n },\n {\n title: 'Search as a feedback loop',\n description: 'To be clear, search doesn’t know the direction that your business should take. However, it can help you gather information on what your customers want...'\n },\n {\n title: 'What can Algolia do for my users?',\n description: 'Algolia provides your users with a fast and rich search experience. Your Algolia search interface can contain a search bar, filters, infinite scrolling...'\n }\n ]\n }]);\n }, 1500);\n})));\n","import moment from 'moment';\nimport mock from 'src/utils/mock';\n\nmock.onGet('/api/notifications').reply(200, {\n notifications: [\n {\n id: '5e8883f1b51cc1956a5a1ec0',\n title: 'Your order is placed',\n description: 'Dummy text',\n type: 'order_placed',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: '5e8883f7ed1486d665d8be1e',\n title: 'New message received',\n description: 'You have 32 unread messages',\n type: 'new_message',\n createdAt: moment()\n .subtract(1, 'day')\n .toDate()\n .getTime()\n },\n {\n id: '5e8883fca0e8612044248ecf',\n title: 'Your item is shipped',\n description: 'Dummy text',\n type: 'item_shipped',\n createdAt: moment()\n .subtract(3, 'days')\n .toDate()\n .getTime()\n },\n {\n id: '5e88840187f6b09b431bae68',\n title: 'New message received',\n description: 'You have 32 unread messages',\n type: 'new_message',\n createdAt: moment()\n .subtract(7, 'days')\n .toDate()\n .getTime()\n }\n ]\n});\n","import { v4 as uuidv4 } from 'uuid';\nimport moment from 'moment';\nimport { colors } from '@material-ui/core';\nimport mock from 'src/utils/mock';\n\nmock.onGet('/api/reports/top-referrals').reply(200, {\n referrals: [\n {\n color: colors.blueGrey['700'],\n name: 'GitHub',\n initials: 'GT',\n value: '53,032'\n },\n {\n color: colors.cyan['500'],\n name: 'Twitter',\n initials: 'TW',\n value: '39,551'\n },\n {\n color: colors.indigo[600],\n name: 'Hacker News',\n initials: 'HN',\n value: '23,150'\n },\n {\n color: colors.red['500'],\n name: 'Stack Overflow',\n initials: 'SO',\n value: '14,093'\n },\n {\n color: colors.orange['900'],\n name: 'Reddit.com',\n initials: 'RD',\n value: '7,251'\n },\n {\n color: colors.blueGrey['900'],\n name: 'Dev.to',\n initials: 'DE',\n value: '5,694'\n },\n {\n color: colors.blue['900'],\n name: 'Facebook',\n initials: 'FB',\n value: '3,643'\n },\n {\n color: colors.blueGrey['900'],\n name: 'Medium',\n initials: 'MD',\n value: '1,654'\n }\n ]\n});\n\nmock.onGet('/api/reports/profitable-products').reply(200, {\n products: [\n {\n id: uuidv4(),\n type: 'freelancer_basic',\n name: 'Freelancer Basic Subscription',\n image: '/static/images/products/product_freelancer.svg',\n subscriptions: '13,153',\n currency: '$',\n price: '5.00',\n progress: 93\n },\n {\n id: uuidv4(),\n type: 'freelancer_extra',\n name: 'Freelancer Extra Subscription',\n image: '/static/images/products/product_freelancer.svg',\n subscriptions: '10,300',\n currency: '$',\n price: '15.00',\n progress: 76\n },\n {\n id: uuidv4(),\n type: 'agency_basic',\n name: 'Agency Basic Subscription',\n image: '/static/images/products/product_agency.svg',\n subscriptions: '5,300',\n currency: '$',\n price: '25.00',\n progress: 60\n },\n {\n id: uuidv4(),\n type: 'enterprise_basic',\n name: 'Enterprise Basic Subscription',\n image: '/static/images/products/product_enterprise.svg',\n subscriptions: '1,203',\n currency: '$',\n price: '205.00',\n progress: 46\n },\n {\n id: uuidv4(),\n type: 'enterprise_extra',\n name: 'Enterprise Extra Subscription',\n image: '/static/images/products/product_enterprise.svg',\n subscriptions: '254',\n currency: '$',\n price: '500.00',\n progress: 41\n }\n ]\n});\n\nmock.onGet('/api/reports/customer-activity').reply(200, {\n activities: [\n {\n id: '5e89140bcc768199d1e0dc49',\n type: 'register',\n description: 'Created account',\n customer: {\n id: '5e887a62195cc5aef7e8ca5d',\n name: 'Ekaterina Tankova',\n avatar: '/static/images/avatars/avatar_2.png'\n },\n createdAt: moment()\n .subtract(23, 'minutes')\n .toDate()\n .getTime()\n },\n {\n id: '5e891411b0290b175166cd32',\n type: 'payment',\n description: 'Subscription Purchase',\n customer: {\n id: '5e887ac47eed253091be10cb',\n name: 'Cao Yu',\n avatar: '/static/images/avatars/avatar_3.png'\n },\n createdAt: moment()\n .subtract(56, 'minutes')\n .toDate()\n .getTime()\n },\n {\n id: '5e89141633dc5e52c923ef27',\n type: 'ticket_create',\n description: 'Submitted a ticket',\n customer: {\n id: '5e887b209c28ac3dd97f6db5',\n name: 'Alex Richardson',\n avatar: '/static/images/avatars/avatar_4.png'\n },\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: '5e89141bd975c7f33aee9f4b',\n type: 'payment',\n description: 'Subscription Purchase',\n customer: {\n id: '5e887b7602bdbc4dbb234b27',\n name: 'Anje Keizer',\n avatar: '/static/images/avatars/avatar_5.png'\n },\n createdAt: moment()\n .subtract(5, 'minutes')\n .toDate()\n .getTime()\n },\n {\n id: '5e891421d7945778863cf9ca',\n type: 'payment',\n description: 'Subscription Purchase',\n customer: {\n id: '5e86809283e28b96d2d38537',\n name: 'Katarina Smith',\n avatar: '/static/images/avatars/avatar_6.png'\n },\n createdAt: moment()\n .subtract(5, 'minutes')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/reports/earnings').reply(200, {\n earnings: {\n datasets: [\n {\n data: [56, 24, 20],\n backgroundColor: ['#3d72eb', '#4b9e86', '#b658f5']\n }\n ],\n labels: ['Subscriptions', 'Affiliate', 'Sales'],\n }\n});\n\nmock.onGet('/api/reports/latest-orders').reply(200, {\n orders: [\n {\n id: uuidv4(),\n ref: 'DEV1042',\n items: 7,\n value: '524.00',\n currency: '$',\n customer: {\n name: 'Ekaterina Tankova',\n email: 'ekaterina@devias.io'\n },\n status: 'pending',\n createdAt: moment()\n .subtract(7, 'minutes')\n .subtract(10, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n ref: 'DEV1041',\n items: 8,\n value: '693.00',\n currency: '$',\n customer: {\n name: 'Cao Yu',\n email: 'cao.yu@devias.io'\n },\n status: 'complete',\n createdAt: moment()\n .subtract(2, 'hours')\n .subtract(12, 'minutes')\n .subtract(50, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n ref: 'DEV1040',\n items: 4,\n value: '215.00',\n currency: '$',\n customer: {\n name: 'Alex Richardson',\n email: 'alex.richardson@devias.io'\n },\n status: 'rejected',\n createdAt: moment()\n .subtract(5, 'hours')\n .subtract(39, 'minutes')\n .subtract(12, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n ref: 'DEV1039',\n items: 1,\n value: '25.00',\n currency: '$',\n customer: {\n name: 'Anje Keizer',\n email: 'anje.keiser@devias.io'\n },\n status: 'pending',\n createdAt: moment()\n .subtract(5, 'hours')\n .subtract(46, 'minutes')\n .subtract(21, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n ref: 'DEV1038',\n items: 5,\n value: '535.00',\n currency: '$',\n customer: {\n name: 'Clarke Gillebert',\n email: 'clarke.gillebert@devias.io'\n },\n status: 'complete',\n createdAt: moment()\n .subtract(8, 'hours')\n .subtract(19, 'minutes')\n .subtract(54, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n ref: 'DEV1037',\n items: 2,\n value: '56.00',\n currency: '$',\n customer: {\n name: 'Merrile Burgett',\n email: 'merrile.burgett@devias.io'\n },\n status: 'complete',\n createdAt: moment()\n .subtract(1, 'days')\n .subtract(45, 'minutes')\n .subtract(12, 'seconds')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/reports/latest-projects').reply(200, {\n projects: [\n {\n id: uuidv4(),\n title: 'Mella Full Screen Slider',\n price: '12,500',\n currency: '$',\n author: {\n id: '5e887b7602bdbc4dbb234b27',\n name: 'Anje Keizer',\n avatar: '/static/images/avatars/avatar_5.png'\n },\n technologies: ['angular'],\n createdAt: moment()\n .subtract(2, 'hours')\n .subtract(34, 'minutes')\n .subtract(10, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n title: 'Dashboard Design',\n price: '15,750',\n currency: '$',\n author: {\n id: '5e887d0b3d090c1b8f162003',\n name: 'Emilee Simchenko',\n avatar: '/static/images/avatars/avatar_9.png'\n },\n technologies: ['sketch', 'html-css'],\n createdAt: moment()\n .subtract(10, 'hours')\n .subtract(56, 'minutes')\n .subtract(25, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n title: 'Ten80 Web Design',\n price: '15,750',\n currency: '$',\n author: {\n id: '5e88792be2d4cfb4bf0971d9',\n name: 'Elliott Stone',\n avatar: '/static/images/avatars/avatar_10.png'\n },\n technologies: ['react-js'],\n createdAt: moment()\n .subtract(1, 'days')\n .subtract(30, 'minutes')\n .subtract(50, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n title: 'Neura e-commerce UI Kit',\n price: '12,500',\n currency: '$',\n author: {\n id: '5e8877da9a65442b11551975',\n name: 'Shen Zhi',\n avatar: '/static/images/avatars/avatar_11.png'\n },\n technologies: ['vue-js'],\n createdAt: moment()\n .subtract(1, 'days')\n .subtract(4, 'minutes')\n .subtract(30, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n title: 'Administrator Dashboard',\n price: '15,750',\n currency: '$',\n author: {\n id: '5e887ac47eed253091be10cb',\n name: 'Cao Yu',\n avatar: '/static/images/avatars/avatar_3.png'\n },\n technologies: ['angular', 'figma'],\n createdAt: moment()\n .subtract(1, 'days')\n .subtract(11, 'minutes')\n .subtract(6, 'seconds')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/reports/tasks').reply(200, {\n tasks: [\n {\n id: uuidv4(),\n title: 'Update the API for the project',\n deadline: moment()\n .add(1, 'days')\n .add(1, 'hour')\n .toDate()\n .getTime(),\n members: [\n '/static/images/avatars/avatar_2.png',\n '/static/images/avatars/avatar_3.png',\n ]\n },\n {\n id: uuidv4(),\n title: 'Redesign the landing page',\n deadline: moment()\n .add(2, 'day')\n .add(1, 'hour')\n .toDate()\n .getTime(),\n members: [\n '/static/images/avatars/avatar_8.png',\n '/static/images/avatars/avatar_10.png',\n '/static/images/avatars/avatar_12.png'\n ]\n },\n {\n id: uuidv4(),\n title: 'Solve the bug for the showState',\n deadline: moment()\n .toDate()\n .getTime(),\n members: ['/static/images/avatars/avatar_7.png']\n },\n {\n id: uuidv4(),\n title: 'Release v1.0 Beta',\n deadline: null,\n members: [\n '/static/images/avatars/avatar_2.png',\n '/static/images/avatars/avatar_10.png']\n },\n {\n id: uuidv4(),\n title: 'GDPR Compliance',\n deadline: null,\n members: [\n '/static/images/avatars/avatar_5.png',\n '/static/images/avatars/avatar_2.png',\n '/static/images/avatars/avatar_6.png'\n ]\n },\n {\n id: uuidv4(),\n title: 'Redesign Landing Page',\n deadline: null,\n members: ['/static/images/avatars/avatar_8.png']\n }\n ]\n});\n","import { v4 as uuidv4 } from 'uuid';\nimport moment from 'moment';\nimport mock from 'src/utils/mock';\n\nmock.onGet('/api/management/customers').reply(200, {\n customers: [\n {\n id: '5e887a62195cc5aef7e8ca5d',\n name: 'Ekaterina Tankova',\n email: 'ekaterina.tankova@devias.io',\n avatar: '/static/images/avatars/avatar_2.png',\n spent: '500.00',\n currency: '$',\n orders: 1,\n isProspect: false,\n isReturning: false,\n acceptsMarketing: false,\n updatedAt: moment()\n .subtract(1, 'days')\n .toDate()\n .getTime(),\n location: 'West Virginia, USA'\n },\n {\n id: '5e887ac47eed253091be10cb',\n name: 'Cao Yu',\n email: 'cao.yu@devias.io',\n avatar: '/static/images/avatars/avatar_3.png',\n spent: '300.00',\n currency: '$',\n orders: 3,\n isProspect: false,\n isReturning: true,\n acceptsMarketing: true,\n updatedAt: moment()\n .subtract(1, 'days')\n .subtract(7, 'hours')\n .toDate()\n .getTime(),\n location: 'Bristow'\n },\n {\n id: '5e887b209c28ac3dd97f6db5',\n name: 'Alex Richardson',\n email: 'alex.richardson@devias.io',\n avatar: '/static/images/avatars/avatar_4.png',\n spent: '0.00',\n currency: '$',\n orders: 0,\n isProspect: true,\n isReturning: false,\n acceptsMarketing: true,\n updatedAt: moment()\n .subtract(2, 'days')\n .subtract(1, 'hours')\n .toDate()\n .getTime(),\n location: 'Georgia, USA'\n },\n {\n id: '5e887b7602bdbc4dbb234b27',\n name: 'Anje Keizer',\n email: 'anje.keizer@devias.io',\n avatar: '/static/images/avatars/avatar_5.png',\n spent: '5,600.00',\n currency: '$',\n orders: 6,\n isProspect: false,\n isReturning: false,\n acceptsMarketing: false,\n updatedAt: moment()\n .subtract(2, 'days')\n .subtract(4, 'hours')\n .toDate()\n .getTime(),\n location: 'Ohio, USA'\n },\n {\n id: '5e86809283e28b96d2d38537',\n name: 'Katarina Smith',\n email: 'katarina.smith@devias.io',\n avatar: '/static/images/avatars/avatar_6.png',\n spent: '500.00',\n currency: '$',\n orders: 1,\n isProspect: false,\n isReturning: true,\n acceptsMarketing: true,\n updatedAt: moment()\n .subtract(2, 'days')\n .subtract(11, 'hours')\n .toDate()\n .getTime(),\n location: 'Texas, USA'\n },\n {\n id: '5e86805e2bafd54f66cc95c3',\n name: 'Adam Denisov',\n email: 'adam.denisov@devias.io',\n avatar: '/static/images/avatars/avatar_7.png',\n spent: '0.00',\n currency: '$',\n orders: 0,\n isProspect: true,\n isReturning: false,\n acceptsMarketing: true,\n updatedAt: moment()\n .subtract(3, 'days')\n .subtract(7, 'hours')\n .toDate()\n .getTime(),\n location: 'California, USA'\n },\n {\n id: '5e887a1fbefd7938eea9c981',\n name: 'Miller Edwards',\n email: 'miller.edwards@devias.io',\n avatar: '/static/images/avatars/avatar_8.png',\n spent: '0.00',\n currency: '$',\n orders: 0,\n isProspect: true,\n isReturning: false,\n acceptsMarketing: false,\n updatedAt: moment()\n .subtract(4, 'days')\n .subtract(5, 'hours')\n .toDate()\n .getTime(),\n location: 'California, USA'\n },\n {\n id: '5e887d0b3d090c1b8f162003',\n name: 'Emilee Simchenko',\n email: 'emilee.simchenko@devias.io',\n avatar: '/static/images/avatars/avatar_9.png',\n spent: '100.00',\n currency: '$',\n orders: 4,\n isProspect: false,\n isReturning: false,\n acceptsMarketing: true,\n updatedAt: moment()\n .subtract(4, 'days')\n .subtract(15, 'hours')\n .toDate()\n .getTime(),\n location: 'Nevada, USA'\n },\n {\n id: '5e88792be2d4cfb4bf0971d9',\n name: 'Elliott Stone',\n email: 'elliott.stone@devias.io',\n avatar: '/static/images/avatars/avatar_10.png',\n spent: '1,000.00',\n currency: '$',\n orders: 2,\n isProspect: false,\n isReturning: true,\n acceptsMarketing: true,\n updatedAt: moment()\n .subtract(5, 'days')\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n location: 'Michigan, USA'\n },\n {\n id: '5e8877da9a65442b11551975',\n name: 'Shen Zhi',\n email: 'shen.zhi@devias.io',\n avatar: '/static/images/avatars/avatar_11.png',\n spent: '0.00',\n orders: 0,\n isProspect: true,\n isReturning: false,\n acceptsMarketing: true,\n updatedAt: moment()\n .subtract(6, 'days')\n .subtract(8, 'hours')\n .toDate()\n .getTime(),\n location: 'Utah, USA'\n },\n {\n id: '5e8680e60cba5019c5ca6fda',\n name: 'Merrile Burgett',\n email: 'merrile.burgett@devias.io',\n avatar: '/static/images/avatars/avatar_12.png',\n spent: '200.00',\n currency: '$',\n orders: 7,\n isProspect: false,\n isReturning: true,\n acceptsMarketing: false,\n updatedAt: moment()\n .subtract(9, 'days')\n .subtract(1, 'hours')\n .toDate()\n .getTime(),\n location: 'Utah, USA'\n }\n ]\n});\n\nmock.onGet('/api/management/customers/1').reply(200, {\n customer: {\n fullName: 'Ekaterina Tankova',\n email: 'ekaterina@devias.io',\n phone: '+55 748 327 439',\n state: 'Alabama',\n country: 'United States',\n zipCode: '240355',\n address1: 'Street John Wick, no. 7',\n address2: 'House #25',\n creditCard: '4142 **** **** **** ****',\n autoCC: false,\n verified: true,\n currency: '$',\n vat: 19,\n balance: 0\n }\n});\n\nmock.onGet('/api/management/customers/1/emails').reply(200, {\n emails: [\n {\n id: uuidv4(),\n description: 'Order confirmation',\n createdAt: moment()\n .subtract(3, 'days')\n .subtract(5, 'hours')\n .subtract(34, 'minutes')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n description: 'Order confirmation',\n createdAt: moment()\n .subtract(4, 'days')\n .subtract(11, 'hours')\n .subtract(49, 'minutes')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/management/customers/1/invoices').reply(200, {\n invoices: [\n {\n id: uuidv4(),\n date: moment()\n .toDate()\n .getTime(),\n description: 'Freelancer Subscription (12/05/2019 - 11/06/2019)',\n paymentMethod: 'Credit Card',\n value: '5.25',\n currency: '$',\n status: 'paid'\n },\n {\n id: uuidv4(),\n date: moment()\n .toDate()\n .getTime(),\n description: 'Freelancer Subscription (12/05/2019 - 11/06/2019)',\n paymentMethod: 'Credit Card',\n value: '5.25',\n currency: '$',\n status: 'paid'\n }\n ]\n});\n\nmock.onGet('/api/management/customers/1/logs').reply(200, {\n logs: [\n {\n id: uuidv4(),\n status: 200,\n method: 'POST',\n route: '/api/purchase',\n desc: 'Purchase',\n IP: '84.234.243.42',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(2, 'minutes')\n .subtract(56, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n status: 522,\n error: 'Invalid credit card',\n method: 'POST',\n route: '/api/purchase',\n desc: 'Purchase',\n IP: '84.234.243.42',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(2, 'minutes')\n .subtract(56, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n status: 200,\n method: 'DELETE',\n route: '/api/products/d65654e/remove',\n desc: 'Cart remove',\n IP: '84.234.243.42',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(8, 'minutes')\n .subtract(23, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n status: 200,\n method: 'GET',\n route: '/api/products/d65654e/add',\n desc: 'Cart add',\n IP: '84.234.243.42',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(20, 'minutes')\n .subtract(54, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n status: 200,\n method: 'GET',\n route: '/api/products/c85727f/add',\n desc: 'Cart add',\n IP: '84.234.243.42',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(34, 'minutes')\n .subtract(16, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n status: 200,\n method: 'GET',\n route: '/api/products/c85727f',\n desc: 'View product',\n IP: '84.234.243.42',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(54, 'minutes')\n .subtract(30, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n status: 200,\n method: 'GET',\n route: '/api/products',\n desc: 'Get products',\n IP: '84.234.243.42',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(56, 'minutes')\n .subtract(40, 'seconds')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n status: 200,\n method: 'POST',\n route: '/api/login',\n desc: 'Login',\n IP: '84.234.243.42',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(57, 'minutes')\n .subtract(5, 'seconds')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/management/products').reply(200, {\n products: [\n {\n id: uuidv4(),\n name: 'Charlie Tulip Dress',\n image: '',\n isAvailable: true,\n isShippable: false,\n inventoryType: 'in_stock',\n quantity: 85,\n variants: 2,\n category: 'dress',\n attributes: ['Cotton'],\n price: 23.99,\n currency: '$',\n createdAt: moment()\n .subtract(1, 'days')\n .toDate()\n .getTime(),\n updatedAt: moment()\n .subtract(6, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n name: 'Kate Leopard Dress',\n image: '',\n isAvailable: false,\n isShippable: true,\n inventoryType: 'out_of_stock',\n quantity: 0,\n variants: 1,\n category: 'dress',\n attributes: ['Cotton'],\n price: 95.00,\n currency: '$',\n createdAt: moment()\n .subtract(3, 'days')\n .toDate()\n .getTime(),\n updatedAt: moment()\n .subtract(2, 'days')\n .subtract(8, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n name: 'Layering Bracelets Collection',\n image: '',\n isAvailable: true,\n isShippable: false,\n inventoryType: 'in_stock',\n quantity: 48,\n variants: 5,\n category: 'jewelry',\n attributes: ['Variety of styles'],\n price: 155.00,\n currency: '$',\n createdAt: moment()\n .subtract(6, 'days')\n .toDate()\n .getTime(),\n updatedAt: moment()\n .subtract(1, 'days')\n .subtract(2, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: uuidv4(),\n name: 'Flared Sleeve Floral Blouse',\n image: '',\n isAvailable: false,\n isShippable: true,\n inventoryType: 'limited',\n quantity: 5,\n variants: 1,\n category: 'blouse',\n attributes: ['Polyester and Spandex'],\n price: 17.99,\n currency: '$',\n createdAt: moment()\n .subtract(12, 'days')\n .toDate()\n .getTime(),\n updatedAt: moment()\n .subtract(1, 'days')\n .subtract(7, 'hours')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/management/orders').reply(200, {\n orders: [\n {\n id: uuidv4(),\n createdAt: moment()\n .subtract(10, 'minutes')\n .toDate()\n .getTime(),\n customer: {\n name: 'Ekaterina Tankova'\n },\n payment: {\n ref: 'FAD103',\n method: 'CreditCard',\n total: '500.00',\n currency: '$',\n status: 'pending'\n },\n status: 'inactive'\n },\n {\n id: uuidv4(),\n createdAt: moment()\n .subtract(32, 'minutes')\n .subtract(23, 'seconds').toDate()\n .getTime(),\n customer: {\n name: 'Cao Yu'\n },\n payment: {\n ref: 'FAD102',\n method: 'CreditCard',\n total: '500.00',\n currency: '$',\n status: 'pending'\n },\n status: 'inactive'\n },\n {\n id: uuidv4(),\n createdAt: moment()\n .subtract(36, 'minutes')\n .subtract(51, 'seconds').toDate()\n .getTime(),\n customer: {\n name: 'Alex Richardson'\n },\n payment: {\n ref: 'FAD101',\n method: 'PayPal',\n total: '500.00',\n currency: '$',\n status: 'completed'\n },\n status: 'active'\n },\n {\n id: uuidv4(),\n createdAt: moment()\n .subtract(38, 'minutes')\n .subtract(55, 'seconds').toDate()\n .getTime(),\n customer: {\n name: 'Anje Keizer'\n },\n payment: {\n ref: 'FAD100',\n method: 'CreditCard',\n total: '500.00',\n currency: '$',\n status: 'pending'\n },\n status: 'inactive'\n },\n {\n id: uuidv4(),\n createdAt: moment()\n .subtract(40, 'minutes')\n .subtract(3, 'seconds').toDate()\n .getTime(),\n customer: {\n name: 'Clarke Gillebert'\n },\n payment: {\n ref: 'FAD99',\n method: 'PayPal',\n total: '500.00',\n currency: '$',\n status: 'completed'\n },\n status: 'active'\n },\n {\n id: '5e86805e2bafd54f66cc95c3',\n createdAt: moment()\n .subtract(45, 'minutes')\n .subtract(32, 'seconds').toDate()\n .getTime(),\n customer: {\n name: 'Adam Denisov'\n },\n payment: {\n ref: 'FAD98',\n method: 'PayPal',\n total: '500.00',\n currency: '$',\n status: 'completed'\n },\n status: 'active'\n },\n {\n id: uuidv4(),\n createdAt: moment()\n .subtract(48, 'minutes')\n .subtract(57, 'seconds').toDate()\n .getTime(),\n customer: {\n id: '5e887a1fbefd7938eea9c981',\n name: 'Miller Edwards',\n avatar: '/static/images/avatars/avatar_8.png'\n },\n payment: {\n ref: 'FAD97',\n method: 'CreditCard',\n total: '500.00',\n currency: '$',\n status: 'pending'\n },\n status: 'inactive'\n },\n {\n id: uuidv4(),\n createdAt: moment()\n .subtract(49, 'minutes')\n .subtract(4, 'seconds').toDate()\n .getTime(),\n customer: {\n name: 'Emilee Simchenko'\n },\n payment: {\n ref: 'FAD96',\n method: 'CreditCard',\n total: '500.00',\n currency: '$',\n status: 'completed'\n },\n status: 'active'\n },\n {\n id: uuidv4(),\n createdAt: moment()\n .subtract(57, 'minutes')\n .subtract(43, 'seconds').toDate()\n .getTime(),\n customer: {\n name: 'Elliott Stone'\n },\n payment: {\n ref: 'FAD95',\n method: 'PayPal',\n total: '500.00',\n currency: '$',\n status: 'rejected'\n },\n status: 'inactive'\n },\n {\n id: uuidv4(),\n createdAt: moment()\n .subtract(59, 'minutes')\n .subtract(6, 'seconds').toDate()\n .getTime(),\n customer: {\n name: 'Shen Zhi'\n },\n payment: {\n ref: 'FAD94',\n method: 'CreditCard',\n total: '500.00',\n currency: '$',\n status: 'canceled'\n },\n status: 'inactive'\n },\n {\n id: uuidv4(),\n createdAt: moment()\n .subtract(1, 'hour')\n .subtract(15, 'minutes')\n .subtract(43, 'seconds')\n .toDate()\n .getTime(),\n customer: {\n name: 'Merrile Burgett'\n },\n payment: {\n ref: 'FAD93',\n method: 'PayPal',\n total: '500.00',\n currency: '$',\n status: 'canceled'\n },\n status: 'inactive'\n }\n ]\n});\n\nmock.onGet('/api/management/orders/1').reply(200, {\n order: {\n id: uuidv4(),\n ref: 'FAD107',\n promoCode: null,\n value: '55.25',\n currency: '$',\n status: 'canceled',\n customer: {\n name: 'Ekaterina Tankova',\n address: 'Street King William, 42456',\n city: 'Montgomery',\n country: 'United States'\n },\n items: [\n {\n id: uuidv4(),\n name: 'Project Points',\n cuantity: 25,\n billing: 'monthly',\n status: 'completed',\n value: '50.25',\n currency: '$'\n },\n {\n id: uuidv4(),\n name: 'Freelancer Subscription',\n cuantity: 1,\n billing: 'monthly',\n status: 'completed',\n value: '5.00',\n currency: '$'\n }\n ],\n createdAt: moment()\n .toDate()\n .getTime()\n }\n});\n\nmock.onGet('/api/management/invoices').reply(200, {\n invoices: [\n {\n id: '28382843',\n currency: '$',\n amount: 65.28,\n status: 'paid',\n createdAt: moment()\n .subtract(1, 'hours')\n .toDate()\n .getTime(),\n customer: {\n name: 'Ana Henisky',\n email: 'contact@anahenisky.io'\n }\n },\n {\n id: '28382845',\n currency: '$',\n amount: 253.76,\n status: 'pending',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(5, 'hours')\n .toDate()\n .getTime(),\n customer: {\n name: 'Matt Jason',\n email: 'sales@matt-jason.com'\n }\n },\n {\n id: '28382345',\n currency: '$',\n amount: 781.50,\n status: 'canceled',\n createdAt: moment()\n .subtract(6, 'days')\n .subtract(4, 'hours')\n .toDate()\n .getTime(),\n customer: {\n name: 'Terry Thomas',\n email: 'support@terrythomas.io'\n }\n },\n {\n id: '283823653',\n currency: '$',\n amount: 96.64,\n status: 'paid',\n createdAt: moment()\n .subtract(15, 'days')\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n customer: {\n name: 'Triv Shopper',\n email: 'contact@triv-shopper.co.uk'\n }\n }\n ]\n});\n\nmock.onGet('/api/management/invoices/1').reply(200, {\n invoice: {\n id: '765ed153',\n dueDate: moment()\n .toDate()\n .getTime(),\n issueDate: moment()\n .add(15, 'days')\n .toDate()\n .getTime(),\n ref: 'DEV-9483',\n customer: {\n name: 'Tracey Herman',\n company: 'Countdown Grey Lynn',\n taxId: '6934656584231',\n address: '271 Richmond Rd, Grey Lynn, Auckland 1022, New Zealand'\n },\n products: [\n {\n id: uuidv4(),\n desc: 'Freelancer Subscription (12/05/2019 - 11/06/2019)',\n value: '55.50'\n }\n ],\n subtotal: '50.00',\n taxes: '5.50',\n total: '55.50',\n currency: '$',\n createdAt: moment()\n .toDate()\n .getTime()\n }\n});\n","import moment from 'moment';\nimport { v4 as uuidv4 } from 'uuid';\nimport mock from 'src/utils/mock';\nimport _ from 'lodash';\n\nconst db = {\n contacts: [\n {\n id: '5e8891ab188cd2855e6029b7',\n avatar: '/static/images/avatars/avatar_1.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Cooper Murray',\n username: 'cooper.murray'\n },\n {\n id: '5e887a62195cc5aef7e8ca5d',\n avatar: '/static/images/avatars/avatar_2.png',\n isActive: false,\n lastActivity: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n name: 'Ekaterina Tankova',\n username: 'ekaterina.tankova'\n },\n {\n id: '5e887ac47eed253091be10cb',\n avatar: '/static/images/avatars/avatar_3.png',\n isActive: false,\n lastActivity: moment()\n .subtract(15, 'minutes')\n .toDate()\n .getTime(),\n name: 'Cao Yu',\n username: 'cao.yu'\n },\n {\n id: '5e887b209c28ac3dd97f6db5',\n avatar: '/static/images/avatars/avatar_4.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Alex Richardson',\n username: 'alex.richardson'\n },\n {\n id: '5e887b7602bdbc4dbb234b27',\n avatar: '/static/images/avatars/avatar_5.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Anje Keizer',\n username: 'anje.keizer'\n },\n {\n id: '5e86805e2bafd54f66cc95c3',\n avatar: '/static/images/avatars/avatar_7.png',\n isActive: false,\n lastActivity: moment()\n .subtract(2, 'days')\n .toDate()\n .getTime(),\n name: 'Adam Denisov',\n username: 'adam.denisov'\n },\n {\n id: '5e887a1fbefd7938eea9c981',\n avatar: '/static/images/avatars/avatar_8.png',\n isActive: false,\n lastActivity: moment()\n .subtract(6, 'hours')\n .toDate()\n .getTime(),\n name: 'Miller Edwards',\n username: 'miller.edwards'\n },\n {\n id: '5e887d0b3d090c1b8f162003',\n avatar: '/static/images/avatars/avatar_9.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Emilee Simchenko',\n username: 'emilee.simchenko',\n },\n {\n id: '5e88792be2d4cfb4bf0971d9',\n avatar: '/static/images/avatars/avatar_10.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Elliott Stone',\n username: 'elliott.stone'\n },\n {\n id: '5e8877da9a65442b11551975',\n avatar: '/static/images/avatars/avatar_11.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Shen Zhi',\n username: 'shen.zhi'\n },\n {\n id: '5e8680e60cba5019c5ca6fda',\n avatar: '/static/images/avatars/avatar_12.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Merrile Burgett',\n username: 'merrile.burgett'\n }\n ],\n threads: [\n {\n id: '5e867eb9de721aecaccf4f7b',\n key: 'adam.denisov',\n type: 'ONE_TO_ONE',\n messages: [\n {\n id: '5e867f0a5bc0ff2bfa07bfa6',\n body: 'Hey, nice projects! I really liked the one in react. What\\'s your quote on kinda similar project?',\n contentType: 'text',\n createdAt: moment()\n .subtract(10, 'hours')\n .toDate()\n .getTime(),\n senderId: '5e86805e2bafd54f66cc95c3'\n },\n {\n id: '5e867f167d5f78109ae9f2a4',\n body: 'I would need to know more details, but my hourly rate stats at $35/hour. Thanks!',\n contentType: 'text',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n senderId: '5e86809283e28b96d2d38537'\n },\n {\n id: '5e867f1c9ca72084693528f4',\n body: 'Well it\\'s a really easy one, I\\'m sure we can make it half of the price.',\n contentType: 'text',\n createdAt: moment()\n .subtract(5, 'minutes')\n .toDate()\n .getTime(),\n senderId: '5e86809283e28b96d2d38537'\n },\n {\n id: '5e867f22fd2e27a09849b4db',\n body: 'Then why don\\'t you make it if it\\'s that easy? Sorry I\\'m not interetes, have fantastic day Adam!',\n contentType: 'text',\n createdAt: moment()\n .subtract(3, 'minutes')\n .toDate()\n .getTime(),\n senderId: '5e86805e2bafd54f66cc95c3'\n },\n {\n id: '5e867f28a34d45ac6eb5c41f',\n body: 'Last offer, $25 per hour',\n contentType: 'text',\n createdAt: moment()\n .subtract(1, 'minute')\n .toDate()\n .getTime(),\n senderId: '5e86805e2bafd54f66cc95c3'\n },\n {\n id: '5e867f2dba984a3f78b33526',\n body: '/static/images/projects/project_4.png',\n contentType: 'image',\n createdAt: moment()\n .subtract(1, 'minute')\n .toDate()\n .getTime(),\n senderId: '5e86805e2bafd54f66cc95c3'\n },\n ],\n participantIds: [\n '5e86805e2bafd54f66cc95c3',\n '5e86809283e28b96d2d38537'\n ],\n unreadCount: 2\n },\n {\n id: '5e867fa7082c3c5921403a26',\n key: 'merrile.burgett',\n type: 'ONE_TO_ONE',\n messages: [\n {\n id: '5e867fc180837d901bd9bca1',\n body: 'Hey, would you like to collaborate?',\n contentType: 'text',\n createdAt: moment()\n .subtract(6, 'minutes')\n .toDate()\n .getTime(),\n senderId: '5e8680e60cba5019c5ca6fda'\n },\n {\n id: '5e8d6fb695df7971237fc173',\n body: 'I don\\'t think that\\'s ideal',\n contentType: 'text',\n createdAt: moment()\n .subtract(5, 'minutes')\n .toDate()\n .getTime(),\n senderId: '5e86809283e28b96d2d38537'\n }\n ],\n participantIds: [\n '5e8680e60cba5019c5ca6fda',\n '5e86809283e28b96d2d38537'\n ],\n unreadCount: 0\n }\n ]\n};\n\nmock.onGet('/api/chat/contacts').reply(200, {\n contacts: db.contacts\n});\n\nmock.onGet('/api/chat/threads').reply(200, {\n threads: db.threads\n});\n\nmock.onGet('/api/chat/thread').reply((config) => {\n const { threadKey } = config.params;\n const thread = db.threads.find((_thread) => _thread.key === threadKey);\n\n if (!thread) {\n return [200, { thread: null }];\n }\n\n return [200, { thread }];\n});\n\nmock.onGet('/api/chat/thread/mark-as-seen').reply((config) => {\n const { threadKey } = config.params;\n const thread = db.threads.find((_thread) => _thread.key === threadKey);\n\n if (thread) {\n thread.unreadCount = 0;\n }\n\n return [200, true];\n});\n\nmock.onPost('/api/chat/messages/new').reply((request) => {\n const { userId, threadKey, body } = JSON.parse(request.data);\n const message = {\n id: uuidv4(),\n body,\n contentType: 'text',\n createdAt: moment()\n .toDate()\n .getTime(),\n senderId: userId\n };\n\n let thread = db.threads.find((_thread) => _thread.key === threadKey);\n const otherUser = db.contacts.find((contact) => contact.username === threadKey);\n\n if (!thread) {\n thread = {\n id: uuidv4(),\n key: threadKey,\n type: 'ONE_TO_ONE',\n messages: [message],\n participantIds: [\n otherUser.id,\n userId\n ],\n unreadCount: 0\n };\n\n _.assign(db, {\n threads: [...db.threads, thread]\n });\n } else {\n _.assign(thread, {\n messages: [...thread.messages, message]\n });\n }\n\n return [200, {\n threadKey,\n otherUserId: otherUser.id,\n message\n }];\n});\n","import moment from 'moment';\nimport { v4 as uuidv4 } from 'uuid';\nimport mock from 'src/utils/mock';\nimport _ from 'lodash';\n\nconst board = {\n lists: [\n {\n id: '5e849c39325dc5ef58e5a5db',\n name: 'Incoming',\n cardIds: [\n '5e849c8708bd72683b454747',\n '5e849c90fabe1f1f4b3557f6',\n '5e849c977ef6265938bfd90b',\n '5e849c9e34ee93bc7255c599'\n ]\n },\n {\n id: '5e849c2b38d238c33e516755',\n name: 'In progress',\n cardIds: [\n '5e849ca7d063dc3830d4b49c',\n '5e849cb5d0c6e8894451fdfa'\n ]\n }\n ],\n cards: [\n {\n id: '5e849c8708bd72683b454747',\n attachments: [],\n checklists: [\n {\n id: '5e84a8175c48d3f5b1d01972',\n name: 'Update home page',\n checkItems: [\n {\n id: '5e85af37da584c5e4bd8a06c',\n name: 'An item',\n state: 'complete'\n }\n ]\n }\n ],\n comments: [\n {\n id: '15e849c5a35d4dff4f88ebff6',\n cardId: '5e849c8708bd72683b454747',\n createdAt: moment()\n .subtract(5, 'days')\n .toDate()\n .getTime(),\n memberId: '5e887ac47eed253091be10cb',\n message: 'This is a comment'\n }\n ],\n cover: '/static/images/projects/project_3.png',\n description: 'Duis condimentum lacus finibus felis pellentesque, ac auctor nibh fermentum. Duis sed dui ante. Phasellus id eros tincidunt, dictum lorem vitae, pellentesque sem. Aenean eu enim sit amet mauris rhoncus mollis. Sed enim turpis, porta a felis et, luctus faucibus nisi. Phasellus et metus fermentum, ultrices arcu aliquam, facilisis justo. Cras nunc nunc, elementum sed euismod ut, maximus eget nibh. Phasellus condimentum lorem neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce sagittis pharetra eleifend. Suspendisse potenti.',\n due: moment()\n .add(7, 'days')\n .toDate()\n .getTime(),\n isSubscribed: false,\n listId: '5e849c39325dc5ef58e5a5db',\n memberIds: ['5e86809283e28b96d2d38537'],\n name: 'Call with sales of HubSpot'\n },\n {\n id: '5e849c90fabe1f1f4b3557f6',\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: 'We are looking for vue experience and of course node js strong knowledge',\n due: moment()\n .add(6, 'days')\n .toDate()\n .getTime(),\n isSubscribed: true,\n listId: '5e849c39325dc5ef58e5a5db',\n memberIds: ['5e887b209c28ac3dd97f6db5', '5e887a62195cc5aef7e8ca5d'],\n name: 'Interview for the Asis. Sales Manager'\n },\n {\n id: '5e849c977ef6265938bfd90b',\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: 'We nede to make it aggresive with pricing because it’s in their interest to acquire us',\n due: null,\n isSubscribed: false,\n listId: '5e849c39325dc5ef58e5a5db',\n memberIds: [],\n name: 'Change the height of the top bar because it looks too chunky',\n },\n {\n id: '5e849c9e34ee93bc7255c599',\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: 'We nede to make it aggresive with pricing because it’s in their interest to acquire us',\n due: null,\n isSubscribed: false,\n listId: '5e849c39325dc5ef58e5a5db',\n memberIds: ['5e887ac47eed253091be10cb', '5e86809283e28b96d2d38537'],\n name: 'Integrate Stripe API'\n },\n {\n id: '5e849ca7d063dc3830d4b49c',\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: 'We need to make it aggresive with pricing because it’s in their interest to acquire us',\n due: null,\n isSubscribed: true,\n listId: '5e849c2b38d238c33e516755',\n memberIds: ['5e887a62195cc5aef7e8ca5d'],\n name: 'Update the customer API for payments'\n },\n {\n id: '5e849cb5d0c6e8894451fdfa',\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: 'We need to make it aggresive with pricing because it’s in their interest to acquire us',\n due: null,\n isSubscribed: true,\n listId: '5e849c2b38d238c33e516755',\n memberIds: [],\n name: 'Redesign the landing page'\n }\n ],\n members: [\n {\n id: '5e887a62195cc5aef7e8ca5d',\n name: 'Ekaterina Tankova',\n avatar: '/static/images/avatars/avatar_2.png'\n },\n {\n id: '5e887ac47eed253091be10cb',\n name: 'Cao Yu',\n avatar: '/static/images/avatars/avatar_3.png'\n },\n {\n id: '5e887b209c28ac3dd97f6db5',\n name: 'Alex Richardson',\n avatar: '/static/images/avatars/avatar_4.png'\n },\n {\n id: '5e887b7602bdbc4dbb234b27',\n name: 'Anje Keizer',\n avatar: '/static/images/avatars/avatar_5.png'\n },\n {\n id: '5e86809283e28b96d2d38537',\n name: 'Katarina Smith',\n avatar: '/static/images/avatars/avatar_6.png'\n }\n ]\n};\n\nmock.onGet('/api/kanban/board').reply(200, {\n board\n});\n\nmock.onPost('/api/kanban/board/lists/new').reply((request) => {\n const { name } = JSON.parse(request.data);\n const list = {\n id: uuidv4(),\n name,\n cardIds: []\n };\n\n _.assign(board, {\n lists: [...board.lists, list]\n });\n\n return [200, { list }];\n});\n\nmock.onPost('/api/kanban/board/list/update').reply((request) => {\n const { listId, update } = JSON.parse(request.data);\n const list = board.lists.find((_list) => _list.id === listId);\n\n _.assign(list, update);\n\n return [200, { list }];\n});\n\nmock.onPost('/api/kanban/board/lists/clear').reply((request) => {\n const { listId } = JSON.parse(request.data);\n\n _.assign(board, {\n lists: _.map(board.lists, (list) => {\n if (list.id === listId) {\n _.assign(list, {\n cardIds: []\n });\n }\n\n return list;\n }),\n cards: board.cards.filter((card) => card.listId !== listId)\n });\n\n return [200, { listId }];\n});\n\nmock.onPost('/api/kanban/board/lists/remove').reply((request) => {\n const { listId } = JSON.parse(request.data);\n\n _.assign(board, {\n lists: _.reject(board.lists, { id: listId }),\n cards: board.cards.filter((card) => card.listId !== listId)\n });\n\n return [200, { listId }];\n});\n\nmock.onPost('/api/kanban/board/cards/new').reply((request) => {\n const { listId, name } = JSON.parse(request.data);\n const card = {\n id: uuidv4(),\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: null,\n due: null,\n isSubscribed: false,\n listId,\n memberIds: [],\n name\n };\n\n _.assign(board, {\n cards: [...board.cards, card],\n lists: _.map(board.lists, (list) => {\n if (list.id === listId) {\n _.assign(list, {\n cardIds: [...list.cardIds, card.id]\n });\n }\n\n return list;\n })\n });\n\n return [200, { card }];\n});\n\nmock.onPost('/api/kanban/board/cards/update').reply((request) => {\n const { cardId, update } = JSON.parse(request.data);\n const card = board.cards.find((_card) => _card.id === cardId);\n\n _.assign(card, update);\n\n return [200, { card }];\n});\n\nmock.onPost('/api/kanban/board/cards/move').reply((request) => {\n const { cardId, position, listId } = JSON.parse(request.data);\n const card = board.cards.find((_card) => _card.id === cardId);\n const sourceList = board.lists.find((list) => list.id === card.listId);\n\n _.pull(sourceList.cardIds, cardId);\n\n if (listId) {\n const destinationList = board.lists.find((list) => list.id === card.listId);\n\n sourceList.cardIds.splice(destinationList, 0, card.id);\n card.listId = destinationList.id;\n } else {\n sourceList.cardIds.splice(position, 0, card.id);\n }\n\n return [200, true];\n});\n\nmock.onPost('/api/kanban/board/cards/remove').reply((request) => {\n const { cardId } = JSON.parse(request.data);\n\n _.assign(board, {\n cards: _.reject(board.cards, { id: cardId }),\n lists: _.map(board.lists, (list) => {\n _.assign(list, {\n cardIds: list.cardIds.filter((_cardId) => _cardId !== cardId)\n });\n\n return list;\n })\n });\n\n return [200, { cardId }];\n});\n\nmock.onPost('/api/kanban/board/cards/comments').reply((request) => {\n const { userId, cardId, message } = JSON.parse(request.data);\n const comment = {\n id: uuidv4(),\n cardId,\n createdAt: moment()\n .toDate()\n .getTime(),\n memberId: userId,\n message\n };\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n _.assign(card, {\n comments: [...card.comments, comment]\n });\n\n return card;\n })\n });\n\n return [200, { comment }];\n});\n\nmock.onPost('/api/kanban/board/checklists/new').reply((request) => {\n const { cardId, name } = JSON.parse(request.data);\n const checklist = {\n id: uuidv4(),\n name,\n checkItems: []\n };\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.assign(card, {\n checklists: [...card.checklists, checklist]\n });\n }\n\n return card;\n })\n });\n\n return [200, { checklist }];\n});\n\nmock.onPost('/api/kanban/board/checklists/update').reply((request) => {\n const { cardId, checklistId, update } = JSON.parse(request.data);\n let checklist = null;\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.map(card.checklists, (_checklist) => {\n if (_checklist.id === checklistId) {\n _.assign(_checklist, { ...update });\n checklist = _checklist;\n }\n\n return _checklist;\n });\n }\n\n return card;\n })\n });\n\n return [200, { checklist }];\n});\n\nmock.onPost('/api/kanban/board/checklists/remove').reply((request) => {\n const { cardId, checklistId } = JSON.parse(request.data);\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.assign(card, {\n checklists: _.reject(card.checklists, { id: checklistId }),\n });\n }\n\n return card;\n })\n });\n\n return [200, true];\n});\n\nmock.onPost('/api/kanban/board/checkitems/new').reply((request) => {\n const { cardId, checklistId, name } = JSON.parse(request.data);\n const checkItem = {\n id: uuidv4(),\n checklistId,\n name,\n status: 'incomplete'\n };\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.assign(card, {\n checklists: card.checklists.map((checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: [...checklist.checkItems, checkItem]\n });\n }\n\n return checklist;\n })\n });\n }\n\n return card;\n })\n });\n\n return [200, { checkItem }];\n});\n\nmock.onPost('/api/kanban/board/checkitems/update').reply((request) => {\n const {\n cardId,\n checklistId,\n checkItemId,\n update\n } = JSON.parse(request.data);\n let checkItem = null;\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.assign(card, {\n checklists: _.map(card.checklists, (checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: _.map(checklist.checkItems, (_checkItem) => {\n if (_checkItem.id === checkItemId) {\n _.assign(_checkItem, { ...update });\n checkItem = _checkItem;\n }\n\n return _checkItem;\n })\n });\n }\n\n return checklist;\n })\n });\n }\n\n return card;\n })\n });\n\n return [200, { checkItem }];\n});\n\nmock.onPost('/api/kanban/board/checkitems/remove').reply((request) => {\n const { cardId, checklistId, checkItemId } = JSON.parse(request.data);\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.assign(card, {\n checklists: _.map(card.checklists, (checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: _.reject(checklist.checkItems, { id: checkItemId })\n });\n }\n\n return checklist;\n })\n });\n }\n\n return card;\n })\n });\n\n return [200, true];\n});\n","import moment from 'moment';\nimport { colors } from '@material-ui/core';\nimport mock from 'src/utils/mock';\n\nfunction filterMails(mails, labels, systemLabel, customLabel) {\n if (customLabel) {\n const label = labels.find((_label) => _label.name === customLabel);\n\n if (!label) {\n return [];\n }\n\n return mails.filter((mail) => mail.labelIds.includes(label.id));\n }\n\n if (systemLabel === 'all') {\n return mails;\n }\n\n // \"Starred\" can be both folder and filter\n if (['starred', 'important'].includes(systemLabel)) {\n if (systemLabel === 'starred') {\n return mails.filter((mail) => mail.isStarred);\n }\n\n if (systemLabel === 'important') {\n return mails.filter((mail) => mail.isImportant);\n }\n }\n\n if (['inbox', 'sent', 'drafts', 'trash', 'spam', 'starred'].includes(systemLabel)) {\n return mails.filter((mail) => mail.folder === systemLabel);\n }\n\n return [];\n}\n\nconst db = {\n labels: [\n {\n id: 'all',\n type: 'system_label',\n name: 'All Mail'\n },\n {\n id: 'inbox',\n type: 'system_label',\n name: 'Inbox',\n unreadCount: 1,\n totalCount: 0\n },\n {\n id: 'sent',\n type: 'system_label',\n name: 'Sent',\n unreadCount: 0,\n totalCount: 0\n },\n {\n id: 'drafts',\n type: 'system_label',\n name: 'Drafts',\n unreadCount: 0,\n totalCount: 0\n },\n {\n id: 'trash',\n type: 'system_label',\n name: 'Trash',\n unreadCount: 0,\n totalCount: 1\n },\n {\n id: 'spam',\n type: 'system_label',\n name: 'Spam',\n unreadCount: 1,\n totalCount: 1\n },\n {\n id: 'important',\n type: 'system_label',\n name: 'Important',\n unreadCount: 0,\n totalCount: 1\n },\n {\n id: 'starred',\n type: 'system_label',\n name: 'Starred',\n unreadCount: 1,\n totalCount: 1\n },\n {\n id: '5e892628d4bc60b4514d5d36',\n type: 'custom_label',\n name: 'Work',\n unreadCount: 1,\n totalCount: 1,\n color: colors.green[600]\n },\n {\n id: '5e8926820cf9ec6c834114ec',\n type: 'custom_label',\n name: 'Business',\n unreadCount: 0,\n totalCount: 2,\n color: colors.blue[600]\n },\n {\n id: '5e892696db60f561c43c6f81',\n type: 'custom_label',\n name: 'Personal',\n unreadCount: 0,\n totalCount: 1,\n color: colors.orange[600]\n }\n ],\n mails: [\n {\n id: '5e86bcc3e1b53b6365d71638',\n folder: 'Business',\n isUnread: true,\n isStarred: false,\n isImportant: true,\n labelIds: ['5e8926820cf9ec6c834114ec', '5e892696db60f561c43c6f81'],\n subject: 'Website redesign. Interested in collaboration',\n message: `\nHi Matt, I saw your work on instagram and would be interested in getting a quote for Logo and slider\n\nInteger velit massa, pharetra sed lacus eu, pulvinar faucibus ex. Ut pretium ex id turpis elementum, aliquam accumsan enim sollicitudin. Sed nec consectetur lorem, ac ullamcorper augue. Suspendisse tempus ligula suscipit finibus vehicula. Morbi viverra finibus lectus, egestas dictum mi mollis nec. Proin eget vehicula eros, sit amet molestie ipsum. Morbi feugiat, elit non placerat fringilla, leo risus tristique felis, sollicitudin tristique nibh arcu nec arcu. Maecenas vel turpis nibh. Etiam in lectus quis felis facilisis dictum. Morbi id vehicula lectus, vel imperdiet dolor. Phasellus consequat tempor tellus, quis placerat quam posuere eget. Mauris blandit, nisl eu sollicitudin tincidunt, tellus diam accumsan arcu, vel pharetra lectus est nec nisi. In sem dolor, mollis sed risus eu, mattis dictum lectus. Suspendisse urna est, finibus et urna non, tincidunt placerat eros.\n\nDonec viverra ipsum id auctor rutrum. Morbi consequat a nunc non interdum. Nulla accumsan eget felis a dictum. Cras rhoncus tortor eget velit fringilla suscipit. Donec quis arcu eu nibh aliquet auctor eget fringilla felis. Sed commodo efficitur massa. Proin maximus elit in suscipit laoreet. Integer pretium arcu ac mauris ullamcorper auctor. Vivamus tincidunt lacus eget purus feugiat tincidunt. Etiam feugiat gravida ullamcorper. Pellentesque cursus vehicula lectus et consectetur. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam ligula risus, congue eu pellentesque id, volutpat aliquam arcu. Donec efficitur ipsum id neque rhoncus viverra. Vestibulum hendrerit et eros eu bibendum.\n\n\nKind regards,\n\nEkaterina Tankova\n `,\n from: {\n name: 'Ekaterina Tankova',\n email: 'ekaterina.tankova@devias.io',\n avatar: '/static/images/avatars/avatar_2.png'\n },\n to: [\n {\n name: 'Katarina Smith',\n email: 'katarina.smith@devias.io',\n avatar: null\n }\n ],\n createdAt: moment()\n .toDate()\n .getTime()\n },\n {\n id: '5e86bcbd8406cd3055f2b6c8',\n folder: 'spam',\n isUnread: false,\n isStarred: true,\n isImportant: false,\n labelIds: [],\n subject: 'Amazing work',\n message: `\nHey, nice projects! I really liked the one in react. What's your quote on kinda similar project?\n `,\n from: {\n name: 'Adam Denisov',\n email: 'adam.denisov@devias.io',\n avatar: '/static/images/avatars/avatar_7.png'\n },\n to: [\n {\n name: 'Katarina Smith',\n email: 'katarina.smith@devias.io',\n avatar: null\n }\n ],\n createdAt: moment()\n .toDate()\n .getTime()\n },\n {\n id: '5e86bcb9fee1ec12453fa13b',\n folder: 'inbox',\n isUnread: false,\n isStarred: false,\n isImportant: false,\n subject: 'Flight reminder',\n labelIds: ['5e892628d4bc60b4514d5d36'],\n message: `\nDear Shen, Your flight is coming up soon. Please don’t forget to check in for your scheduled flight.\n `,\n from: {\n name: 'Miller Edwards',\n email: 'miller.edwards@devias.io',\n avatar: '/static/images/avatars/avatar_8.png'\n },\n to: [\n {\n name: 'Katarina Smith',\n email: 'katarina.smith@devias.io',\n avatar: null\n }\n ],\n createdAt: moment()\n .toDate()\n .getTime()\n },\n {\n id: '5e86bcb5575181a5e527e24f',\n folder: 'trash',\n isUnread: true,\n isStarred: false,\n isImportant: false,\n labelIds: ['5e8926820cf9ec6c834114ec'],\n subject: 'Posible candidates for the position',\n message: `\nMy market leading client has another fantastic opportunity for an experienced Software Developer to join them on a heavily remote basis\n `,\n from: {\n name: 'Cao Yu',\n email: 'cao.yu@devias.io',\n avatar: '/static/images/avatars/avatar_3.png'\n },\n to: [\n {\n name: 'Katarina Smith',\n email: 'katarina.smith@devias.io',\n avatar: null\n }\n ],\n createdAt: moment()\n .toDate()\n .getTime()\n }\n ]\n};\n\nmock.onGet('/api/mail/labels').reply(200, {\n labels: db.labels\n});\n\nmock.onGet('/api/mail/mails').reply((config) => {\n const { systemLabel, customLabel } = config.params;\n const mails = filterMails(\n db.mails,\n db.labels,\n systemLabel,\n customLabel\n );\n\n return [200, { mails }];\n});\n\nmock.onGet('/api/mail/mail').reply((config) => {\n const { mailId } = config.params;\n const mail = db.mails.find((_mail) => _mail.id === mailId);\n\n if (!mail) {\n return [404, { message: 'Mail not fount' }];\n }\n\n return [200, { mail }];\n});\n","import moment from 'moment';\nimport mock from 'src/utils/mock';\n\nmock.onGet('/api/projects/account/statistics').reply(200, {\n statistics: {\n payout: '4,250',\n projects: '12,500',\n visitors: '230',\n watching: '5'\n }\n});\n\nmock.onGet('/api/projects/account/projects').reply(200, {\n projects: [\n {\n id: '5e8dcf105a6732b3ed82cf7a',\n title: 'Ten80 Web Design',\n media: '/static/images/projects/project_3.png',\n author: {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n name: 'Katarina Smith'\n },\n type: 'Full-Time',\n location: 'Europe',\n technology: 'Angular JS',\n isLiked: true,\n likes: 57,\n rating: 3,\n subscribers: 5,\n updatedAt: moment()\n .subtract(24, 'minutes')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/projects/account/todos').reply(200, {\n todos: [\n {\n id: '5e8dd0b59fb490099917eb29',\n title: 'Finish the proposal design and contract for the client ASAP',\n deadline: moment()\n .subtract(2, 'days')\n .toDate()\n .getTime(),\n done: false\n },\n {\n id: '5e8dd0ba89c3f86059b41383',\n title: 'Finish the proposal design and contract for the client ASAP',\n deadline: moment()\n .toDate()\n .getTime(),\n done: false\n },\n {\n id: '5e8dd0c028284550358972c7',\n title: 'Upload the files for the client @Adrian Stefan with the fonts, assets exported and all the fancy svgs',\n deadline: moment()\n .add(2, 'days')\n .toDate()\n .getTime(),\n done: false\n },\n {\n id: '5e8dd0c549ceb790f8c41e96',\n title: 'Re-write the card component with hooks and context',\n deadline: moment()\n .add(5, 'days')\n .toDate()\n .getTime(),\n done: false\n },\n {\n id: '5e8dd0cb2fb6bf63b2e7d298',\n title: 'Send proposal for the fintech project',\n deadline: moment()\n .add(5, 'days')\n .toDate()\n .getTime(),\n done: false\n },\n {\n id: '5e8dd0d2ad70962ca35da534',\n title: 'Create todo app with react hooks just to get a better understanding of the concept',\n deadline: moment()\n .add(7, 'days')\n .toDate()\n .getTime(),\n done: true\n }\n ]\n});\n\nmock.onGet('/api/projects/projects').reply(200, {\n projects: [\n {\n id: '5e8dcef8f95685ce21f16f3d',\n title: 'Mella Full Screen Slider',\n media: '/static/images/projects/project_1.png',\n description: `\nWe're looking for experienced Developers and Product Designers to\ncome aboard and help us build succesful businesses through software.\n `,\n author: {\n id: '5e887b7602bdbc4dbb234b27',\n name: 'Anje Keizer',\n avatar: '/static/images/avatars/avatar_5.png'\n },\n type: 'Full-Time',\n location: 'Europe',\n technology: 'Vue JS',\n isLiked: true,\n likes: 7,\n rating: 5,\n subscribers: 2,\n updatedAt: moment()\n .subtract(24, 'minutes')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dcf076c50b9d8e756a5a2',\n title: 'Dashboard Design',\n media: '/static/images/projects/project_2.png',\n description: `\nWe're looking for experienced Developers and Product Designers to\ncome aboard and help us build succesful businesses through software.\n `,\n author: {\n id: '5e887d0b3d090c1b8f162003',\n name: 'Emilee Simchenko',\n avatar: '/static/images/avatars/avatar_9.png'\n },\n type: 'Full-Time',\n location: 'Europe',\n technology: 'Angular',\n isLiked: false,\n likes: 12,\n rating: 4.5,\n subscribers: 3,\n updatedAt: moment()\n .subtract(1, 'hour')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dcf105a6732b3ed82cf7a',\n title: 'Ten80 Web Design',\n media: '/static/images/projects/project_3.png',\n description: `\nWe're looking for experienced Developers and Product Designers to\ncome aboard and help us build succesful businesses through software.\n `,\n author: {\n id: '5e88792be2d4cfb4bf0971d9',\n name: 'Elliott Stone',\n avatar: '/static/images/avatars/avatar_10.png'\n },\n type: 'Full-Time',\n location: 'Europe',\n technology: 'Ember JS',\n isLiked: true,\n likes: 18,\n rating: 4.7,\n subscribers: 8,\n updatedAt: moment()\n .subtract(16, 'hour')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dcf1cc7155d0e947dc27f',\n title: 'Neura e-commerce UI Kit',\n media: '/static/images/projects/project_4.png',\n description: `\nWe're looking for experienced Developers and Product Designers to\ncome aboard and help us build succesful businesses through software.\n `,\n author: {\n id: '5e8877da9a65442b11551975',\n name: 'Shen Zhi',\n avatar: '/static/images/avatars/avatar_11.png'\n },\n type: 'Full-Time',\n location: 'Europe',\n technology: 'Java Spring',\n isLiked: false,\n likes: 1,\n rating: 2,\n subscribers: 10,\n updatedAt: moment()\n .subtract(3, 'days')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dcf252313876001e83221',\n title: 'Administrator Dashboard',\n media: '/static/images/projects/project_5.jpg',\n description: `\nWe're looking for experienced Developers and Product Designers to\ncome aboard and help us build succesful businesses through software.\n `,\n author: {\n id: '5e887ac47eed253091be10cb',\n name: 'Cao Yu',\n avatar: '/static/images/avatars/avatar_3.png'\n },\n type: 'Full-Time',\n location: 'Europe',\n technology: 'Django',\n isLiked: false,\n likes: 7,\n rating: 5,\n subscribers: 2,\n updatedAt: moment()\n .subtract(7, 'days')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dcf4250d77c954b04902e',\n title: 'Kalli UI Kit',\n media: '',\n description: `\nWe're looking for experienced Developers and Product Designers to\ncome aboard and help us build succesful businesses through software.\n `,\n author: {\n id: '5e887b7602bdbc4dbb234b27',\n name: 'Anje Keizer',\n avatar: '/static/images/avatars/avatar_5.png'\n },\n type: 'Full-Time',\n location: 'Europe',\n technology: 'React JS',\n isLiked: true,\n likes: 4,\n rating: 4.2,\n subscribers: 12,\n updatedAt: moment()\n .subtract(8, 'days')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/projects/projects/1').reply(200, {\n project: {\n active: true,\n endDate: moment()\n .add(14, 'days')\n .toDate()\n .getTime(),\n title: 'Develop a PDF Export App',\n author: {\n id: '5e887d0b3d090c1b8f162003',\n name: 'Emilee Simchenko',\n avatar: '/static/images/avatars/avatar_9.png',\n bio: 'We build beautiful functional themes for web professionals'\n },\n brief: `\nDesign files are attached in the files tab.\n\nDevelop the web app screens for our product called \"PDFace\". Please look at the wireframes, system activity workflow and read the section above to understand what we're trying to archive.\n\nThere's not many screens we need designed, but there will be modals and various other system triggered events that will need to be considered.\n\nThe project has been created in Sketch so let me know if there are any problems opening this project and I'll try to convert into a usable file.\n `,\n price: '12,500',\n currency: 'USD',\n tags: ['React JS'],\n members: [\n {\n id: '5e887a62195cc5aef7e8ca5d',\n name: 'Ekaterina Tankova',\n avatar: '/static/images/avatars/avatar_2.png',\n bio: 'Front End Developer'\n },\n {\n id: '5e887ac47eed253091be10cb',\n name: 'Cao Yu',\n avatar: '/static/images/avatars/avatar_3.png',\n bio: 'UX Designer'\n },\n {\n id: '5e887b7602bdbc4dbb234b27',\n name: 'Anje Keizer',\n avatar: '/static/images/avatars/avatar_5.png',\n bio: 'Copyright'\n }\n ],\n files: [\n {\n id: '5e8dd0721b9e0fab56d7238b',\n name: 'example-project1.jpg',\n url: '/static/images/projects/project_4.png',\n mimeType: 'image/png',\n size: 1024 * 1024 * 3\n },\n {\n id: '5e8dd0784431995a30eb2586',\n name: 'docs.zip',\n url: '#',\n mimeType: 'application/zip',\n size: 1024 * 1024 * 25\n },\n {\n id: '5e8dd07cbb62749296ecee1c',\n name: 'example-project2.jpg',\n url: '/static/images/projects/project_1.png',\n mimeType: 'image/png',\n size: 1024 * 1024 * 2\n }\n ],\n activities: [\n {\n id: '5e8dd0828d628e6f40abdfe8',\n subject: 'Project owner',\n type: 'upload_file',\n description: 'has uploaded a new file',\n createdAt: moment()\n .subtract(23, 'minutes')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dd0893a6725f2bb603617',\n subject: 'Adrian Stefan',\n type: 'join_team',\n description: 'joined team as a Front-End Developer',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dd08f44603e3300b75cf1',\n subject: 'Alexndru Robert',\n type: 'join_team',\n description: 'joined team as a Full Stack Developer',\n createdAt: moment()\n .subtract(9, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dd0960f3f0fe04e64d8f4',\n subject: 'Project owner',\n type: 'price_change',\n description: 'raised the project budget',\n createdAt: moment()\n .subtract(2, 'days')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dd09db94421c502c53d13',\n subject: 'Contest',\n type: 'contest_created',\n description: 'created',\n createdAt: moment()\n .subtract(4, 'days')\n .toDate()\n .getTime()\n }\n ],\n subscribers: [\n {\n id: '5e887a62195cc5aef7e8ca5d',\n name: 'Ekaterina Tankova',\n avatar: '/static/images/avatars/avatar_2.png',\n cover: '/static/images/covers/cover_2.jpg',\n commonContacts: 12,\n labels: [\n 'User Experience',\n 'FrontEnd development',\n 'HTML5',\n 'VueJS',\n 'ReactJS'\n ]\n },\n {\n id: '5e887ac47eed253091be10cb',\n name: 'Cao Yu',\n avatar: '/static/images/avatars/avatar_3.png',\n cover: '/static/images/covers/cover_3.jpg',\n commonContacts: 5,\n labels: [\n 'User Interface',\n 'FullStack development',\n 'Angular',\n 'ExpressJS'\n ]\n },\n {\n id: '5e86809283e28b96d2d38537',\n name: 'Katarina Smith',\n avatar: '/static/images/avatars/avatar_6.png',\n cover: '/static/images/covers/cover_1.jpg',\n commonContacts: 17,\n labels: [\n 'BackEnd development',\n 'Firebase',\n 'MongoDB',\n 'ExpressJS'\n ]\n }\n ],\n deadline: moment()\n .add(7, 'days')\n .toDate()\n .getTime(),\n updatedAt: moment()\n .subtract(23, 'minutes')\n .toDate()\n .getTime()\n }\n});\n","import moment from 'moment';\nimport mock from 'src/utils/mock';\n\nmock.onGet('/api/social/profile').reply(200, {\n user: {\n id: '5e86809283e28b96d2d38537',\n name: 'Katarina Smith',\n email: 'katarina.smith@devias.io',\n bio: 'Sales Manager',\n avatar: '/static/images/avatars/avatar_6.png',\n cover: '/static/images/covers/cover_1.jpg',\n connectedStatus: 'not_connected',\n profileProgress: 50,\n quote: 'Everyone thinks of changing the world, but no one thinks of changing himself.',\n currentJob: {\n title: 'Product Designer',\n company: 'Devias IO'\n },\n previousJob: {\n title: 'UX Designer at',\n company: 'Focus Aesthetic Dyanmics'\n },\n currentCity: 'Bucharest',\n originCity: 'Rm. Valcea'\n }\n});\n\nmock.onGet('/api/social/feed').reply(200, {\n posts: [\n {\n id: '5e887fa38598b6fe61667757',\n author: {\n id: '5e88792be2d4cfb4bf0971d9',\n name: 'Elliott Stone',\n avatar: '/static/images/avatars/avatar_10.png'\n },\n message: 'Hey guys! What\\'s your favorite framework?',\n liked: true,\n likes: 1,\n comments: [\n {\n id: '5e887fb6c648772b52f860a8',\n author: {\n id: '5e8680e60cba5019c5ca6fda',\n name: 'Merrile Burgett',\n avatar: '/static/images/avatars/avatar_12.png'\n },\n message: 'I\\'ve been using Angular for the past 3 years',\n createdAt: moment()\n .subtract(3, 'hours')\n .toDate()\n .getTime()\n }\n ],\n createdAt: moment()\n .subtract(16, 'minutes')\n .toDate()\n .getTime()\n },\n {\n id: '5e887faca2b7a1ddce01221a',\n author: {\n id: '5e86809283e28b96d2d38537',\n name: 'Katarina Zhi',\n avatar: '/static/images/avatars/avatar_6.png'\n },\n message: 'Just made this home screen for a project, what-cha thinkin?',\n media: '/static/images/posts/post_1.png',\n liked: true,\n likes: 24,\n comments: [\n {\n id: '5e887fc17162ba254da30771',\n author: {\n id: '5e887b7602bdbc4dbb234b27',\n name: 'Anje Keizer',\n avatar: '/static/images/avatars/avatar_5.png'\n },\n message: 'Could use some more statistics, but that’s me haha',\n createdAt: moment()\n .subtract(3, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: '5e887fc759bebe8d5d54a2e5',\n author: {\n id: '5e887a1fbefd7938eea9c981',\n name: 'Miller Edwards',\n avatar: '/static/images/avatars/avatar_8.png'\n },\n message: 'Hmm, honestly this looks nice but I would change the shadow though',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime()\n }\n ],\n createdAt: moment()\n .subtract(4, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: '5e887faf03e78a5359765636',\n author: {\n id: '5e86809283e28b96d2d38537',\n name: 'Katarina Smith',\n avatar: '/static/images/avatars/avatar_6.png'\n },\n message: 'As a human being, you are designed in a way that makes you incapable of experiencing any positive emotion unless you set an aim and progress towards it. What makes you happy is not, in fact, attaining it, but making progress towards it.',\n liked: false,\n likes: 65,\n comments: [\n {\n id: '5e887fde4992eca63b9e9ef5',\n author: {\n id: '5e8877da9a65442b11551975',\n name: 'Shen Zhi',\n avatar: '/static/images/avatars/avatar_11.png'\n },\n message: 'That’s actually deep. Thanks for the design, would you consider making an interaction?',\n createdAt: moment()\n .subtract(3, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: '5e887feb11b7add1ebfcca78',\n author: {\n id: '5e887b209c28ac3dd97f6db5',\n name: 'Alex Richardson',\n avatar: '/static/images/avatars/avatar_4.png'\n },\n message: 'Oh... so sentimental',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime()\n }\n ],\n createdAt: moment()\n .subtract(7, 'hours')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/social/users/1/posts').reply(200, {\n posts: [\n {\n id: '5e887faca2b7a1ddce01221a',\n author: {\n id: '5e86809283e28b96d2d38537',\n name: 'Katarina Smith',\n avatar: '/static/images/avatars/avatar_6.png'\n },\n message: 'Just made this home screen for a project, what-cha thinkin?',\n media: '/static/images/posts/post_1.png',\n liked: true,\n likes: 24,\n comments: [\n {\n id: '5e887fc17162ba254da30771',\n author: {\n id: '5e887b7602bdbc4dbb234b27',\n name: 'Anje Keizer',\n avatar: '/static/images/avatars/avatar_5.png'\n },\n message: 'Could use some more statistics, but that’s me haha',\n createdAt: moment()\n .subtract(3, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: '5e887fc759bebe8d5d54a2e5',\n author: {\n id: '5e887a1fbefd7938eea9c981',\n name: 'Miller Edwards',\n avatar: '/static/images/avatars/avatar_8.png'\n },\n message: 'Hmm, honestly this looks nice but I would change the shadow though',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime()\n }\n ],\n createdAt: moment()\n .subtract(4, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: '5e887faf03e78a5359765636',\n author: {\n id: '5e86809283e28b96d2d38537',\n name: 'Katarina Smith',\n avatar: '/static/images/avatars/avatar_6.png'\n },\n message: 'As a human being, you are designed in a way that makes you incapable of experiencing any positive emotion unless you set an aim and progress towards it. What makes you happy is not, in fact, attaining it, but making progress towards it.',\n liked: false,\n likes: 65,\n comments: [\n {\n id: '5e887fde4992eca63b9e9ef5',\n author: {\n id: '5e8877da9a65442b11551975',\n name: 'Shen Zhi',\n avatar: '/static/images/avatars/avatar_11.png'\n },\n message: 'That’s actually deep. Thanks for the design, would you consider making an interaction?',\n createdAt: moment()\n .subtract(3, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: '5e887feb11b7add1ebfcca78',\n author: {\n id: '5e887b209c28ac3dd97f6db5',\n name: 'Alex Richardson',\n avatar: '/static/images/avatars/avatar_4.png'\n },\n message: 'Oh... so sentimental',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime()\n }\n ],\n createdAt: moment()\n .subtract(7, 'hours')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/social/users/1/projects').reply(200, {\n projects: [\n {\n id: '5e88832046990a87d32e6caf',\n media: '/static/images/projects/project_2.png',\n title: 'Mella Full Screen Slider',\n author: {\n id: '5e887b7602bdbc4dbb234b27',\n name: 'Anje Keizer',\n avatar: '/static/images/avatars/avatar_5.png'\n },\n type: 'Full-Time',\n location: 'Europe',\n technology: 'Angular JS',\n liked: true,\n likes: 57,\n rating: 3,\n subscribers: 5,\n updatedAt: moment()\n .subtract(24, 'minutes')\n .toDate()\n .getTime()\n },\n {\n id: '5e88832b7e1ddc356c94dcc2',\n media: '/static/images/projects/project_1.png',\n title: 'Dashboard Design',\n author: {\n id: '5e86809283e28b96d2d38537',\n name: 'Katarina Smith',\n avatar: '/static/images/avatars/avatar_6.png'\n },\n type: 'Full-Time',\n location: 'Europe',\n technology: 'React JS',\n liked: false,\n likes: 91,\n rating: 4.3,\n subscribers: 10,\n updatedAt: moment()\n .subtract(1, 'hour')\n .toDate()\n .getTime()\n },\n {\n id: '5e888331f4107aa4013caada',\n media: '',\n title: 'Ten80 Web Design',\n author: {\n id: '5e86805e2bafd54f66cc95c3',\n name: 'Adam Denisov',\n avatar: '/static/images/avatars/avatar_7.png'\n },\n type: 'Full-Time',\n location: 'Europe',\n technology: 'Vue JS',\n liked: true,\n likes: 6,\n rating: 5,\n subscribers: 4,\n updatedAt: moment()\n .subtract(16, 'hour')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/social/users/1/reviews').reply(200, {\n reviews: [\n {\n id: '5e887f7404ed12e9afb71841',\n rating: 4,\n message: 'Shen was really great during the all time session we created the project',\n reviewer: {\n id: '5e887a62195cc5aef7e8ca5d',\n name: 'Ekaterina Tankova',\n avatar: '/static/images/avatars/avatar_2.png'\n },\n project: {\n title: 'Mella Full Screen Slider',\n price: '5,240.00'\n },\n pricePerHour: '43.00',\n hours: 31,\n currency: '$',\n createdAt: moment()\n .subtract(4, 'hours')\n .toDate()\n .getTime()\n },\n {\n id: '5e887f7b91b9b5330c49a318',\n rating: 5,\n reviewer: {\n id: '5e887ac47eed253091be10cb',\n name: 'Cao Yu',\n avatar: '/static/images/avatars/avatar_3.png'\n },\n project: {\n title: 'Dashboard Design',\n price: '3,680.00'\n },\n pricePerHour: '38.00',\n hours: 76,\n currency: '$',\n message: 'Being the savage\\'s bowsman, that is, the person who pulled the bow-oar in his boat (the second one from forward), it was my cheerful duty to attend upon him while taking that hard-scrabble scramble upon the dead whale\\'s back. You have seen Italian organ-boys holding a dancing-ape by a long cord. Just so, from the ship\\'s steep side, did I hold Queequeg down there in the sea, by what is technically called in the fishery a monkey-rope, attached to a strong strip of canvas belted round his waist.',\n createdAt: moment()\n .subtract(8, 'days')\n .toDate()\n .getTime()\n }\n ]\n});\n\nmock.onGet('/api/social/users/1/connections').reply(200, {\n connections: [\n {\n id: '5e887a62195cc5aef7e8ca5d',\n name: 'Ekaterina Tankova',\n avatar: '/static/images/avatars/avatar_2.png',\n common: 12,\n status: 'connected'\n },\n {\n id: '5e887ac47eed253091be10cb',\n name: 'Cao Yu',\n avatar: '/static/images/avatars/avatar_3.png',\n common: 10,\n status: 'rejected'\n },\n {\n id: '5e887b209c28ac3dd97f6db5',\n name: 'Alex Richardson',\n avatar: '/static/images/avatars/avatar_4.png',\n common: 8,\n status: 'pending'\n },\n {\n id: '5e86805e2bafd54f66cc95c3',\n name: 'Adam Denisov',\n avatar: '/static/images/avatars/avatar_7.png',\n common: 5,\n status: 'not_connected'\n },\n {\n id: '5e887a1fbefd7938eea9c981',\n name: 'Miller Edwards',\n avatar: '/static/images/avatars/avatar_8.png',\n common: 1,\n status: 'connected'\n }\n ]\n});\n","/* eslint-disable */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in projection, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nconst isSecure = window.location.protocol === 'https:';\n\nexport function register(config) {\n if ('serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.error(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import produce from 'immer';\nimport {\n LOGIN_REQUEST,\n LOGIN_SUCCESS,\n LOGIN_FAILURE,\n LOGOUT,\n SILENT_LOGIN,\n UPDATE_PROFILE,\n UPDATE_AVATAR,\n} from 'src/actions/accountActions';\n\nconst initialState = {\n user: null,\n isAdmin: false\n};\n\nconst accountReducer = (state = initialState, action) => {\n switch (action.type) {\n case LOGIN_REQUEST: {\n return produce(state, (draft) => {\n // Ensure we clear current session\n draft.user = null;\n });\n }\n\n case LOGIN_SUCCESS: {\n const { user } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = user;\n draft.isAdmin = user.role === 'Admin';\n });\n }\n\n case LOGIN_FAILURE: {\n return produce(state, () => {\n // Maybe store error\n });\n }\n\n case LOGOUT: {\n return produce(state, (draft) => {\n draft.user = null;\n });\n }\n\n case SILENT_LOGIN: {\n const { user } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = user;\n draft.isAdmin = user.role === 'Admin';\n });\n }\n\n case UPDATE_PROFILE: {\n const user = action.payload;\n localStorage.setItem('loggedInUser', JSON.stringify(user));\n\n return produce(state, (draft) => {\n draft.user = user;\n draft.isAdmin = user.role === 'Admin';\n });\n }\n\n case UPDATE_AVATAR: {\n const avatarURL = action.payload;\n\n return produce(state, (draft) => {\n draft.user.avatar = avatarURL;\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default accountReducer;\n","import axios from 'src/utils/axios';\n\nexport const GET_NOTIFICATIONS = '@notifications/get-notifications';\n\nexport function getNotifications() {\n const request = axios.get('/api/notification');\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_NOTIFICATIONS,\n payload: response.data\n }));\n };\n}\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport { GET_NOTIFICATIONS } from 'src/actions/notificationsActions';\n\nconst initialState = {\n notifications: []\n};\n\nconst notificationsReducer = (state = initialState, action) => {\n switch (action.type) {\n case GET_NOTIFICATIONS: {\n const notifications = action.payload;\n\n return produce(state, (draft) => {\n draft.notifications = notifications;\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default notificationsReducer;\n","const objFromArray = (arr, key = 'id') => arr.reduce((accumulator, current) => {\n /* eslint-disable-next-line no-param-reassign */\n accumulator[current[key]] = current;\n return accumulator;\n}, {});\n\nexport default objFromArray;\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport {\n GET_CONTACTS,\n GET_THREADS,\n GET_THREAD,\n MARK_THREAD_AS_SEEN,\n ADD_MESSAGE,\n OPEN_SIDEBAR,\n CLOSE_SIDEBAR\n} from 'src/actions/chatActions';\nimport objFromArray from 'src/utils/objFromArray';\n\nconst initialState = {\n contacts: {\n byId: {},\n allIds: []\n },\n threads: {\n byKey: {},\n allKeys: []\n },\n sidebarOpen: false\n};\n\nconst chatReducer = (state = initialState, action) => {\n switch (action.type) {\n case GET_CONTACTS: {\n const { contacts } = action.payload;\n\n return produce(state, (draft) => {\n draft.contacts.byId = objFromArray(contacts);\n draft.contacts.allIds = Object.keys(draft.contacts.byId);\n });\n }\n\n case GET_THREADS: {\n const { threads } = action.payload;\n\n return produce(state, (draft) => {\n draft.threads.byKey = objFromArray(threads, 'key');\n draft.threads.allKeys = Object.keys(draft.threads.byKey);\n });\n }\n\n case GET_THREAD: {\n const { thread } = action.payload;\n\n return produce(state, (draft) => {\n draft.threads.byKey[thread.key] = thread;\n\n if (!draft.threads.allKeys.includes(thread.key)) {\n draft.threads.allKeys.push(thread.key);\n }\n });\n }\n\n case MARK_THREAD_AS_SEEN: {\n const { threadKey } = action.payload;\n\n return produce(state, (draft) => {\n const thread = draft.threads.byKey[threadKey];\n\n if (thread) {\n thread.unreadCount = 0;\n }\n });\n }\n\n case ADD_MESSAGE: {\n const {\n threadKey,\n message,\n userId,\n otherUserId\n } = action.payload;\n\n return produce(state, (draft) => {\n let thread = draft.threads.byKey[threadKey];\n\n if (!thread) {\n thread = {\n key: threadKey,\n messages: [message],\n participantIds: [otherUserId, userId],\n unreadCount: 0\n };\n\n draft.threads.byKey[threadKey] = thread;\n draft.threads.allKeys.push(threadKey);\n } else {\n thread.messages.push(message);\n }\n });\n }\n\n case OPEN_SIDEBAR: {\n return produce(state, (draft) => {\n draft.sidebarOpen = true;\n });\n }\n\n case CLOSE_SIDEBAR: {\n return produce(state, (draft) => {\n draft.sidebarOpen = false;\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default chatReducer;\n","import axios from 'src/utils/axiosMock';\n\nexport const GET_CONTACTS = '@chat/get-contacts';\nexport const GET_THREADS = '@chat/get-threads';\nexport const GET_THREAD = '@chat/get-thread';\nexport const MARK_THREAD_AS_SEEN = '@chat/mark-thread-as-seen';\nexport const ADD_MESSAGE = '@chat/add-message';\nexport const OPEN_SIDEBAR = '@chat/open-sidebar';\nexport const CLOSE_SIDEBAR = '@chat/close-sidebar';\n\nexport function getContacts() {\n const request = axios.get('/api/chat/contacts');\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_CONTACTS,\n payload: response.data\n }));\n };\n}\n\nexport function getThreads() {\n const request = axios.get('/api/chat/threads');\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_THREADS,\n payload: response.data\n }));\n };\n}\n\nexport function getThread(threadKey) {\n const request = axios.get('/api/chat/thread', {\n params: {\n threadKey\n }\n });\n\n return (dispatch) => {\n request.then((response) => {\n if (response.data.thread) {\n dispatch({\n type: GET_THREAD,\n payload: response.data\n });\n }\n });\n };\n}\n\nexport function markThreadAsSeen(threadKey) {\n const request = axios.get('/api/chat/thread/mark-as-seen', {\n params: {\n threadKey\n }\n });\n\n return (dispatch) => {\n request.then(() => dispatch({\n type: MARK_THREAD_AS_SEEN,\n payload: {\n threadKey\n }\n }));\n };\n}\n\nexport function addMessage({\n userId,\n threadKey,\n body,\n attachments\n}) {\n const request = axios.post('/api/chat/messages/new', {\n userId,\n threadKey,\n body,\n attachments\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: ADD_MESSAGE,\n payload: {\n userId,\n ...response.data\n }\n }));\n };\n}\n\nexport function openSidebar() {\n return {\n type: OPEN_SIDEBAR\n };\n}\n\nexport function closeSidebar() {\n return {\n type: CLOSE_SIDEBAR\n };\n}\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport {\n GET_LABELS,\n GET_MAILS,\n GET_MAIL,\n OPEN_SIDEBAR,\n CLOSE_SIDEBAR,\n OPEN_NEW_MESSAGE,\n CLOSE_NEW_MESSAGE\n} from 'src/actions/mailActions';\nimport objFromArray from 'src/utils/objFromArray';\n\nconst initialState = {\n mails: {\n byId: {},\n allIds: []\n },\n labels: [],\n sidebarOpen: false,\n newMessageOpen: false\n};\n\nconst mailReducer = (state = initialState, action) => {\n switch (action.type) {\n case GET_LABELS: {\n const { labels } = action.payload;\n\n return produce(state, (draft) => {\n draft.labels = labels;\n });\n }\n\n case GET_MAILS: {\n const { mails } = action.payload;\n\n return produce(state, (draft) => {\n draft.mails.byId = objFromArray(mails);\n draft.mails.allIds = Object.keys(draft.mails.byId);\n });\n }\n\n case GET_MAIL: {\n const { mail } = action.payload;\n\n return produce(state, (draft) => {\n draft.mails.byId[mail.id] = mail;\n\n if (!draft.mails.allIds.includes(mail.id)) {\n draft.mails.allIds.push(mail.id);\n }\n });\n }\n\n case OPEN_SIDEBAR: {\n return produce(state, (draft) => {\n draft.sidebarOpen = true;\n });\n }\n\n case CLOSE_SIDEBAR: {\n return produce(state, (draft) => {\n draft.sidebarOpen = false;\n });\n }\n\n case OPEN_NEW_MESSAGE: {\n return produce(state, (draft) => {\n draft.newMessageOpen = true;\n });\n }\n\n case CLOSE_NEW_MESSAGE: {\n return produce(state, (draft) => {\n draft.newMessageOpen = false;\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default mailReducer;\n","import axios from 'src/utils/axiosMock';\n\nexport const GET_LABELS = '@mail/get-labels';\nexport const GET_MAILS = '@mail/get-mails';\nexport const GET_MAIL = '@mail/get-mail';\nexport const OPEN_SIDEBAR = '@mail/open-sidebar';\nexport const CLOSE_SIDEBAR = '@mail/close-sidebar';\nexport const OPEN_NEW_MESSAGE = '@mail/open-new-message';\nexport const CLOSE_NEW_MESSAGE = '@mail/close-new-message';\n\nexport function getLabels() {\n const request = axios.get('/api/mail/labels');\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_LABELS,\n payload: response.data\n }));\n };\n}\n\nexport function getMails(params) {\n const request = axios.get('/api/mail/mails', {\n params\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_MAILS,\n payload: response.data\n }));\n };\n}\n\nexport function getMail(mailId) {\n const request = axios.get('/api/mail/mail', {\n params: {\n mailId\n }\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_MAIL,\n payload: response.data\n }));\n };\n}\n\nexport function openSidebar() {\n return {\n type: OPEN_SIDEBAR\n };\n}\n\nexport function closeSidebar() {\n return {\n type: CLOSE_SIDEBAR\n };\n}\n\nexport function openNewMessage() {\n return {\n type: OPEN_NEW_MESSAGE\n };\n}\n\nexport function closeNewMessage() {\n return {\n type: CLOSE_NEW_MESSAGE\n };\n}\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport {\n GET_QUEUES,\n GET_TICKETS,\n GET_CUSTOMER_TICKETS,\n GET_EXTERNAL_SUPPORT_TICKETS,\n GET_TICKET,\n OPEN_SIDEBAR,\n CLOSE_SIDEBAR,\n OPEN_NEW_MESSAGE,\n CLOSE_NEW_MESSAGE\n} from 'src/actions/queueActions';\nimport objFromArray from 'src/utils/objFromArray';\n\nconst initialState = {\n tickets: {\n byId: {},\n allIds: [],\n allColumns: {},\n allTickets: [],\n recordCount: 0,\n parserErrors: [],\n\n },\n queues: [],\n sidebarOpen: false,\n newMessageOpen: false\n};\n\nconst queueReducer = (state = initialState, action) => {\n switch (action.type) {\n case GET_QUEUES: {\n const queues = action.payload;\n\n return produce(state, (draft) => {\n draft.queues = queues;\n });\n }\n\n case GET_TICKETS: {\n const tickets = action.payload;\n return produce(state, (draft) => {\n draft.tickets.byId = objFromArray(tickets.tickets);\n draft.tickets.allIds = Object.keys(draft.tickets.byId);\n draft.tickets.allColumns = tickets.columns;\n draft.tickets.allTickets = tickets.tickets;\n draft.tickets.recordCount = tickets.recordCount;\n draft.tickets.searchId = tickets.searchId;\n draft.tickets.parserErrors = tickets.parserErrors;\n });\n }\n\n case GET_CUSTOMER_TICKETS: {\n const tickets = action.payload;\n return produce(state, (draft) => {\n draft.tickets.byId = objFromArray(tickets.tickets);\n draft.tickets.allIds = Object.keys(draft.tickets.byId);\n draft.tickets.recordCount = tickets.recordCount;\n draft.tickets.allColumns = tickets.columns;\n draft.tickets.allTickets = tickets.tickets;\n });\n }\n\n case GET_EXTERNAL_SUPPORT_TICKETS: {\n const tickets = action.payload;\n return produce(state, (draft) => {\n draft.tickets.byId = objFromArray(tickets.tickets);\n draft.tickets.allIds = Object.keys(draft.tickets.byId);\n draft.tickets.recordCount = tickets.recordCount;\n draft.tickets.allColumns = tickets.columns;\n draft.tickets.allTickets = tickets.tickets;\n });\n }\n\n case GET_TICKET: {\n const ticket = action.payload;\n\n return produce(state, (draft) => {\n draft.tickets.byId[ticket.id] = ticket;\n\n if (!draft.tickets.allIds.includes(ticket.id)) {\n draft.tickets.allIds.push(ticket.id);\n }\n });\n }\n\n case OPEN_SIDEBAR: {\n return produce(state, (draft) => {\n draft.sidebarOpen = true;\n });\n }\n\n case CLOSE_SIDEBAR: {\n return produce(state, (draft) => {\n draft.sidebarOpen = false;\n });\n }\n\n case OPEN_NEW_MESSAGE: {\n return produce(state, (draft) => {\n draft.newMessageOpen = true;\n });\n }\n\n case CLOSE_NEW_MESSAGE: {\n return produce(state, (draft) => {\n draft.newMessageOpen = false;\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default queueReducer;\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport _ from 'lodash';\nimport {\n GET_BOARD,\n CREATE_LIST,\n UPDATE_LIST,\n CLEAR_LIST,\n DELETE_LIST,\n CREATE_CARD,\n UPDATE_CARD,\n MOVE_CARD,\n DELETE_CARD,\n ADD_COMMENT,\n ADD_CHECKLIST,\n UPDATE_CHECKLIST,\n DELETE_CHECKLIST,\n ADD_CHECK_ITEM,\n UPDATE_CHECK_ITEM,\n DELETE_CHECK_ITEM\n} from 'src/actions/kanbanActions';\nimport objFromArray from 'src/utils/objFromArray';\n\nconst initialState = {\n isLoaded: false,\n lists: {\n byId: {},\n allIds: []\n },\n cards: {\n byId: {},\n allIds: []\n },\n members: {\n byId: {},\n allIds: []\n }\n};\n\nconst kanbanReducer = (state = initialState, action) => {\n switch (action.type) {\n case GET_BOARD: {\n const { board } = action.payload;\n\n return produce(state, (draft) => {\n draft.lists.byId = objFromArray(board.lists);\n draft.lists.allIds = Object.keys(draft.lists.byId);\n draft.cards.byId = objFromArray(board.cards);\n draft.cards.allIds = Object.keys(draft.cards.byId);\n draft.members.byId = objFromArray(board.members);\n draft.members.allIds = Object.keys(draft.members.byId);\n draft.isLoaded = true;\n });\n }\n\n case CREATE_LIST: {\n const { list } = action.payload;\n\n return produce(state, (draft) => {\n draft.lists.byId[list.id] = list;\n draft.lists.allIds.push(list.id);\n });\n }\n\n case UPDATE_LIST: {\n const { list } = action.payload;\n\n return produce(state, (draft) => {\n _.merge(draft.lists.byId[list.id], list);\n });\n }\n\n case CLEAR_LIST: {\n const { listId } = action.payload;\n\n return produce(state, (draft) => {\n const { cardIds } = draft.lists.byId[listId];\n\n draft.lists.byId[listId].cardIds = [];\n draft.cards.byId = _.omit(draft.cards.byId, cardIds);\n _.pull(draft.cards.allIds, ...cardIds);\n });\n }\n\n case DELETE_LIST: {\n const { listId } = action.payload;\n\n return produce(state, (draft) => {\n draft.lists.byId = _.omit(draft.lists.byId, listId);\n _.pull(draft.lists.allIds, listId);\n });\n }\n\n case CREATE_CARD: {\n const { card } = action.payload;\n\n return produce(state, (draft) => {\n draft.cards.byId[card.id] = card;\n draft.cards.allIds.push(card.id);\n draft.lists.byId[card.listId].cardIds.push(card.id);\n });\n }\n\n case UPDATE_CARD: {\n const { card } = action.payload;\n\n return produce(state, (draft) => {\n _.merge(draft.cards.byId[card.id], card);\n });\n }\n\n case MOVE_CARD: {\n const { cardId, position, listId } = action.payload;\n\n return produce(state, (draft) => {\n const { listId: sourceListId } = draft.cards.byId[cardId];\n\n // Remove card from source list\n _.pull(draft.lists.byId[sourceListId].cardIds, cardId);\n\n // If listId arg exists, it means that\n // we have to add the card to the new list\n if (listId) {\n draft.cards.byId[cardId].listId = listId;\n draft.lists.byId[listId].cardIds.splice(position, 0, cardId);\n } else {\n draft.lists.byId[sourceListId].cardIds.splice(position, 0, cardId);\n }\n });\n }\n\n case DELETE_CARD: {\n const { cardId } = action.payload;\n\n return produce(state, (draft) => {\n const { listId } = draft.cards.byId[cardId];\n\n draft.cards.byId = _.omit(draft.cards.byId, cardId);\n _.pull(draft.cards.allIds, cardId);\n _.pull(draft.lists.byId[listId].cardIds, cardId);\n });\n }\n\n case ADD_COMMENT: {\n const { comment } = action.payload;\n\n return produce(state, (draft) => {\n draft.cards.byId[comment.cardId].comments.push(comment);\n });\n }\n\n case ADD_CHECKLIST: {\n const { cardId, checklist } = action.payload;\n\n return produce(state, (draft) => {\n draft.cards.byId[cardId].checklists.push(checklist);\n });\n }\n\n case UPDATE_CHECKLIST: {\n const { cardId, checklist } = action.payload;\n\n return produce(state, (draft) => {\n const card = draft.cards.byId[cardId];\n\n card.checklists = _.map(card.checklists, (_checklist) => {\n if (_checklist.id === checklist.id) {\n return checklist;\n }\n\n return _checklist;\n });\n });\n }\n\n case DELETE_CHECKLIST: {\n const { cardId, checklistId } = action.payload;\n\n return produce(state, (draft) => {\n const card = draft.cards.byId[cardId];\n\n card.checklists = _.reject(card.checklists, { id: checklistId });\n });\n }\n\n case ADD_CHECK_ITEM: {\n const { cardId, checklistId, checkItem } = action.payload;\n\n return produce(state, (draft) => {\n const card = draft.cards.byId[cardId];\n\n _.assign(card, {\n checklists: _.map(card.checklists, (checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: [...checklist.checkItems, checkItem]\n });\n }\n\n return checklist;\n })\n });\n });\n }\n\n case UPDATE_CHECK_ITEM: {\n const {\n cardId,\n checklistId,\n checkItemId,\n checkItem\n } = action.payload;\n\n return produce(state, (draft) => {\n const card = draft.cards.byId[cardId];\n\n card.checklists = _.map(card.checklists, (checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: _.map(checklist.checkItems, (_checkItem) => {\n if (_checkItem.id === checkItemId) {\n return checkItem;\n }\n\n return _checkItem;\n })\n });\n }\n\n return checklist;\n });\n });\n }\n\n case DELETE_CHECK_ITEM: {\n const { cardId, checklistId, checkItemId } = action.payload;\n\n return produce(state, (draft) => {\n const card = draft.cards.byId[cardId];\n\n card.checklists = _.map(card.checklists, (checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: _.reject(checklist.checkItems, { id: checkItemId })\n });\n }\n\n return checklist;\n });\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default kanbanReducer;\n","import axios from 'src/utils/axiosMock';\n\nexport const GET_BOARD = '@kanban/get-board';\nexport const CREATE_LIST = '@kanban/create-list';\nexport const UPDATE_LIST = '@kanban/update-list';\nexport const CLEAR_LIST = '@kanban/clear-list';\nexport const DELETE_LIST = '@kanban/delete-list';\nexport const CREATE_CARD = '@kanban/create-card';\nexport const UPDATE_CARD = '@kanban/update-card';\nexport const MOVE_CARD = '@kanban/move-card';\nexport const DELETE_CARD = '@kanban/delete-card';\nexport const ADD_COMMENT = '@kanban/add-comment';\nexport const ADD_CHECKLIST = '@kanban/add-checklist';\nexport const UPDATE_CHECKLIST = '@kanban/update-checklist';\nexport const DELETE_CHECKLIST = '@kanban/delete-checklist';\nexport const ADD_CHECK_ITEM = '@kanban/add-check-item';\nexport const UPDATE_CHECK_ITEM = '@kanban/update-check-item';\nexport const DELETE_CHECK_ITEM = '@kanban/delete-check-item';\n\nexport function getBoard() {\n const request = axios.get('/api/kanban/board');\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_BOARD,\n payload: response.data\n }));\n };\n}\n\nexport function createList(name) {\n const request = axios.post('/api/kanban/board/lists/new', {\n name\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: CREATE_LIST,\n payload: response.data\n }));\n };\n}\n\nexport function updateList(listId, update) {\n const request = axios.post('/api/kanban/board/list/update', {\n listId,\n update\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: UPDATE_LIST,\n payload: response.data\n }));\n };\n}\n\nexport function clearList(listId) {\n const request = axios.post('/api/kanban/board/lists/clear', {\n listId\n });\n\n return (dispatch) => {\n request.then(() => dispatch({\n type: CLEAR_LIST,\n payload: {\n listId\n }\n }));\n };\n}\n\nexport function deleteList(listId) {\n const request = axios.post('/api/kanban/board/lists/remove', {\n listId\n });\n\n return (dispatch) => {\n request.then(() => dispatch({\n type: DELETE_LIST,\n payload: {\n listId\n }\n }));\n };\n}\n\nexport function createCard(listId, name) {\n const request = axios.post('/api/kanban/board/cards/new', {\n listId,\n name\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: CREATE_CARD,\n payload: response.data\n }));\n };\n}\n\nexport function updateCard(cardId, update) {\n const request = axios.post('/api/kanban/board/cards/update', {\n cardId,\n update\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: UPDATE_CARD,\n payload: response.data\n }));\n };\n}\n\nexport function moveCard(cardId, position, listId) {\n const request = axios.post('/api/kanban/board/cards/move', {\n cardId,\n position,\n listId\n });\n\n return (dispatch) => {\n request.then(() => dispatch({\n type: MOVE_CARD,\n payload: {\n cardId,\n position,\n listId\n }\n }));\n };\n}\n\nexport function deleteCard(cardId) {\n const request = axios.post('/api/kanban/board/cards/remove', {\n cardId\n });\n\n return (dispatch) => {\n request.then(() => dispatch({\n type: DELETE_CARD,\n payload: {\n cardId\n }\n }));\n };\n}\n\nexport function addComment(userId, cardId, message) {\n const request = axios.post('/api/kanban/board/cards/comments', {\n userId,\n cardId,\n message\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: ADD_COMMENT,\n payload: response.data\n }));\n };\n}\n\nexport function addChecklist(cardId, name) {\n const request = axios.post('/api/kanban/board/checklists/new', {\n cardId,\n name\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: ADD_CHECKLIST,\n payload: {\n cardId,\n ...response.data\n }\n }));\n };\n}\n\nexport function updateChecklist(cardId, checklistId, update) {\n const request = axios.post('/api/kanban/board/checklists/update', {\n cardId,\n checklistId,\n update\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: UPDATE_CHECKLIST,\n payload: {\n cardId,\n checklistId,\n ...response.data\n }\n }));\n };\n}\n\nexport function deleteChecklist(cardId, checklistId) {\n const request = axios.post('/api/kanban/board/checklists/remove', {\n cardId,\n checklistId\n });\n\n return (dispatch) => {\n request.then(() => dispatch({\n type: DELETE_CHECKLIST,\n payload: {\n cardId,\n checklistId\n }\n }));\n };\n}\n\nexport function addCheckItem(cardId, checklistId, name) {\n const request = axios.post('/api/kanban/board/checkitems/new', {\n cardId,\n checklistId,\n name\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: ADD_CHECK_ITEM,\n payload: {\n cardId,\n checklistId,\n ...response.data\n }\n }));\n };\n}\n\nexport function updateCheckItem(cardId, checklistId, checkItemId, update) {\n const request = axios.post('/api/kanban/board/checkitems/update', {\n cardId,\n checklistId,\n checkItemId,\n update\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: UPDATE_CHECK_ITEM,\n payload: {\n cardId,\n checklistId,\n checkItemId,\n ...response.data\n }\n }));\n };\n}\n\nexport function deleteCheckItem(cardId, checklistId, checkItemId) {\n const request = axios.post('/api/kanban/board/checkitems/remove', {\n cardId,\n checklistId,\n checkItemId\n });\n\n return (dispatch) => {\n request.then(() => dispatch({\n type: DELETE_CHECK_ITEM,\n payload: {\n cardId,\n checklistId,\n checkItemId\n }\n }));\n };\n}\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport { GET_ALL, GET_CUSTOMERS, RESET } from 'src/actions/organisationActions';\n\nconst initialState = {\n allCustomers: null,\n customers: null\n};\n\nconst organisationReducer = (state = initialState, action) => {\n switch (action.type) {\n case GET_ALL: {\n const customers = action.payload;\n\n return produce(state, (draft) => {\n draft.allCustomers = customers;\n });\n }\n\n case GET_CUSTOMERS: {\n const customers = action.payload;\n\n return produce(state, (draft) => {\n draft.customers = customers;\n });\n }\n\n case RESET: {\n return produce(state, (draft) => {\n draft.customers = null;\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default organisationReducer;\n","import {\n SET_NODES,\n SET_FLAT_NODES,\n APPEND_NODE,\n SET_ARTICLE,\n OPEN_SIDEBAR,\n CLOSE_SIDEBAR,\n} from 'src/actions/wikiActions';\n\nconst initialState = {\n currentNode: null,\n nodes: {},\n flatNodes: [],\n articles: {},\n sidebarOpen: false,\n};\n\nconst wikiReducer = (state = initialState, action) => {\n switch (action.type) {\n case SET_NODES:\n return {\n ...state,\n currentNode: action.payload.id,\n nodes: {\n ...state.nodes,\n [action.payload.id]: action.payload.nodes,\n },\n };\n case SET_FLAT_NODES:\n return {\n ...state,\n flatNodes: action.payload,\n };\n case APPEND_NODE:\n return {\n ...state,\n flatNodes: [...state.flatNodes, action.payload]\n };\n case SET_ARTICLE:\n return {\n ...state,\n articles: {\n ...state.articles,\n [action?.payload?.id]: action?.payload,\n },\n };\n case OPEN_SIDEBAR:\n return {\n ...state,\n sidebarOpen: true,\n };\n case CLOSE_SIDEBAR:\n return {\n ...state,\n sidebarOpen: false,\n };\n default:\n return state;\n }\n};\n\nexport default wikiReducer;\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport { GET_ALL, GET_PROJECT } from 'src/actions/projectActions';\n\nconst initialState = {\n projects: null,\n tasks: null\n};\n\nconst projectReducer = (state = initialState, action) => {\n switch (action.type) {\n case GET_ALL: {\n const projects = action.payload;\n\n return produce(state, (draft) => {\n draft.projects = projects;\n });\n }\n\n case GET_PROJECT: {\n const tasks = action.payload;\n\n return produce(state, (draft) => {\n draft.tasks = tasks;\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default projectReducer;\n","import { combineReducers } from 'redux';\nimport { reducer as formReducer } from 'redux-form';\nimport accountReducer from './accountReducer';\nimport notificationsReducer from './notificationsReducer';\nimport chatReducer from './chatReducer';\nimport mailReducer from './mailReducer';\nimport queueReducer from './queueReducer';\nimport kanbanReducer from './kanbanReducer';\nimport organisationReducer from './organisationReducer';\nimport wikiReducer from './wikiReducer';\nimport projectReducer from './projectReducer';\n\nconst rootReducer = combineReducers({\n account: accountReducer,\n notifications: notificationsReducer,\n chat: chatReducer,\n mail: mailReducer,\n queue: queueReducer,\n kanban: kanbanReducer,\n organisation: organisationReducer,\n form: formReducer,\n wiki: wikiReducer,\n project: projectReducer,\n});\n\nexport default rootReducer;\n","/* eslint-disable import/prefer-default-export */\nimport { applyMiddleware, createStore, compose } from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport { createLogger } from 'redux-logger';\nimport rootReducer from 'src/reducers';\nimport { ENABLE_REDUX_LOGGER } from 'src/config';\n\nconst loggerMiddleware = createLogger();\n\nexport function configureStore(preloadedState = {}) {\n const middlewares = [thunkMiddleware];\n\n if (ENABLE_REDUX_LOGGER) {\n middlewares.push(loggerMiddleware);\n }\n\n const middlewareEnhancer = composeWithDevTools(\n applyMiddleware(...middlewares)\n );\n\n const enhancers = [middlewareEnhancer];\n const composedEnhancers = compose(...enhancers);\n\n const store = createStore(rootReducer, preloadedState, composedEnhancers);\n\n return store;\n}\n","import React from 'react';\nimport {\n Box,\n CircularProgress,\n makeStyles\n} from '@material-ui/core';\nimport Logo from 'src/components/Logo';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n alignItems: 'center',\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n left: 0,\n padding: theme.spacing(3),\n position: 'fixed',\n top: 0,\n width: '100%',\n zIndex: 2000\n },\n logo: {\n width: 200,\n maxWidth: '100%'\n }\n}));\n\nfunction SlashScreen() {\n const classes = useStyles();\n\n return (\n
\n \n \n \n \n
\n );\n}\n\nexport default SlashScreen;\n","import React, {\n useEffect,\n useState\n} from 'react';\nimport { useDispatch } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport SplashScreen from 'src/components/SplashScreen';\nimport { setUserData, logout } from 'src/actions/accountActions';\nimport authService from 'src/services/authService';\n\nfunction Auth({ children }) {\n const dispatch = useDispatch();\n const [isLoading, setLoading] = useState(true);\n\n useEffect(() => {\n const initAuth = async () => {\n authService.setAxiosInterceptors();\n\n authService.setDefaults();\n\n if (await authService.isAuthenticated()) {\n try {\n const user = await authService.loginInWithToken();\n\n await dispatch(setUserData(user));\n } catch (error) {\n dispatch(logout());\n }\n }\n\n setLoading(false);\n };\n\n initAuth();\n }, [dispatch]);\n\n if (isLoading) {\n return ;\n }\n\n return children;\n}\n\nAuth.propTypes = {\n children: PropTypes.any\n};\n\nexport default Auth;\n","import React from 'react';\nimport { Helmet } from 'react-helmet';\n\nconst GA_MEASUREMENT_ID = process.env.REACT_APP_GA_MEASUREMENT_ID;\n\nfunction GoogleAnalytics() {\n return (\n \n \n \n \n );\n}\n\nexport default GoogleAnalytics;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router';\n\nfunction ScrollReset() {\n const location = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [location.pathname]);\n\n return null;\n}\n\nexport default ScrollReset;\n","export const softShadows = [\n 'none',\n '0 0 0 1px rgba(63,63,68,0.05), 0 1px 2px 0 rgba(63,63,68,0.15)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 2px 2px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 5px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 8px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 9px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 10px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 11px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 12px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 13px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 14px 24px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 16px 28px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 18px 30px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 20px 32px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 22px 34px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 24px 36px -8px rgba(0,0,0,0.25)'\n];\n\nexport const strongShadows = [\n 'none',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 2px 2px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 8px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 5px 8px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 12px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 12px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 16px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 16px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 8px 18px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 9px 18px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 10px 20px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 11px 20px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 12px 22px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 13px 22px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 14px 24px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 16px 28px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 18px 30px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 20px 32px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 22px 34px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 24px 36px -8px rgba(0,0,0,0.50)'\n];\n","/* eslint-disable no-console */\n/* eslint-disable import/prefer-default-export */\nimport _ from 'lodash';\nimport { colors, createMuiTheme, responsiveFontSizes } from '@material-ui/core';\nimport typography from './typography';\nimport { softShadows, strongShadows } from './shadows';\nimport { THEMES } from '../constants';\n\nconst baseConfig = {\n direction: 'ltr',\n typography,\n overrides: {\n MuiLinearProgress: {\n root: {\n borderRadius: 3,\n overflow: 'hidden'\n }\n },\n MuiListItemIcon: {\n root: {\n minWidth: 32\n }\n },\n MuiChip: {\n root: {\n backgroundColor: 'rgba(0,0,0,0.075)'\n }\n }\n }\n};\n\nconst themeConfigs = [\n {\n name: THEMES.LIGHT,\n overrides: {\n MuiInputBase: {\n input: {\n '&::placeholder': {\n opacity: 1,\n color: colors.blueGrey[600]\n }\n }\n }\n },\n palette: {\n type: 'light',\n action: {\n active: colors.blueGrey[600]\n },\n background: {\n default: colors.common.white,\n dark: '#f4f6f8',\n calendar: '#FCF8E3',\n paper: colors.common.white\n },\n primary: {\n main: colors.indigo[600]\n },\n secondary: {\n main: '#5850EC'\n },\n text: {\n primary: colors.blueGrey[900],\n secondary: colors.blueGrey[600]\n }\n },\n shadows: softShadows\n },\n {\n name: THEMES.ONE_DARK,\n palette: {\n type: 'dark',\n action: {\n active: 'rgba(255, 255, 255, 0.54)',\n hover: 'rgba(255, 255, 255, 0.04)',\n selected: 'rgba(255, 255, 255, 0.08)',\n disabled: 'rgba(255, 255, 255, 0.26)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n focus: 'rgba(255, 255, 255, 0.12)'\n },\n background: {\n default: '#282C34',\n dark: '#1c2025',\n calendar: '#1c2025',\n paper: '#282C34'\n },\n primary: {\n main: '#8a85ff'\n },\n secondary: {\n main: '#8a85ff'\n },\n text: {\n primary: '#e6e5e8',\n secondary: '#adb0bb'\n }\n },\n shadows: strongShadows\n },\n {\n name: THEMES.UNICORN,\n palette: {\n type: 'dark',\n action: {\n active: 'rgba(255, 255, 255, 0.54)',\n hover: 'rgba(255, 255, 255, 0.04)',\n selected: 'rgba(255, 255, 255, 0.08)',\n disabled: 'rgba(255, 255, 255, 0.26)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n focus: 'rgba(255, 255, 255, 0.12)'\n },\n background: {\n default: '#2a2d3d',\n dark: '#222431',\n calendar: '#1c2025',\n paper: '#2a2d3d'\n },\n primary: {\n main: '#a67dff'\n },\n secondary: {\n main: '#a67dff'\n },\n text: {\n primary: '#f6f5f8',\n secondary: '#9699a4'\n }\n },\n shadows: strongShadows\n },\n {\n name: THEMES.FOREST,\n overrides: {\n MuiInputBase: {\n input: {\n '&::placeholder': {\n opacity: 1,\n color: colors.blueGrey[600]\n }\n }\n }\n },\n palette: {\n type: 'light',\n action: {\n active: colors.blueGrey[600]\n },\n background: {\n default: colors.common.white,\n dark: '#f4f6f8',\n calendar: '#FCF8E3',\n paper: colors.common.white\n },\n primary: {\n main: '#aed581'\n },\n secondary: {\n main: '#7da453'\n },\n text: {\n primary: colors.blueGrey[900],\n secondary: colors.blueGrey[600]\n }\n },\n shadows: softShadows\n },\n];\n\nexport function createTheme(settings = {}) {\n let themeConfig = themeConfigs.find((theme) => theme.name === settings.theme);\n\n if (window.location.hostname.includes('itsupport.companionsoftware')) {\n themeConfig = themeConfigs.find((theme) => theme.name === THEMES.FOREST);\n }\n\n if (!themeConfig) {\n console.warn(new Error(`The theme ${settings.theme} is not valid`));\n [themeConfig] = themeConfigs;\n }\n\n let theme = createMuiTheme(\n _.merge(\n {},\n baseConfig,\n themeConfig,\n { direction: settings.direction }\n )\n );\n\n if (settings.responsiveFontSizes) {\n theme = responsiveFontSizes(theme);\n }\n\n return theme;\n}\n","export default {\n h1: {\n fontWeight: 500,\n fontSize: 35,\n letterSpacing: '-0.24px'\n },\n h2: {\n fontWeight: 500,\n fontSize: 29,\n letterSpacing: '-0.24px'\n },\n h3: {\n fontWeight: 500,\n fontSize: 24,\n letterSpacing: '-0.06px'\n },\n h4: {\n fontWeight: 500,\n fontSize: 20,\n letterSpacing: '-0.06px'\n },\n h5: {\n fontWeight: 500,\n fontSize: 16,\n letterSpacing: '-0.05px'\n },\n h6: {\n fontWeight: 500,\n fontSize: 14,\n letterSpacing: '-0.05px'\n },\n overline: {\n fontWeight: 500\n }\n};\n","import React, { useState } from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n Button,\n Collapse,\n ListItem,\n makeStyles\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n display: 'block',\n paddingTop: 0,\n paddingBottom: 0\n },\n itemLeaf: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%'\n },\n buttonLeaf: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%',\n fontWeight: theme.typography.fontWeightRegular,\n '&.depth-0': {\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n }\n }\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(1)\n },\n title: {\n marginRight: 'auto'\n },\n active: {\n color: theme.palette.secondary.main,\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n },\n '& $icon': {\n color: theme.palette.secondary.main\n }\n }\n}));\n\nfunction NavItem({\n title,\n href,\n depth,\n children,\n icon: Icon,\n className,\n open: openProp,\n info: Info,\n exact,\n ...rest\n}) {\n const classes = useStyles();\n const [open, setOpen] = useState(openProp);\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n let paddingLeft = 8;\n\n if (depth > 0) {\n paddingLeft = 32 + 8 * depth;\n }\n\n const style = { paddingLeft };\n\n if (children) {\n return (\n \n \n {Icon && (\n \n )}\n \n {title}\n \n {open ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n );\n }\n\n return (\n \n \n {Icon && (\n \n )}\n \n {title}\n \n {Info && }\n \n \n );\n}\n\nNavItem.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n depth: PropTypes.number.isRequired,\n href: PropTypes.string,\n icon: PropTypes.any,\n info: PropTypes.any,\n open: PropTypes.bool,\n title: PropTypes.string.isRequired,\n exact: PropTypes.bool,\n};\n\nNavItem.defaultProps = {\n open: false\n};\n\nexport default NavItem;\n","/* eslint-disable no-use-before-define */\n/* eslint-disable react/prop-types */\nimport React, { useEffect, useState } from 'react';\nimport clsx from 'clsx';\nimport { useLocation, matchPath } from 'react-router';\nimport { Link as RouterLink } from 'react-router-dom';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Drawer,\n Hidden,\n List,\n ListSubheader,\n makeStyles,\n IconButton,\n Grid,\n} from '@material-ui/core';\nimport {\n BarChart as ReportsIcon,\n PieChart as DashboardIcon,\n Users as UsersIcon,\n List as QueuesIcon,\n Calendar as CalendarIcon,\n FilePlus as RaiseRequestIcon,\n Clock as TimesheetIcon,\n Search as TicketsIcon,\n ChevronsLeft as CloseNavBarIcon,\n ChevronsRight as OpenNavBarIcon,\n BookOpen as ArticleIcon,\n Star as SavedArticleIcon,\n Layers as ProjectIcon,\n Tool as BuildIcon,\n Map as MapIcon,\n Share2 as WorkflowIcon,\n Key as SecretIcon,\n User as MyDashboardIcon,\n Film as CloudflareVideoIcon,\n} from 'react-feather';\nimport Logo from 'src/components/Logo';\nimport NavItem from './NavItem';\n\nconst navConfig = (navOpen) => [\n {\n subheader: 'Support',\n items: [\n {\n title: 'Queues',\n href: '/app/queue',\n icon: QueuesIcon,\n },\n {\n title: 'Customers',\n icon: UsersIcon,\n href: '/app/management/customers',\n },\n {\n title: 'Raise a request',\n icon: RaiseRequestIcon,\n href: '/app/tickets/create',\n },\n {\n title: 'Projects',\n icon: ProjectIcon,\n href: '/app/projects',\n },\n {\n title: 'Tickets',\n icon: TicketsIcon,\n href: '/app/search',\n },\n ],\n },\n {\n subheader: 'Admin',\n items: [\n {\n title: 'Reports',\n icon: ReportsIcon,\n href: '/app/adminReports',\n },\n {\n title: 'Dashboard',\n icon: DashboardIcon,\n href: '/app/reports/dashboard',\n },\n {\n title: 'My Dashboard',\n icon: MyDashboardIcon,\n href: '/app/reports/myDashboard',\n },\n {\n title: 'Calendar',\n href: '/app/calendar',\n icon: CalendarIcon,\n },\n {\n title: 'Release/Patches',\n href: '/app/management/customerBuildVersions',\n icon: BuildIcon,\n },\n {\n title: 'Timesheets',\n href: '/app/reports/timesheets',\n icon: TimesheetIcon,\n },\n {\n title: 'More',\n items: [\n {\n title: 'Workflows',\n href: '/app/workflows',\n icon: WorkflowIcon,\n },\n {\n title: 'Secrets',\n href: '/app/secrets',\n icon: SecretIcon,\n },\n {\n title: 'Cloudflare Videos',\n href: '/app/cloudflare',\n icon: CloudflareVideoIcon,\n },\n {\n title: 'Roadmap',\n href: '/app/roadmap',\n icon: MapIcon,\n },\n {\n title: 'Ticket Feedback',\n href: '/app/ticketFeedback',\n icon: SavedArticleIcon,\n },\n ],\n },\n ],\n },\n {\n subheader: navOpen ? 'Knowledge Base' : 'KB',\n items: [\n {\n title: 'Pages',\n icon: ArticleIcon,\n href: '/app/wiki',\n exact: true,\n },\n {\n title: 'Saved Articles',\n icon: SavedArticleIcon,\n href: '/app/wiki/saved',\n exact: true,\n },\n {\n title: 'Create article',\n icon: RaiseRequestIcon,\n href: '/app/wiki/create',\n exact: true,\n },\n ],\n },\n];\n\nconst reduceChildRoutes = ({\n acc, pathname, item, depth = 0, navOpen\n}) => {\n const key = item.title + depth;\n\n if (item.items) {\n const open = matchPath(pathname, {\n path: item.href,\n exact: false,\n });\n\n acc.push(\n \n {renderNavItems({\n depth: depth + 1,\n pathname,\n items: item.items,\n navOpen,\n })}\n \n );\n } else {\n acc.push(\n \n );\n }\n\n return acc;\n};\n\nconst renderNavItems = ({ items, navOpen, ...rest }) => (\n \n {items.reduce(\n (acc, item) => reduceChildRoutes({\n acc,\n item,\n navOpen,\n ...rest,\n }),\n []\n )}\n \n);\n\nconst drawerWidth = 256;\n\nconst useStyles = makeStyles((theme) => ({\n mobileDrawer: {\n width: 256,\n },\n desktopDrawer: {\n width: 256,\n top: 64,\n height: 'calc(100% - 64px)',\n },\n avatar: {\n cursor: 'pointer',\n width: 64,\n height: 64,\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: 'nowrap',\n },\n drawerOpen: {\n width: drawerWidth,\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawerClose: {\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: 'hidden',\n width: theme.spacing(7) + 1,\n [theme.breakpoints.up('sm')]: {\n width: theme.spacing(9) + 1,\n },\n },\n toolbar: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n },\n}));\n\nconst NavBar = ({ openMobile, onMobileClose }) => {\n const classes = useStyles();\n const location = useLocation();\n const [navOpen, setNavOpen] = useState(\n localStorage.getItem('navOpen') !== 'false'\n );\n\n useEffect(() => {\n const checkNavOpen = () => {\n const item = localStorage.getItem('navOpen');\n\n if (item) {\n setNavOpen(item === 'true');\n }\n };\n\n window.addEventListener('storage', checkNavOpen);\n\n return () => {\n window.removeEventListener('storage', checkNavOpen);\n };\n }, []);\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location.pathname]);\n\n const content = (\n \n \n \n \n \n \n \n \n \n\n \n {navConfig(navOpen || openMobile).map((config) => (\n \n {config.subheader}\n \n )}\n >\n {renderNavItems({\n items: config.items,\n pathname: location.pathname,\n navOpen: navOpen || openMobile,\n })}\n \n ))}\n \n \n\n {openMobile ? null : (\n
\n {navOpen ? (\n \n {\n localStorage.setItem('navOpen', !navOpen);\n setNavOpen(!navOpen);\n window.dispatchEvent(new Event('storage'));\n }}\n >\n \n \n \n ) : (\n \n {\n localStorage.setItem('navOpen', !navOpen);\n setNavOpen(!navOpen);\n window.dispatchEvent(new Event('storage'));\n }}\n >\n \n \n \n )}\n
\n )}\n \n );\n\n return (\n <>\n \n \n {content}\n \n \n \n \n {content}\n \n \n \n );\n};\n\nNavBar.propTypes = {\n onMobileClose: PropTypes.func,\n openMobile: PropTypes.bool,\n};\n\nexport default NavBar;\n","import React, {\n useRef,\n useState\n} from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useSnackbar } from 'notistack';\nimport {\n Avatar,\n Box,\n ButtonBase,\n Hidden,\n Menu,\n MenuItem,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport { logout } from 'src/actions/accountActions';\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n height: 32,\n width: 32,\n marginRight: theme.spacing(1)\n },\n popover: {\n width: 200\n }\n}));\n\nfunction Account() {\n const classes = useStyles();\n const history = useHistory();\n const ref = useRef(null);\n const dispatch = useDispatch();\n const account = useSelector((state) => state.account);\n const { enqueueSnackbar } = useSnackbar();\n const [isOpen, setOpen] = useState(false);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleLogout = async () => {\n try {\n handleClose();\n await dispatch(logout());\n history.push('/');\n } catch (error) {\n enqueueSnackbar('Unable to logout', {\n variant: 'error'\n });\n }\n };\n\n return (\n <>\n \n \n \n \n {`${account.user.firstName} ${account.user.lastName}`}\n \n \n \n \n \n Account\n \n \n Logout\n \n \n \n );\n}\n\nexport default Account;\n","import React, {\n useRef,\n useState,\n useEffect\n} from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n useDispatch,\n useSelector\n} from 'react-redux';\nimport {\n Avatar,\n Box,\n Button,\n IconButton,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Popover,\n SvgIcon,\n Tooltip,\n Typography,\n makeStyles,\n useTheme,\n Badge\n} from '@material-ui/core';\nimport {\n Bell as BellIcon,\n MessageCircle as MessageIcon,\n} from 'react-feather';\nimport { getNotifications } from 'src/actions/notificationsActions';\nimport axios from 'src/utils/axios';\n\nconst useStyles = makeStyles((theme) => ({\n popover: {\n width: 320\n },\n icon: {\n backgroundColor: theme.palette.secondary.main,\n color: theme.palette.secondary.contrastText\n },\n badge: {\n fontSize: 10,\n borderRadius: 5,\n marginTop: 10,\n marginRight: 5,\n },\n\n}));\n\nfunction Notifications() {\n const classes = useStyles();\n const notifications = useSelector((state) => state.notifications.notifications);\n const ref = useRef(null);\n const dispatch = useDispatch();\n const [isOpen, setOpen] = useState(false);\n const theme = useTheme();\n const [loaded, setLoaded] = useState(false);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleClick = (notification) => {\n if (notification.portalSeen) {\n setOpen(false);\n return;\n }\n\n axios.put(`/api/notification/${notification.id}/markAsRead`)\n .then(() => {\n dispatch(getNotifications());\n setOpen(false);\n })\n .catch((error) => {\n console.error(error);\n setOpen(false);\n });\n };\n\n const markAllAsRead = () => {\n if (notifications.filter((x) => !x.portalSeen).length === 0) {\n setOpen(false);\n return;\n }\n\n axios.put('/api/notification/markAllAsRead', null)\n .then(() => {\n dispatch(getNotifications());\n setOpen(false);\n })\n .catch((error) => {\n console.error(error);\n setOpen(false);\n });\n };\n\n useEffect(() => {\n let interval = null;\n interval = setInterval(() => {\n dispatch(getNotifications());\n }, 30000);\n\n return () => clearInterval(interval);\n }, [dispatch]);\n\n useEffect(() => {\n setLoaded(false);\n dispatch(getNotifications());\n }, [loaded, dispatch]);\n\n return (\n <>\n \n !x.portalSeen).length === 0)}\n >\n \n \n \n \n \n \n \n \n \n \n Notifications\n \n \n {notifications.length === 0 ? (\n \n \n There are no notifications\n \n \n ) : (\n <>\n \n {notifications.map((notification) => (\n handleClick(notification)}\n >\n \n \n \n \n \n \n \n \n \n ))}\n \n \n \n Mark all as read\n \n \n \n )}\n \n \n );\n}\n\nexport default Notifications;\n","import React, { useState, useRef } from 'react';\nimport { capitalCase } from 'change-case';\nimport {\n Box,\n Button,\n FormControlLabel,\n IconButton,\n Popover,\n SvgIcon,\n Switch,\n TextField,\n Tooltip,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport { Settings as SettingsIcon } from 'react-feather';\nimport useSettings from 'src/hooks/useSettings';\nimport { THEMES } from 'src/constants';\n\nconst useStyles = makeStyles((theme) => ({\n popover: {\n width: 320,\n padding: theme.spacing(2)\n }\n}));\n\nfunction Settings() {\n const classes = useStyles();\n const ref = useRef(null);\n const { settings, saveSettings } = useSettings();\n const [isOpen, setOpen] = useState(false);\n const [values, setValues] = useState({\n direction: settings.direction,\n responsiveFontSizes: settings.responsiveFontSizes,\n hideQueueInDetail: settings.hideQueueInDetail,\n reverseCommentOrder: settings.reverseCommentOrder,\n theme: settings.theme\n });\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleChange = (field, value) => {\n setValues({\n ...values,\n [field]: value\n });\n };\n\n const handleSave = () => {\n saveSettings(values);\n setOpen(false);\n };\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n Settings\n \n\n \n handleChange('responsiveFontSizes', event.target.checked)}\n />\n )}\n label=\"Responsive font sizes\"\n />\n \n\n \n handleChange('reverseCommentOrder', event.target.checked)}\n />\n )}\n label=\"Reverse Comment Order\"\n />\n \n\n \n handleChange('hideQueueInDetail', event.target.checked)}\n />\n )}\n label=\"Hide Queue In Detail\"\n />\n \n\n \n handleChange('theme', event.target.value)}\n select\n SelectProps={{ native: true }}\n value={values.theme}\n variant=\"outlined\"\n >\n {Object.keys(THEMES).map((theme) => (\n \n {capitalCase(theme)}\n \n ))}\n \n \n \n \n Save Settings\n \n \n \n \n );\n}\n\nexport default Settings;\n","import React, { useState, useRef } from 'react';\nimport { useSnackbar } from 'notistack';\nimport {\n Button,\n IconButton,\n SvgIcon,\n Tooltip,\n makeStyles,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogContentText,\n DialogActions,\n Backdrop,\n CircularProgress,\n} from '@material-ui/core';\nimport { Gift as GiftIcon } from 'react-feather';\nimport { useHistory } from 'react-router';\nimport axios from 'src/utils/axios';\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n backdrop: {\n zIndex: theme.zIndex.tooltip + 1,\n color: '#fff',\n },\n}));\n\nfunction TicketAssign() {\n const classes = useStyles();\n const ref = useRef(null);\n const [backdropOpen, setBackdropOpen] = useState(false);\n const [questionOpen, setQuestionOpen] = useState(false);\n const [questionTitle, setQuestionTitle] = useState('');\n const [questionMessage, setQuestionMessage] = useState('');\n const { enqueueSnackbar } = useSnackbar();\n const history = useHistory();\n\n const handleQuestionClose = (answer) => {\n if (!answer) {\n setQuestionOpen(false);\n return;\n }\n\n if (questionTitle === 'Auto Assign Ticket') {\n setBackdropOpen(true);\n axios.post('/api/ticket/AutoAssignTicket', null)\n .then((result) => {\n setBackdropOpen(false);\n if (result.data.successful) {\n history.push(`/app/queue/all/${result.data.info}`);\n } else {\n enqueueSnackbar(result.data.info, {\n variant: result.data.info === 'No Tickets Left in Queue' ? 'success' : 'error'\n });\n }\n })\n .catch((error) => {\n setBackdropOpen(false);\n enqueueSnackbar(error.message, {\n variant: 'error'\n });\n });\n }\n\n setQuestionOpen(false);\n };\n\n return (\n <>\n \n \n \n\n \n {\n setQuestionTitle('Auto Assign Ticket');\n setQuestionMessage('Assign next available ticket?');\n setQuestionOpen(true);\n }}\n >\n \n \n \n \n \n\n handleQuestionClose(false)}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n {questionTitle}\n \n \n {questionMessage}\n \n \n \n \n \n \n \n\n \n );\n}\n\nexport default TicketAssign;\n","import React, { useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useHistory } from 'react-router';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n AppBar,\n Box,\n Hidden,\n IconButton,\n Toolbar,\n makeStyles,\n SvgIcon,\n TextField,\n InputAdornment\n} from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport {\n Menu as MenuIcon,\n Search as SearchIcon,\n} from 'react-feather';\nimport Logo from 'src/components/Logo';\nimport { THEMES } from 'src/constants';\nimport { useSelector } from 'react-redux';\nimport { searchPath } from 'src/views/queues/QueueView/QueueList';\nimport Account from './Account';\nimport Notifications from './Notifications';\nimport Settings from './Settings';\nimport TicketAssign from './TicketAssign';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: theme.zIndex.drawer + 100,\n ...theme.name === THEMES.LIGHT ? {\n boxShadow: 'none',\n backgroundColor: theme.palette.primary.main\n } : {},\n ...theme.name === THEMES.ONE_DARK ? {\n backgroundColor: theme.palette.background.default\n } : {}\n },\n toolbar: {\n minHeight: 64\n },\n input: {\n color: 'black'\n }\n}));\n\nfunction TopBar({\n className,\n onMobileNavOpen,\n ...rest\n}) {\n const classes = useStyles();\n const [searchValue, setSearchValue] = useState('');\n const history = useHistory();\n const { tickets } = useSelector((state) => state.queue);\n const account = useSelector((state) => state.account);\n\n const search = (event, value) => {\n const ticket = tickets?.allTickets.filter((item) => `${item.id} - ${item.summary}` === value)[0];\n event.target.blur();\n\n if (ticket) { return history.push(`/app/queue/all/${ticket.id}`); }\n\n if (value.match(/^[0-9]*$/)) { return history.push(`/app/queue/all/${value}`); }\n\n return history.push(searchPath({ q: `Text ~ '${value}'`, order: 'Id', dir: 'DESC' }));\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n `${option.id} - ${option.summary}`))}\n value={searchValue ?? ''}\n clearOnBlur\n onChange={(e, v) => search(e, v)}\n renderInput={(params) => (\n setSearchValue(v)}\n InputProps={{\n ...params.InputProps,\n type: 'search',\n className: classes.input,\n startAdornment: (\n \n \n \n \n \n )\n }}\n />\n )}\n />\n \n \n {account.user.userPermissions.indexOf('DisableAssignee') === -1 ? null\n : (\n \n )}\n \n \n \n \n \n );\n}\n\nTopBar.propTypes = {\n className: PropTypes.string,\n onMobileNavOpen: PropTypes.func\n};\n\nexport default TopBar;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport { useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { logout } from 'src/actions/accountActions';\nimport NavBar from './NavBar';\nimport TopBar from './TopBar';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64,\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nfunction DashboardLayout({ children }) {\n const classes = useStyles();\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\n const dispatch = useDispatch();\n const history = useHistory();\n const account = useSelector((state) => state.account);\n\n useEffect(() => {\n if (window.location.href.toLowerCase().includes('browse/css-')) {\n const ticketId = window.location.href.toLowerCase().substring(window.location.href.toLowerCase().indexOf('css-') + 4, window.location.href.length);\n return history.push(`/app/queue/all/${ticketId}`);\n }\n\n if (account.user.role === 'Admin') { return undefined; }\n if (account.user.role === 'Dashboard') { return undefined; }\n if (account.user.role === 'User') {\n if (window.location.href.includes('queue/all')) {\n const ticketId = window.location.href.substring(window.location.href.indexOf('all/') + 4, window.location.href.length);\n return history.push(`/customerPortal/tickets/${ticketId}`);\n }\n if (window.location.href.includes('app/wiki')) {\n const articleId = window.location.href.substring(window.location.href.indexOf('wiki') + 4, window.location.href.length);\n return history.push(`/customerPortal/articles${articleId}`);\n }\n return history.push('/customerPortal');\n }\n if (account.user.role === 'ExternalSupport') {\n if (window.location.href.includes('queue/all')) {\n const ticketId = window.location.href.substring(window.location.href.indexOf('all/') + 4, window.location.href.length);\n\n if (ticketId.includes('queue/all')) return history.push('/externalSupportPortal/tickets');\n return history.push(`/externalSupportPortal/tickets/${ticketId}`);\n }\n return history.push('/externalSupportPortal');\n }\n dispatch(logout());\n return history.push('/');\n });\n\n return (\n
\n setMobileNavOpen(true)} />\n setMobileNavOpen(false)}\n openMobile={isMobileNavOpen}\n />\n
\n
\n
\n {children}\n
\n
\n
\n
\n );\n}\n\nDashboardLayout.propTypes = {\n children: PropTypes.any\n};\n\nexport default DashboardLayout;\n","import React, {\n useRef,\n useState\n} from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useSnackbar } from 'notistack';\nimport {\n Avatar,\n Box,\n ButtonBase,\n Hidden,\n Menu,\n MenuItem,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport { logout } from 'src/actions/accountActions';\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n height: 32,\n width: 32,\n marginRight: theme.spacing(1)\n },\n popover: {\n width: 200\n }\n}));\n\nfunction Account() {\n const classes = useStyles();\n const history = useHistory();\n const ref = useRef(null);\n const dispatch = useDispatch();\n const account = useSelector((state) => state.account);\n const { enqueueSnackbar } = useSnackbar();\n const [isOpen, setOpen] = useState(false);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleLogout = async () => {\n try {\n handleClose();\n await dispatch(logout());\n history.push('/');\n } catch (error) {\n enqueueSnackbar('Unable to logout', {\n variant: 'error'\n });\n }\n };\n\n return (\n <>\n \n \n \n \n {`${account.user.firstName} ${account.user.lastName}`}\n \n \n \n \n \n Account\n \n \n Logout\n \n \n \n );\n}\n\nexport default Account;\n","import React, {\n useRef,\n useState,\n useEffect\n} from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n useDispatch,\n useSelector\n} from 'react-redux';\nimport {\n Avatar,\n Box,\n Button,\n IconButton,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Popover,\n SvgIcon,\n Tooltip,\n Typography,\n makeStyles,\n useTheme,\n Badge\n} from '@material-ui/core';\nimport {\n Bell as BellIcon,\n MessageCircle as MessageIcon,\n} from 'react-feather';\nimport { getNotifications } from 'src/actions/notificationsActions';\nimport axios from 'src/utils/axios';\n\nconst useStyles = makeStyles((theme) => ({\n popover: {\n width: 320\n },\n icon: {\n backgroundColor: theme.palette.secondary.main,\n color: theme.palette.secondary.contrastText\n },\n badge: {\n fontSize: 10,\n borderRadius: 5,\n marginTop: 10,\n marginRight: 5,\n },\n\n}));\n\nfunction Notifications() {\n const classes = useStyles();\n const notifications = useSelector((state) => state.notifications.notifications);\n const ref = useRef(null);\n const dispatch = useDispatch();\n const [isOpen, setOpen] = useState(false);\n const theme = useTheme();\n const [loaded, setLoaded] = useState(false);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleClick = (notification) => {\n if (notification.portalSeen) {\n setOpen(false);\n return;\n }\n\n axios.put(`/api/notification/${notification.id}/markAsRead`)\n .then(() => {\n dispatch(getNotifications());\n setOpen(false);\n })\n .catch((error) => {\n console.error(error);\n setOpen(false);\n });\n };\n\n const markAllAsRead = () => {\n if (notifications.filter((x) => !x.portalSeen).length === 0) {\n setOpen(false);\n return;\n }\n\n axios.put('/api/notification/markAllAsRead', null)\n .then(() => {\n dispatch(getNotifications());\n setOpen(false);\n })\n .catch((error) => {\n console.error(error);\n setOpen(false);\n });\n };\n\n useEffect(() => {\n let interval = null;\n interval = setInterval(() => {\n dispatch(getNotifications());\n }, 300000);\n\n return () => clearInterval(interval);\n }, [dispatch]);\n\n useEffect(() => {\n setLoaded(false);\n dispatch(getNotifications());\n }, [loaded, dispatch]);\n\n return (\n <>\n \n !x.portalSeen).length === 0)}\n >\n \n \n \n \n \n \n \n \n \n \n Notifications\n \n \n {notifications.length === 0 ? (\n \n \n There are no notifications\n \n \n ) : (\n <>\n \n {notifications.map((notification) => (\n handleClick(notification)}\n >\n \n \n \n \n \n \n \n \n \n ))}\n \n \n \n Mark all as read\n \n \n \n )}\n \n \n );\n}\n\nexport default Notifications;\n","import React, { useState, useRef } from 'react';\nimport { capitalCase } from 'change-case';\nimport {\n Box,\n Button,\n FormControlLabel,\n IconButton,\n Popover,\n SvgIcon,\n Switch,\n TextField,\n Tooltip,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport { Settings as SettingsIcon } from 'react-feather';\nimport useSettings from 'src/hooks/useSettings';\nimport { THEMES } from 'src/constants';\n\nconst useStyles = makeStyles((theme) => ({\n badge: {\n height: 10,\n width: 10,\n borderRadius: 5,\n marginTop: 10,\n marginRight: 5\n },\n popover: {\n width: 320,\n padding: theme.spacing(2)\n }\n}));\n\nfunction Settings() {\n const classes = useStyles();\n const ref = useRef(null);\n const { settings, saveSettings } = useSettings();\n const [isOpen, setOpen] = useState(false);\n const [values, setValues] = useState({\n direction: settings.direction,\n responsiveFontSizes: settings.responsiveFontSizes,\n reverseCommentOrder: settings.reverseCommentOrder,\n theme: settings.theme\n });\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleChange = (field, value) => {\n setValues({\n ...values,\n [field]: value\n });\n };\n\n const handleSave = () => {\n saveSettings(values);\n setOpen(false);\n };\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n Settings\n \n\n \n handleChange('responsiveFontSizes', event.target.checked)}\n />\n )}\n label=\"Responsive font sizes\"\n />\n \n\n \n handleChange('reverseCommentOrder', event.target.checked)}\n />\n )}\n label=\"Reverse Comment Order\"\n />\n \n\n \n handleChange('theme', event.target.value)}\n select\n SelectProps={{ native: true }}\n value={values.theme}\n variant=\"outlined\"\n >\n {Object.keys(THEMES).map((theme) => (\n \n {capitalCase(theme)}\n \n ))}\n \n \n \n \n Save Settings\n \n \n \n \n );\n}\n\nexport default Settings;\n","import React, { useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useHistory } from 'react-router';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n AppBar,\n Box,\n Hidden,\n IconButton,\n Toolbar,\n makeStyles,\n SvgIcon,\n TextField,\n InputAdornment\n} from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport {\n Menu as MenuIcon,\n Search as SearchIcon,\n} from 'react-feather';\nimport Logo from 'src/components/Logo';\nimport { THEMES } from 'src/constants';\nimport { useSelector } from 'react-redux';\nimport Account from './Account';\nimport Notifications from './Notifications';\nimport Settings from './Settings';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: theme.zIndex.drawer + 100,\n ...theme.name === THEMES.LIGHT ? {\n boxShadow: 'none',\n backgroundColor: theme.palette.primary.main\n } : {},\n ...theme.name === THEMES.ONE_DARK ? {\n backgroundColor: theme.palette.background.default\n } : {}\n },\n toolbar: {\n minHeight: 64\n },\n input: {\n color: 'black'\n }\n}));\n\nfunction TopBar({\n className,\n onMobileNavOpen,\n ...rest\n}) {\n const classes = useStyles();\n const [searchValue, setSearchValue] = useState('');\n const history = useHistory();\n const { tickets } = useSelector((state) => state.queue);\n\n const search = (event, value) => {\n const [ticket] = tickets?.allTickets.filter((item) => `${item.id} - ${item.summary}` === value);\n event.target.blur();\n\n if (ticket) { return history.push(`/customerPortal/tickets/${ticket.id}`); }\n\n if (value.match(/^[0-9]*$/)) { return history.push(`/customerPortal/tickets/${value}`); }\n\n return history.push(`/customerPortal/search?q=${value}&order=Id&dir=DESC`);\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n `${option.id} - ${option.summary}`))}\n value={searchValue ?? ''}\n clearOnBlur\n onChange={(e, v) => search(e, v)}\n renderInput={(params) => (\n setSearchValue(v)}\n InputProps={{\n ...params.InputProps,\n type: 'search',\n className: classes.input,\n startAdornment: (\n \n \n \n \n \n )\n }}\n />\n )}\n />\n \n \n \n \n \n \n \n );\n}\n\nTopBar.propTypes = {\n className: PropTypes.string,\n onMobileNavOpen: PropTypes.func\n};\n\nexport default TopBar;\n","import React, { useState } from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n Button,\n Collapse,\n ListItem,\n makeStyles,\n Grid,\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport {\n AlertCircle as AlertIcon,\n} from 'react-feather';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n display: 'block',\n paddingTop: 0,\n paddingBottom: 0\n },\n itemLeaf: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%'\n },\n buttonLeaf: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%',\n fontWeight: theme.typography.fontWeightRegular,\n '&.depth-0': {\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n }\n }\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(1)\n },\n title: {\n marginRight: 'auto'\n },\n active: {\n color: theme.palette.secondary.main,\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n },\n '& $icon': {\n color: theme.palette.secondary.main\n }\n }\n}));\n\nfunction NavItem({\n title,\n href,\n depth,\n children,\n icon: Icon,\n className,\n open: openProp,\n info: Info,\n showAlert: ShowAlert,\n ...rest\n}) {\n const classes = useStyles();\n const [open, setOpen] = useState(openProp);\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n let paddingLeft = 8;\n\n if (depth > 0) {\n paddingLeft = 32 + 8 * depth;\n }\n\n const style = { paddingLeft };\n\n if (children) {\n return (\n \n \n {Icon && (\n \n )}\n \n {title}\n \n {open ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n );\n }\n\n return (\n \n \n {Icon && (\n \n )}\n \n \n {title}\n {' '}\n {ShowAlert ? : null}\n\n \n \n {Info && }\n \n \n );\n}\n\nNavItem.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n depth: PropTypes.number.isRequired,\n href: PropTypes.string,\n icon: PropTypes.any,\n info: PropTypes.any,\n open: PropTypes.bool,\n title: PropTypes.string.isRequired,\n showAlert: PropTypes.bool\n};\n\nNavItem.defaultProps = {\n open: false\n};\n\nexport default NavItem;\n","/* eslint-disable no-use-before-define */\n/* eslint-disable react/prop-types */\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, matchPath } from 'react-router';\nimport { Link as RouterLink } from 'react-router-dom';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Drawer,\n Hidden,\n List,\n ListSubheader,\n makeStyles,\n} from '@material-ui/core';\nimport {\n BookOpen as ArticleIcon,\n List as TicketIcon,\n Star as SavedArticleIcon,\n PlusCircle as CreateTicketIcon,\n Layers as ClosedTicketIcon,\n AlertTriangle as ActionRequiredIcon,\n FileText as ReportIcon,\n} from 'react-feather';\nimport Logo from 'src/components/Logo';\nimport axios from 'src/utils/axios';\nimport NavItem from './NavItem';\n\nconst navConfig = [\n {\n subheader: 'Tickets',\n items: [\n {\n title: 'Open Tickets',\n href: '/customerPortal/tickets',\n icon: TicketIcon,\n },\n {\n title: 'Closed Tickets',\n href: '/customerPortal/closedTickets',\n icon: ClosedTicketIcon,\n },\n {\n title: 'Create Ticket',\n href: '/customerPortal/tickets/create',\n icon: CreateTicketIcon,\n },\n {\n title: 'Action Required',\n href: '/customerPortal/actionRequiredTickets',\n icon: ActionRequiredIcon,\n showAlert: true,\n },\n ],\n },\n {\n subheader: 'Articles',\n items: [\n {\n title: 'All Articles',\n icon: ArticleIcon,\n href: '/customerPortal/articles',\n },\n {\n title: 'Saved Articles',\n icon: SavedArticleIcon,\n href: '/customerPortal/savedArticles',\n },\n ],\n },\n {\n hostingOnly: true,\n subheader: 'Hosting',\n items: [\n {\n title: 'Usage Report',\n icon: ReportIcon,\n href: '/customerPortal/hosting/usageReport',\n },\n ],\n },\n];\n\nfunction renderNavItems({ items, actionRequired, ...rest }) {\n return (\n \n {items.reduce(\n (acc, item) =>\n reduceChildRoutes({\n acc,\n item,\n actionRequired,\n ...rest,\n }),\n []\n )}\n \n );\n}\n\nfunction reduceChildRoutes({ acc, pathname, actionRequired, item, depth = 0 }) {\n const key = item.title + depth;\n\n if (item.items) {\n const open = matchPath(pathname, {\n path: item.href,\n exact: false,\n });\n\n acc.push(\n \n {renderNavItems({\n depth: depth + 1,\n actionRequired,\n pathname,\n items: item.items,\n })}\n \n );\n } else {\n acc.push(\n \n );\n }\n\n return acc;\n}\n\nconst useStyles = makeStyles(() => ({\n mobileDrawer: {\n width: 256,\n },\n desktopDrawer: {\n width: 256,\n top: 64,\n height: 'calc(100% - 64px)',\n },\n avatar: {\n cursor: 'pointer',\n width: 64,\n height: 64,\n },\n}));\n\nfunction NavBar({ openMobile, onMobileClose }) {\n const classes = useStyles();\n const location = useLocation();\n const [actionRequired, setActionRequired] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const account = useSelector(state => state.account);\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n // eslint-disable-next-line\n }, [location.pathname]);\n\n const getActionRequired = () => {\n axios\n .get('/api/ticket/actionRequired')\n .then(response => {\n setActionRequired(response.data);\n })\n .catch(error => {\n setActionRequired(false);\n console.error(error);\n });\n };\n\n useEffect(() => {\n let interval = null;\n interval = setInterval(() => {\n getActionRequired();\n }, 60000);\n\n return () => clearInterval(interval);\n }, [actionRequired]);\n\n useEffect(() => {\n setLoaded(false);\n getActionRequired();\n }, [loaded]);\n\n const content = (\n \n \n \n \n \n \n \n \n \n\n \n {navConfig\n .filter(x => !x.hostingOnly || account.user.isHostedOrganisation)\n .map(config => (\n \n {config.subheader}\n \n }\n >\n {renderNavItems({\n items: config.items,\n pathname: location.pathname,\n actionRequired,\n })}\n \n ))}\n \n \n \n );\n\n return (\n <>\n \n \n {content}\n \n \n \n \n {content}\n \n \n \n );\n}\n\nNavBar.propTypes = {\n onMobileClose: PropTypes.func,\n openMobile: PropTypes.bool,\n};\n\nexport default NavBar;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport { useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { logout } from 'src/actions/accountActions';\nimport TopBar from './TopBar';\nimport NavBar from './NavBar';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64,\n [theme.breakpoints.up('lg')]: {\n paddingLeft: 256\n }\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nfunction CustomerPortalLayout({ children }) {\n const classes = useStyles();\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\n const dispatch = useDispatch();\n const history = useHistory();\n const account = useSelector((state) => state.account);\n\n useEffect(() => {\n if (account.user.role === 'User') { return undefined; }\n if (account.user.role === 'Dashboard') { return history.push('/app/reports/Dashboard'); }\n if (account.user.role === 'Admin') {\n if (window.location.href.includes('customerPortal/tickets')) {\n const ticketId = window.location.href.substring(window.location.href.indexOf('tickets/') + 8, window.location.href.length);\n return history.push(`/app/queue/all/${ticketId}`);\n }\n if (window.location.href.includes('customerPortal/articles')) {\n const articleId = window.location.href.substring(window.location.href.indexOf('articles') + 8, window.location.href.length);\n return history.push(`/app/wiki${articleId}`);\n }\n return history.push('/app/reports/Dashboard');\n }\n if (account.user.role === 'ExternalSupport') {\n if (window.location.href.includes('customerPortal/tickets')) {\n const ticketId = window.location.href.substring(window.location.href.indexOf('tickets/') + 8, window.location.href.length);\n\n if (ticketId.includes('customerPortal/tickets')) return history.push('/externalSupportPortal/tickets');\n return history.push(`/externalSupportPortal/tickets/${ticketId}`);\n }\n return history.push('/externalSupportPortal');\n }\n dispatch(logout());\n return history.push('/');\n });\n\n return (\n
\n setMobileNavOpen(true)} />\n setMobileNavOpen(false)}\n openMobile={isMobileNavOpen}\n />\n
\n
\n
\n {children}\n
\n
\n
\n
\n );\n}\n\nCustomerPortalLayout.propTypes = {\n children: PropTypes.any\n};\n\nexport default CustomerPortalLayout;\n","import React, {\n useRef,\n useState\n} from 'react';\nimport { useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useSnackbar } from 'notistack';\nimport {\n Avatar,\n Box,\n ButtonBase,\n Hidden,\n Menu,\n MenuItem,\n Typography,\n makeStyles\n} from '@material-ui/core';\nimport { logout } from 'src/actions/accountActions';\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n height: 32,\n width: 32,\n marginRight: theme.spacing(1)\n },\n popover: {\n width: 200\n }\n}));\n\nfunction Account() {\n const classes = useStyles();\n const history = useHistory();\n const ref = useRef(null);\n const dispatch = useDispatch();\n const account = useSelector((state) => state.account);\n const { enqueueSnackbar } = useSnackbar();\n const [isOpen, setOpen] = useState(false);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleLogout = async () => {\n try {\n handleClose();\n await dispatch(logout());\n history.push('/');\n } catch (error) {\n enqueueSnackbar('Unable to logout', {\n variant: 'error'\n });\n }\n };\n\n return (\n <>\n \n \n \n \n {`${account.user.firstName} ${account.user.lastName}`}\n \n \n \n \n \n Logout\n \n \n \n );\n}\n\nexport default Account;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n AppBar,\n Box,\n Hidden,\n IconButton,\n Toolbar,\n makeStyles,\n SvgIcon,\n} from '@material-ui/core';\nimport {\n Menu as MenuIcon,\n} from 'react-feather';\nimport Logo from 'src/components/Logo';\nimport { THEMES } from 'src/constants';\nimport Account from './Account';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: theme.zIndex.drawer + 100,\n ...theme.name === THEMES.LIGHT ? {\n boxShadow: 'none',\n backgroundColor: theme.palette.primary.main\n } : {},\n ...theme.name === THEMES.ONE_DARK ? {\n backgroundColor: theme.palette.background.default\n } : {}\n },\n toolbar: {\n minHeight: 64\n },\n input: {\n color: 'black'\n }\n}));\n\nfunction TopBar({\n className,\n onMobileNavOpen,\n ...rest\n}) {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nTopBar.propTypes = {\n className: PropTypes.string,\n onMobileNavOpen: PropTypes.func\n};\n\nexport default TopBar;\n","import React, { useState } from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n Button,\n Collapse,\n ListItem,\n makeStyles,\n Grid,\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport {\n AlertCircle as AlertIcon,\n} from 'react-feather';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n display: 'block',\n paddingTop: 0,\n paddingBottom: 0\n },\n itemLeaf: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%'\n },\n buttonLeaf: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%',\n fontWeight: theme.typography.fontWeightRegular,\n '&.depth-0': {\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n }\n }\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(1)\n },\n title: {\n marginRight: 'auto'\n },\n active: {\n color: theme.palette.secondary.main,\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n },\n '& $icon': {\n color: theme.palette.secondary.main\n }\n }\n}));\n\nfunction NavItem({\n title,\n href,\n depth,\n children,\n icon: Icon,\n className,\n open: openProp,\n info: Info,\n showAlert: ShowAlert,\n ...rest\n}) {\n const classes = useStyles();\n const [open, setOpen] = useState(openProp);\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n let paddingLeft = 8;\n\n if (depth > 0) {\n paddingLeft = 32 + 8 * depth;\n }\n\n const style = { paddingLeft };\n\n if (children) {\n return (\n \n \n {Icon && (\n \n )}\n \n {title}\n \n {open ? (\n \n ) : (\n \n )}\n \n \n {children}\n \n \n );\n }\n\n return (\n \n \n {Icon && (\n \n )}\n \n \n {title}\n {' '}\n {ShowAlert ? : null}\n\n \n \n {Info && }\n \n \n );\n}\n\nNavItem.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n depth: PropTypes.number.isRequired,\n href: PropTypes.string,\n icon: PropTypes.any,\n info: PropTypes.any,\n open: PropTypes.bool,\n title: PropTypes.string.isRequired,\n showAlert: PropTypes.bool\n};\n\nNavItem.defaultProps = {\n open: false\n};\n\nexport default NavItem;\n","/* eslint-disable no-use-before-define */\n/* eslint-disable react/prop-types */\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, matchPath } from 'react-router';\nimport { Link as RouterLink } from 'react-router-dom';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Drawer,\n Hidden,\n List,\n ListSubheader,\n makeStyles,\n} from '@material-ui/core';\nimport {\n List as TicketIcon,\n PlusCircle as CreateTicketIcon,\n} from 'react-feather';\nimport Logo from 'src/components/Logo';\nimport axios from 'src/utils/axios';\nimport NavItem from './NavItem';\n\nconst navConfig = [\n {\n subheader: 'Tickets',\n items: [\n {\n title: 'Open Tickets',\n href: '/externalSupportPortal/tickets',\n icon: TicketIcon,\n },\n {\n title: 'Create Ticket',\n href: '/externalSupportPortal/tickets/create',\n icon: CreateTicketIcon,\n },\n ],\n },\n];\n\nfunction renderNavItems({ items, actionRequired, ...rest }) {\n return (\n \n {items.reduce(\n (acc, item) => reduceChildRoutes({\n acc, item, actionRequired, ...rest\n }),\n []\n )}\n \n );\n}\n\nfunction reduceChildRoutes({\n acc,\n pathname,\n actionRequired,\n item,\n depth = 0\n}) {\n const key = item.title + depth;\n\n if (item.items) {\n const open = matchPath(pathname, {\n path: item.href,\n exact: false\n });\n\n acc.push(\n \n {renderNavItems({\n depth: depth + 1,\n actionRequired,\n pathname,\n items: item.items\n })}\n \n );\n } else {\n acc.push(\n \n );\n }\n\n return acc;\n}\n\nconst useStyles = makeStyles(() => ({\n mobileDrawer: {\n width: 256\n },\n desktopDrawer: {\n width: 256,\n top: 64,\n height: 'calc(100% - 64px)'\n },\n avatar: {\n cursor: 'pointer',\n width: 64,\n height: 64\n }\n}));\n\nfunction NavBar({ openMobile, onMobileClose, }) {\n const classes = useStyles();\n const location = useLocation();\n const [actionRequired, setActionRequired] = useState(false);\n const [loaded, setLoaded] = useState(false);\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n // eslint-disable-next-line\n }, [location.pathname]);\n\n const getActionRequired = () => {\n axios.get('/api/ticket/actionRequired')\n .then((response) => {\n setActionRequired(response.data);\n })\n .catch((error) => {\n setActionRequired(false);\n console.error(error);\n });\n };\n\n useEffect(() => {\n let interval = null;\n interval = setInterval(() => {\n getActionRequired();\n }, 60000);\n\n return () => clearInterval(interval);\n }, [actionRequired]);\n\n useEffect(() => {\n setLoaded(false);\n getActionRequired();\n }, [loaded]);\n\n const content = (\n \n \n \n \n \n \n \n \n \n\n \n {navConfig.map((config) => (\n \n {config.subheader}\n \n )}\n >\n {renderNavItems({ items: config.items, pathname: location.pathname, actionRequired })}\n \n ))}\n \n \n \n );\n\n return (\n <>\n \n \n {content}\n \n \n \n \n {content}\n \n \n \n );\n}\n\nNavBar.propTypes = {\n onMobileClose: PropTypes.func,\n openMobile: PropTypes.bool\n};\n\nexport default NavBar;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport { useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { logout } from 'src/actions/accountActions';\nimport TopBar from './TopBar';\nimport NavBar from './NavBar';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64,\n [theme.breakpoints.up('lg')]: {\n paddingLeft: 256\n }\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nfunction ExternalSupportPortalLayout({ children }) {\n const classes = useStyles();\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\n const dispatch = useDispatch();\n const history = useHistory();\n const account = useSelector((state) => state.account);\n\n useEffect(() => {\n if (account.user.role === 'ExternalSupport') { return undefined; }\n if (account.user.role === 'Admin') { return history.push('/app/reports/Dashboard'); }\n if (account.user.role === 'Dashboard') { return history.push('/app/reports/Dashboard'); }\n if (account.user.role === 'User') { return history.push('/customerPortal'); }\n dispatch(logout());\n return history.push('/');\n });\n\n return (\n
\n setMobileNavOpen(true)} />\n setMobileNavOpen(false)}\n openMobile={isMobileNavOpen}\n />\n
\n
\n
\n {children}\n
\n
\n
\n
\n );\n}\n\nExternalSupportPortalLayout.propTypes = {\n children: PropTypes.any\n};\n\nexport default ExternalSupportPortalLayout;\n","import React, {\n useState,\n useEffect\n} from 'react';\nimport {\n Box,\n Button,\n Portal,\n Typography,\n makeStyles,\n Dialog,\n DialogTitle,\n DialogContent,\n} from '@material-ui/core';\nimport { useSelector } from 'react-redux';\nimport LoginView from 'src/views/auth/LoginView';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.common.black,\n color: theme.palette.common.white,\n maxWidth: 600,\n position: 'fixed',\n bottom: 0,\n left: 0,\n margin: theme.spacing(3),\n padding: theme.spacing(3),\n outline: 'none',\n zIndex: 2000\n },\n action: {\n backgroundColor: theme.palette.common.white,\n color: theme.palette.common.black,\n marginLeft: 10,\n }\n}));\n\nfunction NewsLoginNotification() {\n const classes = useStyles();\n const [open, setOpen] = useState(false);\n const [loginOpen, setLoginOpen] = useState(false);\n const account = useSelector((state) => state.account);\n const [ignoreNewsLogin, setIgnoreNewsLogin] = useState(localStorage.getItem('ignoreNewsLogin') === 'true');\n\n const handleLogin = () => {\n setLoginOpen(true);\n };\n\n useEffect(() => {\n if (account?.user === null && !ignoreNewsLogin) {\n setOpen(true);\n }\n }, [ignoreNewsLogin, account]);\n\n useEffect(() => {\n const ignoreNewsLoginChanged = () => {\n setIgnoreNewsLogin(localStorage.getItem('ignoreNewsLogin') === 'true');\n if (localStorage.getItem('loggedInUser') !== null) {\n setOpen(false);\n }\n };\n\n window.addEventListener('storage', ignoreNewsLoginChanged);\n\n return () => {\n window.removeEventListener('storage', ignoreNewsLoginChanged);\n };\n }, []);\n\n if (!open) {\n return null;\n }\n\n const ignoreClick = () => {\n localStorage.setItem('ignoreNewsLogin', true);\n window.dispatchEvent(new Event('storage'));\n setOpen(false);\n };\n\n return (\n <>\n setLoginOpen(false)}>\n Login\n \n \n \n \n\n \n
\n \n Please login with your ConnectX account to gain access to all the\n ConnectX News features, such as Favourites, Relevant Articles and more.\n\n \n \n \n Login\n \n\n \n Next Time\n \n \n
\n
\n \n );\n}\n\nexport default NewsLoginNotification;\n","import React, { useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useHistory } from 'react-router';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n AppBar,\n Box,\n Hidden,\n IconButton,\n Toolbar,\n makeStyles,\n SvgIcon,\n TextField,\n InputAdornment\n} from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport {\n Menu as MenuIcon,\n Search as SearchIcon,\n} from 'react-feather';\nimport Logo from 'src/components/Logo';\nimport { THEMES } from 'src/constants';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: theme.zIndex.drawer + 100,\n ...theme.name === THEMES.LIGHT ? {\n boxShadow: 'none',\n backgroundColor: theme.palette.primary.main\n } : {},\n ...theme.name === THEMES.ONE_DARK ? {\n backgroundColor: theme.palette.background.default\n } : {}\n },\n toolbar: {\n minHeight: 64\n },\n input: {\n color: 'black'\n }\n}));\n\nfunction TopBar({\n className,\n onMobileNavOpen,\n ...rest\n}) {\n const classes = useStyles();\n const [searchValue, setSearchValue] = useState('');\n const history = useHistory();\n\n const search = (value) => history.push(`/news/search/1?q=${value}`);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n search(v)}\n renderInput={(params) => (\n setSearchValue(v)}\n InputProps={{\n ...params.InputProps,\n type: 'search',\n className: classes.input,\n startAdornment: (\n \n \n \n \n \n )\n }}\n />\n )}\n />\n\n \n \n );\n}\n\nTopBar.propTypes = {\n className: PropTypes.string,\n onMobileNavOpen: PropTypes.func\n};\n\nexport default TopBar;\n","import React from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n Button,\n ListItem,\n makeStyles,\n Grid,\n Typography,\n} from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n display: 'block',\n paddingTop: 0,\n paddingBottom: 0\n },\n itemLeaf: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: theme.palette.text.secondary,\n padding: '10px 10px',\n justifyContent: 'center',\n textTransform: 'none',\n letterSpacing: 0,\n },\n buttonLeaf: {\n color: theme.palette.text.secondary,\n padding: '20px 10px',\n justifyContent: 'center',\n textTransform: 'none',\n letterSpacing: 0,\n backgroundColor: '#E2E5E9',\n fontWeight: theme.typography.fontWeightRegular,\n '&.depth-0': {\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n }\n }\n },\n title: {\n marginRight: 'auto'\n },\n active: {\n color: theme.palette.secondary.main,\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n },\n '& $icon': {\n color: theme.palette.secondary.main\n }\n }\n}));\n\nfunction NavItem({\n title,\n href,\n depth,\n children,\n icon: Icon,\n className,\n open: openProp,\n info: Info,\n showAlert: ShowAlert,\n ...rest\n}) {\n const classes = useStyles();\n\n let paddingLeft = 8;\n\n if (depth > 0) {\n paddingLeft = 32 + 8 * depth;\n }\n\n const style = { paddingLeft };\n\n return (\n \n \n \n {Icon && (\n\n \n )}\n\n {Info && }\n \n \n {title}\n \n\n \n\n \n );\n}\n\nNavItem.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n depth: PropTypes.number.isRequired,\n href: PropTypes.string,\n icon: PropTypes.any,\n info: PropTypes.any,\n open: PropTypes.bool,\n title: PropTypes.string.isRequired,\n showAlert: PropTypes.bool\n};\n\nNavItem.defaultProps = {\n open: false\n};\n\nexport default NavItem;\n","/* eslint-disable no-use-before-define */\n/* eslint-disable react/prop-types */\nimport React, { useEffect } from 'react';\nimport { useLocation, matchPath } from 'react-router';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Drawer,\n Hidden,\n List,\n makeStyles,\n} from '@material-ui/core';\nimport {\n TrendingUp as NewsIcon,\n Star as SavedIcon,\n} from 'react-feather';\nimport NavItem from './NavItem';\n\nconst navConfig = [\n {\n id: 1,\n items: [\n {\n title: 'Recent',\n href: '/news/feed/1',\n icon: NewsIcon,\n },\n {\n title: 'Favourites',\n href: '/news/favourite/1',\n icon: SavedIcon,\n },\n ],\n },\n];\n\nfunction renderNavItems({ items, ...rest }) {\n return (\n \n {items.reduce(\n (acc, item) => reduceChildRoutes({\n acc, item, ...rest\n }),\n []\n )}\n \n );\n}\n\nfunction reduceChildRoutes({\n acc,\n pathname,\n item,\n depth = 0\n}) {\n const key = item.title + depth;\n\n if (item.items) {\n const open = matchPath(pathname, {\n path: item.href,\n exact: false\n });\n\n acc.push(\n \n {renderNavItems({\n depth: depth + 1,\n pathname,\n items: item.items\n })}\n \n );\n } else {\n acc.push(\n \n );\n }\n\n return acc;\n}\n\nconst useStyles = makeStyles(() => ({\n mobileDrawer: {\n width: 100,\n top: 64,\n },\n desktopDrawer: {\n width: 100,\n top: 64,\n height: 'calc(100% - 64px)'\n },\n avatar: {\n cursor: 'pointer',\n width: 64,\n height: 64\n }\n}));\n\nfunction NavBar({ openMobile, onMobileClose, }) {\n const classes = useStyles();\n const location = useLocation();\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n // eslint-disable-next-line\n }, [location.pathname]);\n\n const content = (\n \n \n \n {navConfig.map((config) => (\n \n {renderNavItems({ items: config.items, pathname: location.pathname })}\n \n ))}\n \n \n \n );\n\n return (\n <>\n \n \n {content}\n \n \n \n \n {content}\n \n \n \n );\n}\n\nNavBar.propTypes = {\n onMobileClose: PropTypes.func,\n openMobile: PropTypes.bool\n};\n\nexport default NavBar;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport NewsLoginNotification from 'src/components/NewsLoginNotification';\nimport TopBar from './TopBar';\nimport NavBar from './NavBar';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64,\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nfunction NewsPortalLayout({ children }) {\n const classes = useStyles();\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\n\n return (\n
\n setMobileNavOpen(true)} />\n setMobileNavOpen(false)}\n openMobile={isMobileNavOpen}\n />\n \n
\n
\n
\n {children}\n
\n
\n
\n
\n );\n}\n\nNewsPortalLayout.propTypes = {\n children: PropTypes.any\n};\n\nexport default NewsPortalLayout;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n AppBar,\n Box,\n Toolbar,\n makeStyles,\n} from '@material-ui/core';\nimport Logo from 'src/components/Logo';\nimport { THEMES } from 'src/constants';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: theme.zIndex.drawer + 100,\n ...theme.name === THEMES.LIGHT ? {\n boxShadow: 'none',\n backgroundColor: theme.palette.primary.main\n } : {},\n ...theme.name === THEMES.ONE_DARK ? {\n backgroundColor: theme.palette.background.default\n } : {}\n },\n toolbar: {\n minHeight: 64\n },\n input: {\n color: 'black'\n }\n}));\n\nfunction TopBar({\n className,\n ...rest\n}) {\n const classes = useStyles();\n\n const getTo = () => {\n if (window.location.pathname.startsWith('/menu/help')) {\n return '/menu/help';\n }\n\n return '/menu/roadmap';\n };\n\n return (\n \n \n \n \n \n \n\n \n \n );\n}\n\nTopBar.propTypes = {\n className: PropTypes.string,\n};\n\nexport default TopBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport TopBar from './TopBar';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64,\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nfunction MenuLayout({ children }) {\n const classes = useStyles();\n\n return (\n
\n \n
\n
\n
\n {children}\n
\n
\n
\n
\n );\n}\n\nMenuLayout.propTypes = {\n children: PropTypes.any\n};\n\nexport default MenuLayout;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport {\n AppBar,\n Box,\n Button,\n Divider,\n Toolbar,\n Hidden,\n Typography,\n Link,\n makeStyles\n} from '@material-ui/core';\nimport { APP_VERSION } from 'src/config';\nimport Logo from 'src/components/Logo';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.default\n },\n toolbar: {\n height: 64\n },\n logo: {\n marginRight: theme.spacing(2)\n },\n link: {\n fontWeight: theme.typography.fontWeightMedium,\n '& + &': {\n marginLeft: theme.spacing(2)\n }\n },\n divider: {\n width: 1,\n height: 32,\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n }\n}));\n\nfunction TopBar({ className, ...rest }) {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n \n Version\n {' '}\n {APP_VERSION}\n \n \n \n \n Dashboard\n \n \n Documentation\n \n \n \n Get the kit\n \n \n \n );\n}\n\nTopBar.propTypes = {\n className: PropTypes.string\n};\n\nexport default TopBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport TopBar from './TopBar';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nfunction MainLayout({ children }) {\n const classes = useStyles();\n\n return (\n
\n \n
\n
\n
\n {children}\n
\n
\n
\n
\n );\n}\n\nMainLayout.propTypes = {\n children: PropTypes.any\n};\n\nexport default MainLayout;\n","import React, { useEffect } from 'react';\nimport NProgress from 'nprogress';\nimport { Box, LinearProgress, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n alignItems: 'center',\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(3)\n }\n}));\n\nfunction LoadingScreen() {\n const classes = useStyles();\n\n useEffect(() => {\n NProgress.start();\n\n return () => {\n NProgress.done();\n };\n }, []);\n\n return (\n
\n \n \n \n
\n );\n}\n\nexport default LoadingScreen;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nconst AuthGuard = ({ children }) => {\n const account = useSelector((state) => state.account);\n\n if (!account.user) {\n if (window.location.pathname === '/app/reports/Dashboard') {\n return ;\n }\n\n const query = new URLSearchParams(window.location.search);\n query.append('return', window.location.pathname);\n return ;\n }\n\n return children;\n};\n\nAuthGuard.propTypes = {\n children: PropTypes.any\n};\n\nexport default AuthGuard;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nfunction GuestGuard({ children }) {\n const account = useSelector((state) => state.account);\n const query = new URLSearchParams(window.location.search);\n\n if (account.user) {\n let returnPath = query.get('return');\n if (returnPath) {\n query.delete('return');\n const params = query.toString();\n if (params !== '') {\n returnPath = `${returnPath}?${params}`;\n }\n return ;\n }\n return ;\n }\n\n return children;\n}\n\nGuestGuard.propTypes = {\n children: PropTypes.any\n};\n\nexport default GuestGuard;\n","/* eslint-disable react/no-array-index-key */\n/* eslint-disable react/jsx-indent */\n/* eslint-disable react/jsx-closing-tag-location */\nimport React, { lazy, Suspense, Fragment } from 'react';\nimport { Switch, Redirect, Route } from 'react-router-dom';\nimport DashboardLayout from 'src/layouts/DashboardLayout';\nimport CustomerPortalLayout from 'src/layouts/CustomerPortalLayout';\nimport ExternalSupportPortalLayout from 'src/layouts/ExternalSupportPortalLayout';\nimport NewsPortalLayout from 'src/layouts/NewsPortalLayout';\nimport MenuLayout from 'src/layouts/MenuLayout';\nimport MainLayout from 'src/layouts/MainLayout';\nimport LoadingScreen from 'src/components/LoadingScreen';\nimport AuthGuard from 'src/components/AuthGuard';\nimport GuestGuard from 'src/components/GuestGuard';\n\nconst routesConfig = [\n {\n exact: true,\n path: '/',\n component: () => ,\n },\n {\n exact: true,\n path: '/404',\n component: lazy(() => import('src/views/pages/Error404View')),\n },\n {\n exact: true,\n guard: GuestGuard,\n path: '/login',\n component: lazy(() => import('src/views/auth/LoginView')),\n },\n {\n exact: true,\n path: '/login-unprotected',\n component: lazy(() => import('src/views/auth/LoginView')),\n },\n {\n exact: true,\n guard: GuestGuard,\n path: '/resetPassword',\n component: lazy(() => import('src/views/auth/ResetPasswordView')),\n },\n {\n exact: true,\n guard: GuestGuard,\n path: '/verification/:id/:token',\n component: lazy(() => import('src/views/auth/VerificationView')),\n },\n {\n exact: true,\n path: '/viewSecret/:id/:key?',\n component: lazy(() => import('src/views/secrets/View')),\n },\n {\n exact: true,\n path: '/tickets/feedback/:id/:rating?',\n component: lazy(() => import('src/views/tickets/FeedbackView')),\n },\n {\n path: '/app',\n guard: AuthGuard,\n layout: DashboardLayout,\n routes: [\n {\n exact: true,\n path: '/app',\n component: () => ,\n },\n {\n exact: true,\n path: '/app/account',\n component: lazy(() => import('src/views/pages/AccountView')),\n },\n {\n exact: true,\n path: '/app/reports/dashboard',\n component: lazy(() => import('src/views/reports/DashboardView')),\n },\n {\n exact: true,\n path: '/app/reports/myDashboard',\n component: lazy(() => import('src/views/reports/MyDashboardView')),\n },\n {\n exact: true,\n path: '/app/adminReports',\n component: lazy(() => import('src/views/reports/ReportsView')),\n },\n {\n exact: true,\n path: '/app/adminReports/hostedCustomers',\n component: lazy(() => import('src/views/reports/HostedCustomersView')),\n },\n {\n exact: true,\n path: '/app/reports',\n component: () => ,\n },\n {\n exact: true,\n path: '/app/reports/timesheets',\n component: lazy(() => import('src/views/reports/TimesheetsView')),\n },\n {\n exact: true,\n path: '/app/management/customers',\n component: lazy(() => import('src/views/management/CustomerListView')),\n },\n {\n exact: true,\n path: '/app/management/customers/:customerId',\n component: lazy(() => import('src/views/management/CustomerDetailsView')),\n },\n {\n exact: true,\n path: '/app/management/customers/:customerId/edit',\n component: lazy(() => import('src/views/management/CustomerEditView')),\n },\n {\n exact: true,\n path: '/app/management/organisation/:organisationId',\n component: lazy(() => import('src/views/management/OrganisationListView')),\n },\n {\n exact: true,\n path: '/app/management/customerBuildVersions',\n component: lazy(() => import('src/views/management/CustomerBuildVersionsListView')),\n },\n {\n exact: true,\n path: '/app/management/customerBuildVersions/createPatch',\n component: lazy(() => import('src/views/management/CustomerBuildVersionsListView/Patches')),\n },\n {\n exact: true,\n path: '/app/tickets/create',\n component: lazy(() => import('src/views/tickets/TicketCreateView')),\n },\n {\n exact: true,\n path: '/app/tickets/migrate',\n component: lazy(() => import('src/views/tickets/Migrate')),\n },\n {\n exact: true,\n path: '/app/data',\n component: lazy(() => import('src/views/data/index')),\n },\n {\n exact: true,\n path: '/app/management',\n component: () => ,\n },\n {\n exact: true,\n path: '/app/calendar',\n component: lazy(() => import('src/views/calendar/CalendarView')),\n },\n {\n exact: true,\n path: '/app/calendar/shiftTimes',\n component: lazy(() => import('src/views/calendar/ShiftTimesView')),\n },\n {\n exact: true,\n path: '/app/queue/:queueId/:ticketId?',\n component: lazy(() => import('src/views/queues/QueueView')),\n },\n {\n exact: true,\n path: '/app/queue',\n component: () => ,\n },\n {\n exact: false,\n path: '/app/search/:page?/:recordsPerPage?/:searchString?',\n component: lazy(() => import('src/views/search')),\n },\n {\n exact: true,\n path: '/app/wiki/create',\n component: lazy(() => import('src/views/wiki/Create')),\n },\n {\n exact: true,\n path: '/app/wiki/import',\n component: lazy(() => import('src/views/wiki/Import')),\n },\n {\n exact: true,\n path: '/app/wiki/saved',\n component: lazy(() => import('src/views/wiki/Saved')),\n },\n {\n exact: true,\n path: '/app/wiki/:nodeId?/:revisionId?',\n component: lazy(() => import('src/views/wiki')),\n },\n {\n exact: true,\n path: '/app/projects',\n component: lazy(() => import('src/views/management/ProjectListView')),\n },\n {\n exact: true,\n path: '/app/projects/:projectId',\n component: lazy(() => import('src/views/management/ProjectListView/Tasks')),\n },\n {\n exact: true,\n path: '/app/roadmap',\n component: lazy(() => import('src/views/roadmap')),\n },\n {\n exact: true,\n path: '/app/workflows/:id?',\n component: lazy(() => import('src/views/workflows')),\n },\n {\n exact: true,\n path: '/app/secrets',\n component: lazy(() => import('src/views/secrets')),\n },\n {\n exact: true,\n path: '/app/cloudflare',\n component: lazy(() => import('src/views/cloudflareVideos')),\n },\n {\n exact: true,\n path: '/app/cloudflare/new',\n component: lazy(() => import('src/views/cloudflareVideos/NewVideo')),\n },\n {\n exact: true,\n path: '/app/ticketfeedback',\n component: lazy(() => import('src/views/ticketFeedback')),\n },\n {\n component: () => ,\n },\n ],\n },\n {\n path: '/customerPortal',\n guard: AuthGuard,\n layout: CustomerPortalLayout,\n routes: [\n {\n exact: true,\n path: '/customerPortal',\n component: () => ,\n },\n {\n exact: true,\n path: '/customerPortal/tickets/create',\n component: lazy(() => import('src/views/customerPortal/Tickets/Create')),\n },\n {\n exact: true,\n path: '/customerPortal/tickets/:ticketId?',\n component: lazy(() => import('src/views/customerPortal/Tickets')),\n },\n {\n exact: true,\n path: '/customerPortal/closedTickets',\n component: lazy(() => import('src/views/customerPortal/Tickets')),\n },\n {\n exact: true,\n path: '/customerPortal/actionRequiredTickets',\n component: lazy(() => import('src/views/customerPortal/Tickets')),\n },\n {\n exact: true,\n path: '/customerPortal/articles/:nodeId?',\n component: lazy(() => import('src/views/wiki')),\n },\n {\n exact: true,\n path: '/customerPortal/savedArticles',\n component: lazy(() => import('src/views/wiki/Saved')),\n },\n {\n exact: true,\n path: '/customerPortal/search/',\n component: lazy(() => import('src/views/customerPortal/search')),\n },\n {\n exact: true,\n path: '/customerPortal/account',\n component: lazy(() => import('src/views/pages/CustomerAccountView')),\n },\n {\n exact: true,\n path: '/customerPortal/hosting/usageReport',\n component: lazy(() => import('src/views/customerPortal/hosting/usageReport')),\n },\n ],\n },\n {\n path: '/externalSupportPortal',\n guard: AuthGuard,\n layout: ExternalSupportPortalLayout,\n routes: [\n {\n exact: true,\n path: '/externalSupportPortal',\n component: () => ,\n },\n {\n exact: true,\n path: '/externalSupportPortal/tickets/create',\n component: lazy(() => import('src/views/externalSupportPortal/Tickets/Create')),\n },\n {\n exact: true,\n path: '/externalSupportPortal/tickets/:ticketId?',\n component: lazy(() => import('src/views/externalSupportPortal/Tickets')),\n },\n ],\n },\n {\n path: '/news',\n layout: NewsPortalLayout,\n routes: [\n {\n exact: true,\n path: '/news',\n component: () => ,\n },\n {\n exact: true,\n path: '/news/feed/:pageId?/:articlesPerPage?',\n component: lazy(() => import('src/views/news')),\n },\n {\n exact: true,\n path: '/news/article/:articleId?/:articlesPerPage?',\n component: lazy(() => import('src/views/news/Article')),\n },\n {\n exact: true,\n path: '/news/favourite/:pageId?/:articlesPerPage?',\n component: lazy(() => import('src/views/news/Favourite')),\n },\n {\n exact: true,\n path: '/news/search/:pageId?/:articlesPerPage?',\n component: lazy(() => import('src/views/news/Search')),\n },\n ],\n },\n {\n path: '/menu',\n guard: AuthGuard,\n layout: MenuLayout,\n routes: [\n {\n exact: true,\n path: '/menu/help/:nodeId?',\n component: lazy(() => import('src/views/wiki')),\n },\n ],\n },\n {\n path: '/roadmap',\n layout: MenuLayout,\n routes: [\n {\n exact: true,\n path: '/roadmap',\n component: lazy(() => import('src/views/roadmap')),\n },\n ],\n },\n {\n path: '/browse',\n guard: AuthGuard,\n layout: DashboardLayout,\n routes: [\n {\n exact: true,\n path: '/browse',\n component: () => ,\n },\n ],\n },\n {\n path: '*',\n layout: MainLayout,\n routes: [\n {\n exact: true,\n path: '/home',\n component: () => ,\n },\n {\n component: () => ,\n },\n ],\n },\n];\n\nconst renderRoutes = (routes) => (routes ? (\n }>\n \n {routes.map((route, i) => {\n const Guard = route.guard || Fragment;\n const Layout = route.layout || Fragment;\n const Component = route.component;\n\n return (\n (\n \n \n {route.routes ? (\n renderRoutes(route.routes)\n ) : (\n \n )}\n \n \n )}\n />\n );\n })}\n \n \n) : null);\n\nfunction Routes() {\n return renderRoutes(routesConfig);\n}\n\nexport default Routes;\n","import React from 'react';\nimport { Router } from 'react-router-dom';\nimport { createBrowserHistory } from 'history';\nimport { create } from 'jss';\nimport rtl from 'jss-rtl';\nimport MomentUtils from '@date-io/moment';\nimport { SnackbarProvider } from 'notistack';\nimport {\n createStyles,\n jssPreset,\n makeStyles,\n StylesProvider,\n ThemeProvider\n} from '@material-ui/core';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport Auth from 'src/components/Auth';\nimport GoogleAnalytics from 'src/components/GoogleAnalytics';\nimport ScrollReset from 'src/components/ScrollReset';\nimport useSettings from 'src/hooks/useSettings';\nimport { createTheme } from 'src/theme';\nimport Routes from 'src/Routes';\nimport { Quill } from 'react-quill';\nimport MarkdownShortcuts from 'quill-markdown-shortcuts';\nimport { MsalProvider } from '@azure/msal-react';\nimport { msalInstance } from './authProvider';\n\nQuill.register('modules/markdownShortcuts', MarkdownShortcuts);\n\nconst history = createBrowserHistory();\nconst jss = create({ plugins: [...jssPreset().plugins, rtl()] });\n\nconst useStyles = makeStyles(() => createStyles({\n '@global': {\n '*': {\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n },\n html: {\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n height: '100%',\n width: '100%'\n },\n body: {\n height: '100%',\n width: '100%'\n },\n '#root': {\n height: '100%',\n width: '100%'\n }\n }\n}));\n\nfunction App() {\n useStyles();\n\n const { settings } = useSettings();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import authService from './services/authService';\n\nconst fetchToken = (event) => {\n const port = event.ports[0];\n\n authService.getAccessToken().then((token) => {\n port.postMessage({\n token,\n });\n });\n};\n\nconst handleMessage = (event) => {\n const { action } = event.data;\n\n switch (action) {\n case 'GET_TOKEN':\n fetchToken(event);\n break;\n default:\n console.error('unhandled event', event);\n break;\n }\n};\n\nexport default handleMessage;\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport 'react-perfect-scrollbar/dist/css/styles.css';\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\nimport 'react-quill/dist/quill.snow.css';\nimport 'nprogress/nprogress.css';\nimport 'src/assets/css/prism.css';\nimport 'src/mixins/chartjs';\nimport 'src/mixins/prismjs';\nimport 'src/mock';\nimport { enableES5 } from 'immer';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport * as serviceWorker from 'src/serviceWorker';\nimport { SettingsProvider } from 'src/context/SettingsContext';\nimport { configureStore } from 'src/store';\nimport { restoreSettings } from 'src/utils/settings';\nimport App from 'src/App';\nimport eventHandler from 'src/eventHandler';\n\nenableES5();\n\nconst store = configureStore();\nconst settings = restoreSettings();\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n);\n\nif (navigator.serviceWorker) { navigator.serviceWorker.addEventListener('message', (event) => eventHandler(event)); }\n\nserviceWorker.register();\n","import axios from 'src/utils/axios';\n\nexport const SET_NODES = '@wiki/set-nodes';\nexport const SET_FLAT_NODES = '@wiki/set-flat-nodes';\nexport const APPEND_NODE = '@wiki/append-node';\nexport const SET_ARTICLE = '@wiki/set-article';\nexport const OPEN_SIDEBAR = '@wiki/open-sidebar';\nexport const CLOSE_SIDEBAR = '@wiki/close-sidebar';\n\nexport const setNodes = (id, nodes) => ({\n type: SET_NODES,\n payload: {\n id,\n nodes,\n },\n});\n\nexport const getNodesCreator = (id = null) => async (dispatch) => {\n const url = id === null\n ? '/api/wiki/tree'\n : `/api/wiki/tree/${id}`;\n dispatch(setNodes(id, (await axios.get(url)).data));\n};\n\nexport const setFlatNodes = (nodes) => ({\n type: SET_FLAT_NODES,\n payload: nodes,\n});\n\nexport const getFlatNodesCreator = () => async (dispatch) => dispatch(setFlatNodes((await axios.get('/api/wiki/nodes')).data));\n\nexport const appendNode = (node) => ({\n type: APPEND_NODE,\n payload: node,\n});\n\nexport const setArticle = (article) => ({\n type: SET_ARTICLE,\n payload: article,\n});\n\nexport const getArticleCreator = (id, revision) => async (dispatch) => {\n const url = revision\n ? `/api/wiki/${id}/${revision}`\n : `/api/wiki/${id}`;\n\n try {\n const data = await axios.get(url);\n dispatch(setArticle(data.data));\n } catch {\n dispatch(setArticle(null));\n }\n};\n\nexport const openSidebar = () => ({\n type: OPEN_SIDEBAR\n});\n\nexport const closeSidebar = () => ({\n type: CLOSE_SIDEBAR\n});\n","import { useContext } from 'react';\nimport SettingsContext from 'src/context/SettingsContext';\n\nexport default function useSettings() {\n const context = useContext(SettingsContext);\n\n return context;\n}\n","// or get from process.env.REACT_APP_{var} to handle PROD and DEV environments\nexport const APP_VERSION = '2.0.0';\nexport const ENABLE_REDUX_LOGGER = false;\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost'\n // [::1] is the IPv6 localhost address.\n || window.location.hostname === '[::1]'\n // 127.0.0.1/8 is considered localhost for IPv4.\n || window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nconst getAPIUrl = () => {\n if (process.env.REACT_APP_API_PORT) return `https://localhost:${process.env.REACT_APP_API_PORT}`;\n if (isLocalhost) return 'https://localhost:5001';\n\n if (window.location.hostname.includes('connectx-staging')) {\n return 'https://connectx-api-staging.companionsoftware.com.au';\n }\n if (window.location.hostname.includes('itsupport.companionsoftware')) {\n return 'https://itsupport-api.companionsoftware.com.au';\n }\n if (window.location.hostname.includes('connectx-demo')) {\n return 'https://connectx-demo-api.companionsoftware.com.au';\n }\n\n return 'https://connectx-portal-api.companionsoftware.com.au';\n};\n\nexport const API_BASE_URL = getAPIUrl();\n\nexport default {};\n","import axios from 'axios';\nimport { API_BASE_URL } from 'src/config';\nimport authService from 'src/services/authService';\n\nconst instance = axios.create();\ninstance.defaults.baseURL = API_BASE_URL;\n\ninstance.interceptors.request.use(\n (config) => authService.getAccessToken().then((token) => {\n if (token) {\n return {\n ...config,\n headers: {\n ...config.headers,\n Authorization: `Bearer ${token}`,\n },\n };\n }\n\n return config;\n }).catch((error) => {\n console.error(error);\n }),\n (error) => {\n Promise.reject(error);\n }\n);\n\nexport default instance;\n","import { useEffect, useState } from 'react';\nimport QueryString from 'query-string';\n\nconst useQuery = (queryString) => {\n const [query, setQuery] = useState({});\n\n useEffect(() => {\n setQuery(QueryString.parse(queryString));\n }, [queryString]);\n\n return query;\n};\n\nexport default useQuery;\n","import axios from 'src/utils/axios';\n\nexport const GET_ALL = '@organisations/get-all';\nexport const GET_CUSTOMERS = '@organisations/get-customers';\nexport const RESET = '@organisations/reset';\n\nexport function getAll() {\n const request = axios.get('/api/organisations/listing');\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_ALL,\n payload: response.data\n }));\n };\n}\n\nexport function getCustomers(organisationId) {\n const request = axios.get('/api/organisations/CustomerListing', {\n params: {\n organisationId\n }\n });\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_CUSTOMERS,\n payload: response.data\n }));\n };\n}\n\nexport function reset() {\n return (dispatch) => {\n (\n dispatch({\n type: RESET,\n payload: null\n })\n );\n };\n}\n","import {\n useState,\n useEffect,\n useCallback,\n} from 'react';\n\nconst useLocalStorage = (key, fallback) => {\n const [value, setValue] = useState(localStorage.getItem(key) || fallback);\n\n useEffect(() => {\n const checkStorage = () => {\n const newValue = localStorage.getItem(key) || fallback;\n if (value !== newValue) {\n setValue(newValue);\n }\n };\n\n window.addEventListener('storage', checkStorage);\n\n return () => {\n window.removeEventListener('storage', checkStorage);\n };\n }, [fallback, key, value]);\n\n const setStorage = useCallback((newValue) => {\n localStorage.setItem(key, newValue);\n window.dispatchEvent(new Event('storage'));\n }, [key]);\n\n return [value, setStorage];\n};\n\nexport default useLocalStorage;\n","import React, {\n createContext,\n useState,\n useEffect\n} from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { THEMES } from 'src/constants';\nimport { storeSettings } from 'src/utils/settings';\n\nconst SettingsContext = createContext();\n\nconst defaultSettings = {\n direction: 'ltr',\n responsiveFontSizes: true,\n hideQueueInDetail: false,\n reverseCommentOrder: false,\n theme: THEMES.LIGHT,\n};\n\nexport function SettingsProvider({ settings, children }) {\n const [currentSettings, setCurrentSettings] = useState(settings || defaultSettings);\n\n const handleSaveSettings = (updatedSettings = {}) => {\n const mergedSettings = _.merge({}, currentSettings, updatedSettings);\n\n setCurrentSettings(mergedSettings);\n storeSettings(mergedSettings);\n };\n\n useEffect(() => {\n document.dir = currentSettings.direction;\n }, [currentSettings]);\n\n return (\n \n {children}\n \n );\n}\n\nSettingsProvider.propTypes = {\n children: PropTypes.node.isRequired,\n settings: PropTypes.object\n};\n\nexport const SettingsConsumer = SettingsContext.Consumer;\n\nexport default SettingsContext;\n","export function restoreSettings() {\n let settings = null;\n\n try {\n const storedData = localStorage.getItem('settings');\n\n if (storedData) {\n settings = JSON.parse(storedData);\n }\n } catch (err) {\n // If stored data is not a strigified JSON this might fail,\n // that's why we catch the error\n }\n\n return settings;\n}\n\nexport function storeSettings(settings) {\n localStorage.setItem('settings', JSON.stringify(settings));\n}\n","import axios from 'src/utils/axios';\n\nexport const GET_ALL = '@projects/get-all';\nexport const GET_PROJECT = '@projects/get-project';\n\nexport function getAll() {\n const request = axios.get('/api/project');\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_ALL,\n payload: response.data\n }));\n };\n}\n\nexport function getProject(id) {\n const request = axios.get(`/api/project/${id}`);\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_PROJECT,\n payload: response.data\n }));\n };\n}\n","/* eslint-disable import/prefer-default-export */\nexport const THEMES = {\n LIGHT: 'LIGHT',\n ONE_DARK: 'ONE_DARK',\n UNICORN: 'UNICORN',\n FOREST: 'FOREST',\n};\n","import axios from 'src/utils/axios';\nimport authService from 'src/services/authService';\n\nexport const LOGIN_REQUEST = '@account/login-request';\nexport const LOGIN_SUCCESS = '@account/login-success';\nexport const LOGIN_FAILURE = '@account/login-failure';\nexport const SILENT_LOGIN = '@account/silent-login';\nexport const LOGOUT = '@account/logout';\nexport const REGISTER = '@account/register';\nexport const UPDATE_PROFILE = '@account/update-profile';\nexport const UPDATE_AVATAR = '@account/update-avatar';\n\nexport function login(email, password) {\n return async (dispatch) => {\n try {\n dispatch({ type: LOGIN_REQUEST });\n\n const user = await authService.loginWithEmailAndPassword(email, password);\n\n dispatch({\n type: LOGIN_SUCCESS,\n payload: {\n user\n }\n });\n } catch (error) {\n dispatch({ type: LOGIN_FAILURE });\n throw error;\n }\n };\n}\n\nexport function setUserData(user) {\n return (dispatch) => dispatch({\n type: SILENT_LOGIN,\n payload: {\n user\n }\n });\n}\n\nexport function logout() {\n return async (dispatch) => {\n authService.logout();\n\n dispatch({\n type: LOGOUT\n });\n };\n}\n\nexport function register() {\n return true;\n}\n\nexport function updateProfile(update) {\n const request = axios.put('/api/user/updateDetails', JSON.stringify(update));\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: UPDATE_PROFILE,\n payload: response.data\n }));\n };\n}\n\nexport function updateAvatar(avatar) {\n const request = axios.put('/api/user/setAvatar', JSON.stringify(avatar));\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: UPDATE_AVATAR,\n payload: response.data\n }));\n };\n}\n","function track(...args) {\n if (process.env.NODE_ENV !== 'production') {\n return;\n }\n\n if (!window.gtag) {\n return;\n }\n\n window.gtag(...args);\n}\n\nfunction pageview(props) {\n track('config', process.env.REACT_APP_GA_MEASUREMENT_ID, props);\n}\n\nfunction event(type, props) {\n track('event', type, props);\n}\n\nexport default {\n pageview,\n event\n};\n","import React, {\n forwardRef,\n useEffect, useCallback\n} from 'react';\nimport { Helmet } from 'react-helmet';\nimport { useLocation } from 'react-router';\nimport PropTypes from 'prop-types';\nimport track from 'src/utils/analytics';\n\nconst Page = forwardRef(({\n title,\n children,\n ...rest\n}, ref) => {\n const location = useLocation();\n\n const sendPageViewEvent = useCallback(() => {\n track.pageview({\n page_path: location.pathname\n });\n }, [location]);\n\n useEffect(() => {\n sendPageViewEvent();\n }, [sendPageViewEvent]);\n\n return (\n \n \n {title}\n \n {children}\n \n );\n});\n\nPage.propTypes = {\n children: PropTypes.node,\n title: PropTypes.string\n};\n\nexport default Page;\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useDispatch } from 'react-redux';\nimport {\n Box,\n Hidden,\n IconButton,\n Button,\n Typography,\n makeStyles,\n SvgIcon,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n DialogContentText,\n} from '@material-ui/core';\nimport {\n Menu as MenuIcon\n} from 'react-feather';\nimport { openSidebar } from 'src/actions/queueActions';\nimport { useParams } from 'react-router-dom';\nimport { useHistory } from 'react-router';\nimport axios from 'src/utils/axios';\nimport QueueEditNew from '../QueueEditNew';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.default,\n padding: theme.spacing(2),\n height: 68,\n display: 'flex',\n alignItems: 'center'\n },\n action: {\n marginLeft: 10\n }\n}));\n\nfunction Toolbar({\n className,\n queues,\n queueName,\n ...rest\n}) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const [editQueueOpen, setEditQueueOpen] = useState(false);\n const { queueId } = useParams();\n const editQueueRef = useRef();\n const history = useHistory();\n\n const [questionOpen, setQuestionOpen] = useState(false);\n const [questionTitle, setQuestionTitle] = useState('');\n const [questionMessage, setQuestionMessage] = useState('');\n\n const handleOpenSidebar = () => {\n dispatch(openSidebar());\n };\n\n const handleEditQueueClose = () => {\n setEditQueueOpen(false);\n };\n\n const handleSave = () => {\n editQueueRef.current.save();\n setEditQueueOpen(false);\n };\n\n const handleDeleteQueue = () => {\n setQuestionTitle('Delete Queue');\n setQuestionMessage('Are you sure you want to delete queue?');\n setQuestionOpen(true);\n };\n\n const handleQuestionClose = (answer) => {\n if (!answer) {\n setQuestionOpen(false);\n return;\n }\n\n if (questionTitle === 'Delete Queue') {\n axios.delete(`/api/queue/${queueId}`)\n .then(() => history.push('/app/queues'))\n .catch((error) => {\n console.error(error);\n });\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {queueName}\n \n \n setEditQueueOpen(true)}\n >\n Edit queue\n \n \n Delete queue\n \n\n \n \n Edit Queue\n \n \n \n \n \n \n \n \n \n\n handleQuestionClose(false)}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n {questionTitle}\n \n \n {questionMessage}\n \n \n \n \n \n \n \n\n \n \n );\n}\n\nToolbar.propTypes = {\n className: PropTypes.string,\n queueName: PropTypes.string,\n queues: PropTypes.number,\n};\n\nexport default Toolbar;\n","import React, {\n useEffect,\n useState,\n useLayoutEffect,\n forwardRef,\n useRef,\n useImperativeHandle,\n} from 'react';\nimport { useParams, useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getTickets } from 'src/actions/queueActions';\nimport { CirclePicker } from 'react-color';\nimport axios from 'src/utils/axios';\n\nimport {\n Divider,\n makeStyles,\n Table,\n TableBody,\n TableCell,\n TableRow,\n TableHead,\n Grid,\n CircularProgress,\n TableContainer,\n TablePagination,\n Link,\n Typography,\n Dialog,\n DialogContent,\n Button,\n DialogActions,\n Backdrop,\n} from '@material-ui/core';\nimport { CSVLink } from 'react-csv';\nimport useQuery from 'src/utils/useQuery';\nimport useLocalStorage from 'src/utils/useLocalStorage';\nimport Toolbar from './Toolbar';\nimport QueueItem from './QueueItem';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n overflow: 'hidden',\n backgroundColor: theme.palette.background.dark,\n },\n header: {\n backgroundColor: theme.palette.background.default,\n alignItems: 'center',\n },\n backdrop: {\n zIndex: theme.zIndex.tooltip + 1,\n color: '#fff',\n },\n}));\n\nfunction useWindowSize() {\n const [size, setSize] = useState([0, 0]);\n useLayoutEffect(() => {\n function updateSize() {\n setSize([window.innerWidth, window.innerHeight]);\n }\n window.addEventListener('resize', updateSize);\n updateSize();\n return () => window.removeEventListener('resize', updateSize);\n }, []);\n return size;\n}\n\nexport const searchPath = ({\n page = 1,\n size = 50,\n q,\n order,\n dir,\n asAtDate,\n}) => {\n const params = new URLSearchParams();\n params.append('q', q);\n if (order) { params.append('order', order); }\n if (dir) { params.append('dir', dir); }\n if (asAtDate) { params.append('asAtDate', asAtDate); }\n\n return `/app/search/${page}/${size}?${params.toString()}`;\n};\n\nconst QueueList = forwardRef((props, ref) => {\n const classes = useStyles();\n const {\n queueId,\n page = 1,\n recordsPerPage = 50,\n } = useParams();\n const dispatch = useDispatch();\n const { queues, tickets } = useSelector((state) => state.queue);\n const [loaded, setLoaded] = useState(false);\n const [rowsPerPage, setRowsPerPage] = useState();\n const [queuePage, setQueuePage] = useState();\n const [csvData, setCSVData] = useState([]);\n const [, windowHeight] = useWindowSize();\n const history = useHistory();\n const tableRef = useRef();\n const csvRef = useRef();\n const [columns] = useLocalStorage('searchColumns');\n\n const [selectedRow, setSelectedRow] = useState(null);\n const [colourDialogOpen, setColourDialogOpen] = useState(false);\n const [selectedColour, setSelectedColour] = useState('');\n const [backdropOpen, setBackdropOpen] = useState(false);\n\n const {\n q, order, dir, asAtDate,\n } = useQuery(window.location.search);\n\n const getPath = (\n newPage,\n newSize,\n newQ = q,\n newOrder = order,\n newDir = dir,\n newAsAtDate = asAtDate,\n ) => searchPath({\n page: newPage,\n size: newSize,\n q: newQ,\n order: newOrder,\n dir: newDir,\n asAtDate: newAsAtDate,\n });\n\n useImperativeHandle(ref, () => ({\n exportGrid() {\n const data = [];\n\n const header = [];\n for (let index = 0; index < tickets.allColumns.length; index++) {\n const column = tickets.allColumns[index];\n header.push(column.value);\n }\n\n data.push(header);\n\n for (let index = 0; index < tickets.allTickets.length; index++) {\n const ticket = tickets.allTickets[index];\n\n const row = [];\n const push = (col) => {\n if (typeof col === 'string') {\n row.push(col.replace(/\"/g, '\"\"'));\n } else {\n row.push(col);\n }\n };\n\n for (let x = 0; x < tickets.allColumns.length; x++) {\n const column = tickets.allColumns[x];\n if (column.key === 'Type') {\n push(ticket.type);\n } else if (column.key === 'Priority') {\n push(ticket.priority);\n } else if (column.key === 'Status') {\n push(ticket.status);\n } else if (column.key === 'Reporter') {\n push(`${ticket.reporter.firstName} ${ticket.reporter.lastName}`);\n } else if (column.key === 'Assignee') {\n if (ticket.assignee.id) {\n push(`${ticket.assignee.firstName} ${ticket.assignee.lastName}`);\n } else {\n push('Unassigned');\n }\n } else if (column.key === 'Organisation') {\n push(ticket.organisation);\n } else if (column.key === 'LoggedTime') {\n push(ticket.loggedTime);\n } else {\n push(ticket[column.key.charAt(0).toLowerCase() + column.key.slice(1)]);\n }\n }\n data.push(row);\n }\n\n setCSVData(data);\n\n setTimeout(() => {\n csvRef.current.link.click();\n }, 300);\n }\n\n }));\n\n useEffect(() => {\n if (!q && !queueId) {\n return;\n }\n\n (async function loadData() {\n setLoaded(false);\n await dispatch(getTickets({\n queueId,\n q,\n order,\n dir,\n columns,\n asAtDate,\n page: queuePage || page,\n recordsPerPage: rowsPerPage || recordsPerPage,\n }));\n\n setLoaded(true);\n }());\n }, [\n dispatch,\n queueId,\n q,\n order,\n dir,\n columns,\n page,\n asAtDate,\n queuePage,\n recordsPerPage,\n rowsPerPage,\n ]);\n\n useEffect(() => {\n if (!q && !queueId) {\n return undefined;\n }\n\n const interval = setInterval(() => {\n dispatch(getTickets({\n queueId,\n q,\n order,\n dir,\n columns,\n asAtDate,\n page: queuePage || page,\n recordsPerPage: rowsPerPage || recordsPerPage,\n }));\n }, 30000);\n\n return () => clearInterval(interval);\n }, [dispatch,\n queueId,\n q,\n order,\n dir,\n columns,\n page,\n queuePage,\n asAtDate,\n recordsPerPage,\n rowsPerPage,\n ]);\n\n const handleChangePage = (event, newPage) => {\n if (q) {\n history.push(getPath(newPage + 1, recordsPerPage));\n } else {\n setQueuePage(newPage + 1);\n }\n };\n\n const handleChangeRowsPerPage = (event) => {\n if (q) {\n history.push(getPath(page, event.target.value));\n } else {\n setRowsPerPage(+event.target.value);\n }\n };\n\n const columnClick = (column) => {\n if (q) {\n let columnName = column.key;\n\n if (columnName.toLowerCase() === 'reporter') {\n columnName = 'ReporterName';\n } else if (columnName.toLowerCase() === 'assignee') {\n columnName = 'AssigneeName';\n }\n\n const newDir = order === columnName && dir.toUpperCase() === 'ASC'\n ? 'DESC'\n : 'ASC';\n history.push(getPath(1, recordsPerPage, q, columnName, newDir));\n }\n };\n\n const handleColourClose = (save) => {\n if (save) {\n setBackdropOpen(true);\n axios.put(`/api/ticket/${selectedRow.id}/colour`, null, {\n params: {\n colour: selectedColour,\n }\n })\n .then(() => {\n dispatch(getTickets({\n queueId,\n q,\n order,\n dir,\n columns,\n asAtDate,\n page: queuePage || page,\n recordsPerPage: rowsPerPage || recordsPerPage,\n }));\n setColourDialogOpen(false);\n setSelectedRow(null);\n setBackdropOpen(false);\n })\n .catch((error) => {\n console.error(error);\n setColourDialogOpen(false);\n setSelectedRow(null);\n setBackdropOpen(false);\n });\n } else {\n setColourDialogOpen(false);\n setSelectedRow(null);\n }\n };\n\n const setRowColour = (row) => {\n setSelectedRow(row);\n setColourDialogOpen(true);\n setSelectedColour(row.highlightRowColour);\n };\n\n const clearRowColour = (row) => {\n setBackdropOpen(true);\n axios.put(`/api/ticket/${row.id}/colour`, null, {\n params: {\n colour: null,\n }\n })\n .then(() => {\n dispatch(getTickets({\n queueId,\n q,\n order,\n dir,\n columns,\n asAtDate,\n page: queuePage || page,\n recordsPerPage: rowsPerPage || recordsPerPage,\n }));\n setBackdropOpen(false);\n })\n .catch((error) => {\n console.error(error);\n setBackdropOpen(false);\n });\n };\n\n return (\n
\n\n handleColourClose(false)}\n >\n \n setSelectedColour(color.hex)} />\n \n \n \n \n \n \n\n \n \n \n\n {!loaded || queues === undefined\n ? (\n \n \n \n )\n : (\n
\n {!q\n ? (\n x.id.toString() === (queueId === 'all' ? 0 : queueId))[0]?.name ?? ''}\n tickets={tickets.allIds.length}\n />\n )\n : null}\n \n \n\n \n \n {q && tickets.allTickets.length === 0 && tickets.parserErrors.length === 0 && (\n
\n \n {/* eslint-disable-next-line */}\n No results found, try searching using wildcard eg: Text ~ 'search value'\n\n \n
\n )}\n {q && tickets.parserErrors.length !== 0 && (\n
\n \n Invalid query:\n \n {tickets.parserErrors.map((e) => (\n \n {e.line}\n :\n {e.column}\n {' '}\n {e.message}\n \n ))}\n
\n )}\n {(!q || tickets.allTickets.length !== 0) && (\n \n \n {tickets.allColumns.map((column) => (\n \n columnClick(column)}\n >\n {column.value}\n \n \n ))}\n \n \n )}\n \n {tickets.allTickets.map((currentTicket) => (\n \n ))}\n \n
\n
\n \n \n
\n )}\n
\n );\n});\n\nexport default QueueList;\n","import React, { useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useParams } from 'react-router';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n IconButton,\n makeStyles,\n TableRow,\n TableCell,\n Button,\n Link,\n Typography,\n Menu,\n MenuItem,\n} from '@material-ui/core';\nimport moment from 'moment';\nimport * as Icons from '@material-ui/icons';\n\nfunction getTo(params, ticketId) {\n const { queueId } = params;\n const baseUrl = '/app/queue';\n\n if (queueId) {\n return `${baseUrl}/${queueId}/${ticketId}`;\n }\n\n return `${baseUrl}/all/${ticketId}`;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.default,\n padding: theme.spacing(2),\n borderBottom: `1px solid ${theme.palette.divider}`,\n alignItems: 'center',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n cursor: 'pointer',\n textDecoration: 'none',\n },\n cell: {\n borderBottom: 'none',\n padding: 0,\n overflow: 'hidden',\n },\n link: {\n display: 'block',\n padding: theme.spacing(1) + 1000,\n margin: -1000,\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'none',\n },\n },\n link2: {\n display: 'block',\n padding: theme.spacing(1) + 1000,\n margin: -1000,\n textDecoration: 'underline',\n },\n}));\n\nconst QueueItem = ({\n className,\n ticket,\n allColumns,\n setRowColour,\n clearRowColour,\n ...rest\n}) => {\n const classes = useStyles();\n const params = useParams();\n const to = getTo(params, ticket.id);\n\n const [showRightClickMenu, setShowRightClickMenu] = useState(false);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const getIcon = (name, colour) => {\n const Icon = Icons[name];\n if (colour !== null) return ;\n\n return ;\n };\n\n const cellRightClicked = (e) => {\n e.preventDefault();\n\n setAnchorEl(e.currentTarget);\n setShowRightClickMenu(true);\n };\n\n const getColumnValue = (column) => {\n if (column.key === 'Type') {\n return (\n cellRightClicked(e)}\n >\n \n \n {getIcon(ticket.typeIcon, null)}\n \n \n \n );\n }\n if (column.key === 'Priority') {\n return (\n cellRightClicked(e)}\n >\n \n \n {getIcon(ticket.priorityIcon, ticket.priorityColour)}\n \n \n \n );\n }\n if (column.key === 'Status') {\n return (\n cellRightClicked(e)}\n >\n \n \n \n {ticket.status}\n \n \n \n \n );\n }\n if (column.key === 'Reporter') {\n return (\n \n \n {ticket.reporter?.firstName}\n {' '}\n {ticket.reporter?.lastName}\n \n \n );\n }\n if (column.key === 'Assignee') {\n return (\n \n {ticket.assignee.id === null ? (\n \n Unassigned\n \n ) : (\n \n {ticket.assignee?.firstName}\n {' '}\n {ticket.assignee?.lastName}\n \n )}\n \n );\n }\n if (column.key === 'Organisation') {\n return (\n \n {ticket.organisationId === null ? (\n \n ) : (\n \n {ticket.organisation}\n \n )}\n \n );\n }\n if (column.key === 'CreatedDateTime') {\n return (\n cellRightClicked(e)}\n >\n \n {moment(ticket.createdDateTime).format('DD/MMM/YY')}\n \n \n );\n }\n if (column.key === 'LastModifiedDateTime') {\n return (\n cellRightClicked(e)}\n >\n \n {moment(ticket.lastModifiedDateTime).format('DD/MMM/YY')}\n \n \n );\n }\n if (column.key === 'ResolvedDateTime') {\n return (\n cellRightClicked(e)}\n >\n \n {moment(ticket.resolvedDateTime).format('DD/MMM/YY')}\n \n \n );\n }\n if (column.key === 'LoggedTime') {\n return (\n cellRightClicked(e)}\n >\n \n {ticket.loggedTime}\n \n \n );\n }\n\n return (\n cellRightClicked(e)}\n >\n \n {ticket[column.key.toLowerCase()]}\n \n \n );\n };\n\n return (\n <>\n {\n setShowRightClickMenu(false);\n setAnchorEl(null);\n }}\n >\n {\n setShowRightClickMenu(false);\n setRowColour(ticket);\n }}\n >\n Set Row Colour\n \n {ticket.highlightRowColour === '' ? null : (\n {\n setShowRightClickMenu(false);\n clearRowColour(ticket);\n }}\n >\n Clear Row Colour\n \n )}\n {\n setShowRightClickMenu(false);\n window.open(to, '_blank');\n }}\n >\n Open In New Tab\n \n \n\n \n {allColumns.map((column) => getColumnValue(column))}\n \n \n );\n};\n\nQueueItem.propTypes = {\n className: PropTypes.string,\n ticket: PropTypes.object.isRequired,\n allColumns: PropTypes.array.isRequired,\n setRowColour: PropTypes.func,\n clearRowColour: PropTypes.func,\n};\n\nexport default QueueItem;\n","import React from 'react';\n\nfunction Logo(props) {\n return (\n \n );\n}\n\nexport default Logo;\n","import axios from 'src/utils/axios';\n\nexport const GET_QUEUES = '@queue/get-queues';\nexport const GET_TICKETS = '@queue/get-tickets';\nexport const GET_CUSTOMER_TICKETS = '@queue/get-customer-tickets';\nexport const GET_EXTERNAL_SUPPORT_TICKETS = '@queue/get-external-support-tickets';\nexport const GET_TICKET = '@queue/get-ticket';\nexport const OPEN_SIDEBAR = '@queue/open-sidebar';\nexport const CLOSE_SIDEBAR = '@queue/close-sidebar';\nexport const OPEN_NEW_MESSAGE = '@queue/open-new-message';\nexport const CLOSE_NEW_MESSAGE = '@queue/close-new-message';\n\nexport function getQueues() {\n const request = axios.get('/api/queue');\n\n return (dispatch) => {\n request.then((response) => dispatch({\n type: GET_QUEUES,\n payload: response.data\n }));\n };\n}\n\nconst getTicketsContinue = (params) => new Promise((resolve, reject) => {\n const {\n queueId,\n q: searchString,\n order,\n dir,\n columns,\n asAtDate,\n page = 1,\n recordsPerPage = 50,\n } = params;\n\n axios.get('/api/ticket/search', {\n params: {\n queueId,\n searchString,\n order,\n dir,\n columns,\n page,\n recordsPerPage,\n asAtDate,\n }\n })\n .then((response) => {\n resolve(response);\n })\n .catch((error) => {\n reject(error);\n });\n});\n\nexport function getTickets(params) {\n return async (dispatch) => {\n const response = await getTicketsContinue(params);\n dispatch({\n type: GET_TICKETS,\n payload: response.data\n });\n };\n}\n\nconst getTicketContinue = (id) => new Promise((resolve) => {\n axios.get('/api/ticket', {\n params: {\n id\n }\n })\n .then((response) => {\n resolve(response);\n })\n .catch(() => {\n const errorResponse = {\n data: {\n ticket: null\n }\n };\n resolve(errorResponse);\n });\n});\n\nexport function getTicket(id) {\n return async (dispatch) => {\n const response = await getTicketContinue(id);\n dispatch({\n type: GET_TICKET,\n payload: response.data\n });\n };\n}\n\nexport function updatedTicket(ticket) {\n return async (dispatch) => {\n dispatch({\n type: GET_TICKET,\n payload: ticket\n });\n };\n}\n\nconst getCustomerTicketsContinue = (\n all,\n searchString,\n orderBy,\n closed,\n actionRequired,\n page,\n recordsPerPage,\n watchedOnly\n) => new Promise((resolve, reject) => {\n axios.get('/api/ticket/customer', {\n params: {\n all,\n searchString,\n orderBy,\n closed,\n actionRequired,\n page,\n recordsPerPage,\n watchedOnly\n }\n })\n .then((response) => {\n resolve(response);\n })\n .catch((error) => {\n reject(error);\n });\n});\n\nexport function getCustomerTickets(\n all,\n searchString,\n orderBy,\n closed,\n actionRequired,\n page,\n recordsPerPage,\n watchedOnly\n) {\n return async (dispatch) => {\n const response = await getCustomerTicketsContinue(\n all,\n searchString,\n orderBy,\n closed,\n actionRequired,\n page,\n recordsPerPage,\n watchedOnly\n );\n dispatch({\n type: GET_CUSTOMER_TICKETS,\n payload: response.data\n });\n };\n}\n\nconst getExternalSupportTicketsContinue = () => new Promise((resolve, reject) => {\n axios.get('/api/ticket/externalSupport')\n .then((response) => {\n resolve(response);\n })\n .catch((error) => {\n reject(error);\n });\n});\n\nexport function getExternalSupportTickets() {\n return async (dispatch) => {\n const response = await getExternalSupportTicketsContinue();\n dispatch({\n type: GET_EXTERNAL_SUPPORT_TICKETS,\n payload: response.data\n });\n };\n}\n\nexport function openSidebar() {\n return {\n type: OPEN_SIDEBAR\n };\n}\n\nexport function closeSidebar() {\n return {\n type: CLOSE_SIDEBAR\n };\n}\n\nexport function openNewMessage() {\n return {\n type: OPEN_NEW_MESSAGE\n };\n}\n\nexport function closeNewMessage() {\n return {\n type: CLOSE_NEW_MESSAGE\n };\n}\n","import React, {\n useState, useEffect, forwardRef, useImperativeHandle\n} from 'react';\nimport { useDispatch } from 'react-redux';\nimport {\n Grid,\n TextField,\n Typography,\n FormControl,\n FormLabel,\n RadioGroup,\n FormControlLabel,\n Radio,\n Tooltip,\n IconButton,\n SvgIcon,\n Menu,\n FormGroup,\n Button,\n Checkbox,\n} from '@material-ui/core';\nimport { Columns as ColumnIcon } from 'react-feather';\nimport PropTypes from 'prop-types';\nimport axios from 'src/utils/axios';\nimport { getQueues, getTickets } from 'src/actions/queueActions';\nimport { useParams } from 'react-router';\nimport useQuery from 'src/utils/useQuery';\n\nconst QueueEditNew = forwardRef(({ id }, ref) => {\n const [name, setName] = useState('');\n const [filter, setFilter] = useState('');\n const [orderBy, setOrderBy] = useState('');\n const [orderByDirection, setOrderByDirection] = useState('ASC');\n const [columns, setColumns] = useState([]);\n const [shownColumns, setShownColumns] = useState([]);\n const [anchorEl, setAnchorEl] = useState(null);\n const dispatch = useDispatch();\n const {\n queueId,\n page = 1,\n recordsPerPage = 50,\n } = useParams();\n const {\n q, order, dir, asAtDate,\n } = useQuery(window.location.search);\n\n const avaliableColumns = ['Id', 'Summary', 'Description', 'Priority', 'Type',\n 'Status', 'Reporter', 'Assignee', 'Organisation', 'CreatedDateTime',\n 'LastModifiedDateTime', 'ResolvedDateTime', 'EstimatedTime'];\n\n useImperativeHandle(ref, () => ({\n\n save() {\n const data = {\n columns,\n name,\n filter,\n orderBy,\n orderByDesc: orderByDirection === 'DESC'\n };\n\n if (id === 'New') {\n axios.post('/api/queue', JSON.stringify(data))\n .then(() => {\n dispatch(getQueues());\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n axios.put(`/api/queue/${id}`, JSON.stringify(data))\n .then(() => {\n dispatch(getTickets({\n queueId,\n q,\n order,\n dir,\n columns,\n asAtDate,\n page,\n recordsPerPage,\n }));\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n }));\n\n const handleColumnChange = (column) => {\n if (column.target.checked) {\n const newColumns = [...shownColumns];\n newColumns.push({ key: column.target.name, value: column.target.name });\n setShownColumns(newColumns);\n } else {\n const newColumns = [...shownColumns.filter((x) => x.key !== column.target.name)];\n setShownColumns(newColumns);\n }\n };\n\n const handleColumnChooserClick = (event) => {\n setShownColumns(columns);\n setAnchorEl(event.currentTarget);\n };\n\n const handleColumnChooserClose = (updateColumns) => {\n setAnchorEl(null);\n if (updateColumns === 'update') {\n setColumns(shownColumns);\n }\n };\n\n useEffect(() => {\n setName('');\n setFilter('');\n setOrderBy('');\n setOrderByDirection('ASC');\n\n if (id === 'New') { return; }\n\n axios.get(`/api/queue/${id}`)\n .then((response) => {\n setShownColumns(response.data.columns);\n setColumns(response.data.columns);\n setName(response.data.name);\n setFilter(response.data.filter);\n setOrderBy(response.data.orderBy);\n setOrderByDirection((response.data.orderByDesc ? 'DESC' : 'ASC'));\n });\n }, [id]);\n\n return (\n
\n \n \n \n \n \n \n \n \n\n \n \n {avaliableColumns.map((column) => (\n\n x.key === column).length > 0} onChange={handleColumnChange} name={column} />}\n label={column}\n />\n ))}\n \n\n \n\n \n\n \n \n \n\n \n\n \n \n Name\n \n\n setName(e.target.value)}\n style={{ marginBottom: 10 }}\n />\n\n \n\n \n \n Filter\n \n\n setFilter(e.target.value)}\n style={{ marginBottom: 10 }}\n />\n\n \n\n \n \n Order By\n \n\n setOrderBy(e.target.value)}\n style={{ marginBottom: 10 }}\n />\n\n \n\n \n Order By Direction\n setOrderByDirection(e.target.value)}>\n \n } label=\"ASC\" />\n } label=\"DESC\" />\n \n \n \n
\n );\n});\n\n\nQueueEditNew.propTypes = {\n id: PropTypes.string.isRequired,\n};\n\n\nexport default QueueEditNew;\n","/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-param-reassign */\nimport jwtDecode from 'jwt-decode';\nimport axios from 'src/utils/axios';\nimport moment from 'moment';\nimport { msalInstance, loginRequest } from '../authProvider';\n\nclass AuthService {\n setAxiosInterceptors = () => {\n axios.interceptors.response.use(\n (res) => res,\n async (err) => {\n const originalConfig = err.config;\n if (err.response) {\n // Access Token was expired\n if (err.response.status === 401 && !originalConfig._retry) {\n originalConfig._retry = true;\n try {\n const loggedInUser = JSON.parse(this.getLoggedInUser());\n if (!loggedInUser) {\n window.location.reload();\n return Promise.reject(err);\n }\n\n const response = await axios.post('api/user/refreshToken', '', {\n headers: {\n RefreshAuth: `Basic ${btoa(\n `${loggedInUser.id}:${loggedInUser.refreshToken}`\n )}`,\n },\n });\n const { data } = response;\n if (data) {\n this.setSession(data.token);\n localStorage.setItem('accessToken', data.token);\n localStorage.setItem('loggedInUser', JSON.stringify(data));\n err.config.headers.Authorization = `Bearer ${data.token}`;\n err.config.baseURL = undefined;\n\n localStorage.setItem('accessToken', data.token);\n return axios.request(err.config);\n }\n } catch (_error) {\n if (_error?.response?.status === 400) {\n this.setSession(null);\n }\n return Promise.reject(_error);\n }\n }\n }\n\n return Promise.reject(err);\n }\n );\n };\n\n setDefaults() {\n this.setTicketTypes();\n this.setTicketPriorities();\n this.setTicketResolutionTypes();\n this.setCacheExpiry();\n }\n\n loginWithEmailAndPassword = (email, password) => new Promise((resolve, reject) => {\n axios\n .post('api/user/login', '', {\n headers: {\n Authorization: `Basic ${btoa(`${email}:${password}`)}`,\n },\n })\n .then((response) => {\n const { data } = response;\n if (!data) {\n reject(new Error('Invalid Username or Password'));\n }\n\n if (data) {\n this.setSession(data.token);\n localStorage.setItem('accessToken', data.token);\n localStorage.setItem('loggedInUser', JSON.stringify(data));\n resolve(data);\n } else {\n reject(data.error);\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n\n loginInWithToken = () => new Promise((resolve, reject) => {\n const loggedInUser = JSON.parse(this.getLoggedInUser());\n\n if (!loggedInUser) {\n reject(new Error('Expired Token'));\n }\n\n if (loggedInUser.givenName) {\n const user = {\n id: loggedInUser.id,\n position: loggedInUser.jobTitle,\n email: loggedInUser.mail,\n firstName: loggedInUser.givenName,\n lastName: loggedInUser.surname,\n phoneNumber: loggedInUser.mobilePhone,\n organisation: loggedInUser.organisation,\n role: 'Admin',\n avatar: loggedInUser.avatar,\n };\n\n localStorage.setItem('loggedInUser', JSON.stringify(user));\n resolve(user);\n } else {\n resolve(loggedInUser);\n }\n });\n\n logout = () => {\n this.setSession(null);\n };\n\n setSession = (accessToken) => {\n if (accessToken) {\n axios.defaults.headers.post['Content-Type'] = 'application/json';\n axios.defaults.headers.put['Content-Type'] = 'application/json';\n\n this.setTicketTypes();\n this.setTicketPriorities();\n this.setTicketResolutionTypes();\n this.setCacheExpiry();\n } else {\n localStorage.removeItem('loggedInUser');\n localStorage.removeItem('accessToken');\n\n if (localStorage.getItem('azureUsername')) {\n localStorage.removeItem('azureUsername');\n msalInstance.logout({\n onRedirectNavigate: () => false,\n });\n }\n }\n };\n\n setTicketTypes = () => {\n if (!this.getBasicAccount()) {\n return;\n }\n const ticketTypes = JSON.parse(localStorage.getItem('ticketTypes'));\n const expiry = JSON.parse(localStorage.getItem('cacheExpiry'));\n if (ticketTypes && expiry && moment(expiry) > moment()) {\n return;\n }\n\n axios\n .get('/api/ticketTypes')\n .then((response) => {\n localStorage.setItem('ticketTypes', JSON.stringify(response.data));\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n setTicketPriorities = () => {\n if (!this.getBasicAccount()) {\n return;\n }\n\n const ticketPriority = JSON.parse(localStorage.getItem('ticketPriority'));\n const expiry = JSON.parse(localStorage.getItem('cacheExpiry'));\n if (ticketPriority && expiry && moment(expiry) > moment()) {\n return;\n }\n\n axios\n .get('/api/ticketPriority')\n .then((response) => {\n localStorage.setItem('ticketPriority', JSON.stringify(response.data));\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n setTicketResolutionTypes = () => {\n if (!this.getBasicAccount()) {\n return;\n }\n\n const ticketResolutionTypes = JSON.parse(\n localStorage.getItem('ticketResolutionTypes')\n );\n const expiry = JSON.parse(localStorage.getItem('cacheExpiry'));\n if (ticketResolutionTypes && expiry && moment(expiry) > moment()) {\n return;\n }\n\n axios\n .get('/api/ticketResolutionTypes')\n .then((response) => {\n localStorage.setItem(\n 'ticketResolutionTypes',\n JSON.stringify(response.data)\n );\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n setCacheExpiry = () => {\n if (!this.getBasicAccount()) {\n return;\n }\n\n const expiry = JSON.parse(localStorage.getItem('cacheExpiry'));\n if (expiry && moment(expiry) > moment()) {\n return;\n }\n\n localStorage.setItem(\n 'cacheExpiry',\n JSON.stringify(\n moment()\n .add(15, 'minutes')\n .format()\n )\n );\n };\n\n getBasicAccount = () => {\n const username = localStorage.getItem('azureUsername');\n if (!username) {\n return localStorage.getItem('accessToken');\n }\n\n const account = msalInstance.getAccountByUsername(username);\n if (!account) {\n return undefined;\n }\n\n return username;\n };\n\n getAccessToken = async () => {\n axios.defaults.headers.post['Content-Type'] = 'application/json';\n axios.defaults.headers.put['Content-Type'] = 'application/json';\n\n const username = localStorage.getItem('azureUsername');\n if (!username) {\n return localStorage.getItem('accessToken');\n }\n\n const account = msalInstance.getAccountByUsername(username);\n if (!account) {\n return undefined;\n }\n\n try {\n const token = await msalInstance.acquireTokenSilent({\n scopes: loginRequest.scopes,\n account,\n });\n return token.accessToken;\n } catch (e) {\n console.error(e);\n return undefined;\n }\n };\n\n getDevopsToken = async () => {\n const username = localStorage.getItem('azureUsername');\n if (!username) {\n return undefined;\n }\n\n const account = msalInstance.getAccountByUsername(username);\n if (!account) {\n return undefined;\n }\n\n try {\n const token = await msalInstance.acquireTokenSilent({\n scopes: ['499b84ac-1321-427f-aa17-267ca6975798/user_impersonation'],\n account,\n });\n\n return token.accessToken;\n } catch (e) {\n console.error(e);\n return undefined;\n }\n };\n\n getAzureCalendarToken = async () => {\n const username = localStorage.getItem('azureUsername');\n if (!username) {\n return undefined;\n }\n\n const account = msalInstance.getAccountByUsername(username);\n if (!account) {\n return undefined;\n }\n\n try {\n const token = await msalInstance.acquireTokenSilent({\n scopes: [\n 'https://graph.microsoft.com/Calendars.ReadWrite',\n 'https://graph.microsoft.com/ChannelMessage.Send',\n ],\n account,\n });\n\n return token.accessToken;\n } catch (e) {\n console.error(e);\n return undefined;\n }\n };\n\n getLoggedInUser = () => localStorage.getItem('loggedInUser');\n\n isValidToken = (accessToken) => {\n if (!accessToken) {\n return false;\n }\n\n const decoded = jwtDecode(accessToken);\n const currentTime = Date.now() / 1000;\n\n return decoded.exp > currentTime;\n };\n\n isAuthenticated = async () => !!this.getAccessToken();\n}\n\nconst authService = new AuthService();\n\nexport default authService;\n","import React from 'react';\n\nfunction OCLogo(props) {\n return (\n \n );\n}\n\nexport default OCLogo;\n","import React from 'react';\n\nfunction EdgePOSLogo(props) {\n return \"EdgePOSLogo\";\n}\n\nexport default EdgePOSLogo;\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport clsx from 'clsx';\nimport * as Yup from 'yup';\nimport PropTypes from 'prop-types';\nimport { Formik } from 'formik';\nimport {\n Box,\n Button,\n TextField,\n FormHelperText,\n makeStyles\n} from '@material-ui/core';\nimport { login } from 'src/actions/accountActions';\n\nconst useStyles = makeStyles(() => ({\n root: {}\n}));\n\nfunction LoginForm({ className, onSubmitSuccess, ...rest }) {\n const classes = useStyles();\n const dispatch = useDispatch();\n\n return (\n {\n try {\n await dispatch(login(values.email, values.password));\n onSubmitSuccess();\n } catch (error) {\n const message = (error.response && error.response.data.message) || 'Invalid Username or Password';\n\n setStatus({ success: false });\n setErrors({ submit: message });\n setSubmitting(false);\n }\n }}\n >\n {({\n errors,\n handleBlur,\n handleChange,\n handleSubmit,\n isSubmitting,\n touched,\n values\n }) => (\n \n \n \n \n \n Log In\n \n {errors.submit && (\n \n \n {errors.submit}\n \n \n )}\n \n \n )}\n \n );\n}\n\nLoginForm.propTypes = {\n className: PropTypes.string,\n onSubmitSuccess: PropTypes.func\n};\n\nLoginForm.defaultProps = {\n onSubmitSuccess: () => {}\n};\n\nexport default LoginForm;\n","import React, { useEffect } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n Avatar,\n Button,\n Box,\n Container,\n Card,\n CardContent,\n Divider,\n Link,\n Typography,\n makeStyles,\n Table,\n TableRow,\n TableBody,\n TableCell,\n Grid,\n} from '@material-ui/core';\nimport { useMsal } from '@azure/msal-react';\nimport { loginRequest } from 'src/authProvider';\nimport Page from 'src/components/Page';\nimport Logo from 'src/components/Logo';\nimport OCLogo from 'src/components/OCLogo';\nimport EdgePOSLogo from 'src/components/EdgePOSLogo';\nimport useLocalStorage from 'src/utils/useLocalStorage';\nimport authService from 'src/services/authService';\nimport axios from 'src/utils/axios';\nimport LoginForm from './LoginForm';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n justifyContent: 'center',\n backgroundColor: theme.palette.background.dark,\n display: 'flex',\n height: '100%',\n minHeight: '100%',\n flexDirection: 'column',\n paddingBottom: 80,\n paddingTop: 80,\n },\n backButton: {\n marginLeft: theme.spacing(2),\n },\n card: {\n overflow: 'visible',\n display: 'flex',\n position: 'relative',\n '& > *': {\n flexGrow: 1,\n flexBasis: '50%',\n width: '50%',\n },\n },\n content: {\n padding: theme.spacing(8, 4, 3, 4),\n },\n icon: {\n backgroundColor: 'transparent',\n borderRadius: theme.shape.borderRadius,\n padding: theme.spacing(1),\n position: 'absolute',\n top: -32,\n left: theme.spacing(3),\n height: 79,\n width: 94,\n },\n edgePosIcon: {\n backgroundColor: 'transparent',\n borderRadius: theme.shape.borderRadius,\n padding: theme.spacing(1),\n position: 'absolute',\n top: -32,\n left: theme.spacing(3),\n height: 79,\n },\n cell: {\n borderBottom: 'none',\n },\n logo: {\n marginTop: -50,\n filter:\n theme.palette.type === 'light' ? 'brightness(0%)' : 'brightness(100%)',\n },\n}));\n\nfunction LoginView() {\n const classes = useStyles();\n const [user] = useLocalStorage('loggedInUser');\n const { instance } = useMsal();\n\n const handleSubmitSuccess = () => {\n window.location.reload();\n };\n\n async function itLogin() {\n const loginResponse = await instance.loginPopup(loginRequest);\n\n localStorage.setItem('azureUsername', loginResponse.account.username);\n\n const userDetails = (await axios.get('/api/user/me')).data;\n localStorage.setItem('loggedInUser', JSON.stringify(userDetails));\n\n window.location.reload();\n }\n\n useEffect(() => {\n if (!user) {\n return;\n }\n\n authService.getAccessToken().then((token) => {\n if (authService.isValidToken(token)) {\n window.location.reload();\n }\n });\n }, [user]);\n\n const isEdgePOS = () => {\n if (window.location.hostname.includes('edgepos')) {\n return true;\n }\n\n return false;\n };\n\n return (\n \n \n \n \n {isEdgePOS() ? (\n \n ) : (\n \n \n \n )}\n \n \n \n \n Sign in\n \n \n {`Sign in to ConnectX - The ${\n isEdgePOS() ? 'Edge POS' : 'Companion Software'\n } Portal`}\n \n \n \n \n \n \n \n \n \n \n \n \n Forgot password\n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n );\n}\n\nexport default LoginView;\n","import { PublicClientApplication } from '@azure/msal-browser';\nimport {\n ImplicitMSALAuthenticationProvider,\n MSALAuthenticationProviderOptions,\n} from '@microsoft/microsoft-graph-client';\n\nconst getClientId = () => {\n if (window.location.hostname.includes('itsupport.companionsoftware')) {\n return 'fb0d89d9-98d0-47da-9bd2-81fc1ba1675e';\n }\n\n return 'c29abe64-1f4b-483b-a7e8-067d37d5d5c2';\n};\n\nconst getAppId = () => {\n if (window.location.hostname.includes('itsupport.companionsoftware')) {\n return 'a9de7b78-4b6d-4080-81e7-ed0b0ce5707f';\n }\n\n return 'd518c8b4-a3ef-443e-9cda-8ed7ef338c0e';\n};\n\nexport const msalInstance = new PublicClientApplication(\n {\n auth: {\n authority: 'https://login.microsoftonline.com/9679ba70-14fe-4e3e-b8cd-830c62a6ef7f', // Directory (tenant) ID Overview blade of App Registration\n clientId: getClientId() // Application (client) ID\n },\n cache: {\n cacheLocation: 'localStorage',\n },\n }\n);\n\nexport const loginRequest = {\n scopes: [`api://${getAppId()}/.default`],\n};\n\nexport const authProvider = new ImplicitMSALAuthenticationProvider(\n msalInstance,\n new MSALAuthenticationProviderOptions(['profile']),\n);\n"],"sourceRoot":""}