From f5c66798175ccdb1c6e8fc80ee2684818da84632 Mon Sep 17 00:00:00 2001 From: Loreina Chew Date: Wed, 15 Jan 2020 18:57:08 -0500 Subject: [PATCH] Release/2.3.0 (#800) * Bump formik from 1.4.2 to 1.5.0 (#417) Bumps [formik](https://github.com/jaredpalmer/formik) from 1.4.2 to 1.5.0. - [Release notes](https://github.com/jaredpalmer/formik/releases) - [Commits](https://github.com/jaredpalmer/formik/compare/v1.4.2...v1.5.0) Signed-off-by: dependabot[bot] * Bump qrcode from 1.3.2 to 1.3.3 (#389) Bumps [qrcode](https://github.com/soldair/node-qrcode) from 1.3.2 to 1.3.3. - [Release notes](https://github.com/soldair/node-qrcode/releases) - [Changelog](https://github.com/soldair/node-qrcode/blob/master/CHANGELOG.md) - [Commits](https://github.com/soldair/node-qrcode/compare/v1.3.2...v1.3.3) Signed-off-by: dependabot[bot] * Bump typescript from 3.2.4 to 3.3.3 (#411) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.2.4 to 3.3.3. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/commits) Signed-off-by: dependabot[bot] * Bump react from 16.7.0 to 16.8.0 (#405) Bumps [react](https://github.com/facebook/react) from 16.7.0 to 16.8.0. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md) - [Commits](https://github.com/facebook/react/compare/v16.7.0...v16.8.0) Signed-off-by: dependabot[bot] * Make min pass length 6 (#427) * [Security] Bump handlebars from 4.0.12 to 4.1.0 (#442) Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.0.12 to 4.1.0. **This update includes security fixes.** - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/wycats/handlebars.js/blob/v4.1.0/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.0.12...v4.1.0) Signed-off-by: dependabot[bot] * Bump @types/qrcode from 1.3.0 to 1.3.1 (#435) Bumps [@types/qrcode](https://github.com/DefinitelyTyped/DefinitelyTyped) from 1.3.0 to 1.3.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits) Signed-off-by: dependabot[bot] * Bump @types/lodash from 4.14.120 to 4.14.121 (#434) Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped) from 4.14.120 to 4.14.121. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits) Signed-off-by: dependabot[bot] * Bump react from 16.8.0 to 16.8.3 (#455) Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 16.8.0 to 16.8.3. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v16.8.3/packages/react) Signed-off-by: dependabot[bot] * Bump react-dom from 16.7.0 to 16.8.3 (#454) Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 16.7.0 to 16.8.3. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v16.8.3/packages/react-dom) Signed-off-by: dependabot[bot] * Refactor Toast into global HOC (#428) * [Security] Bump mixin-deep from 1.3.1 to 1.3.2 Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2. **This update includes a security fix.** - [Release notes](https://github.com/jonschlinkert/mixin-deep/releases) - [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2) Signed-off-by: dependabot-preview[bot] * [Security] Bump eslint-utils from 1.3.1 to 1.4.2 Bumps [eslint-utils](https://github.com/mysticatea/eslint-utils) from 1.3.1 to 1.4.2. **This update includes a security fix.** - [Release notes](https://github.com/mysticatea/eslint-utils/releases) - [Commits](https://github.com/mysticatea/eslint-utils/compare/v1.3.1...v1.4.2) Signed-off-by: dependabot-preview[bot] * [Security] Bump lodash-es from 4.17.11 to 4.17.15 Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.11 to 4.17.15. **This update includes security fixes.** - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.15) Signed-off-by: dependabot-preview[bot] * [Security] Bump lodash from 4.17.11 to 4.17.15 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.15. **This update includes security fixes.** - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.15) Signed-off-by: dependabot-preview[bot] * [Security] Bump axios from 0.18.0 to 0.18.1 Bumps [axios](https://github.com/axios/axios) from 0.18.0 to 0.18.1. **This update includes security fixes.** - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.18.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.18.0...v0.18.1) Signed-off-by: dependabot-preview[bot] * [Security] Bump lodash.merge from 4.6.1 to 4.6.2 Bumps [lodash.merge](https://github.com/lodash/lodash) from 4.6.1 to 4.6.2. **This update includes security fixes.** - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/commits) Signed-off-by: dependabot-preview[bot] * [Security] Bump tar from 4.4.1 to 4.4.10 Bumps [tar](https://github.com/npm/node-tar) from 4.4.1 to 4.4.10. **This update includes security fixes.** - [Release notes](https://github.com/npm/node-tar/releases) - [Commits](https://github.com/npm/node-tar/compare/v4.4.1...v4.4.10) Signed-off-by: dependabot-preview[bot] * Bump react-responsive from 6.1.1 to 8.0.1 Bumps [react-responsive](https://github.com/contra/react-responsive) from 6.1.1 to 8.0.1. - [Release notes](https://github.com/contra/react-responsive/releases) - [Changelog](https://github.com/contra/react-responsive/blob/master/CHANGELOG.md) - [Commits](https://github.com/contra/react-responsive/commits) Signed-off-by: dependabot-preview[bot] * Bump @types/react-autosuggest from 9.3.6 to 9.3.11 Bumps [@types/react-autosuggest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-autosuggest) from 9.3.6 to 9.3.11. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-autosuggest) Signed-off-by: dependabot-preview[bot] * Bump @types/node from 10.12.19 to 12.7.4 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 10.12.19 to 12.7.4. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Signed-off-by: dependabot-preview[bot] * Bump react-table from 6.8.6 to 6.10.2 Bumps [react-table](https://github.com/react-tools/react-table) from 6.8.6 to 6.10.2. - [Release notes](https://github.com/react-tools/react-table/releases) - [Changelog](https://github.com/tannerlinsley/react-table/blob/master/CHANGELOG.md) - [Commits](https://github.com/react-tools/react-table/commits) Signed-off-by: dependabot-preview[bot] * Bump axios from 0.18.1 to 0.19.0 Bumps [axios](https://github.com/axios/axios) from 0.18.1 to 0.19.0. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.18.1...v0.19.0) Signed-off-by: dependabot-preview[bot] * Bump @types/react-modal from 3.8.0 to 3.8.3 Bumps [@types/react-modal](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-modal) from 3.8.0 to 3.8.3. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-modal) Signed-off-by: dependabot-preview[bot] * Bump typescript from 3.3.3 to 3.6.2 Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.3.3 to 3.6.2. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/commits) Signed-off-by: dependabot-preview[bot] * Bump @types/lodash from 4.14.121 to 4.14.138 Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.121 to 4.14.138. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash) Signed-off-by: dependabot-preview[bot] * Bump react-dropzone from 8.0.4 to 10.1.8 Bumps [react-dropzone](https://github.com/react-dropzone/react-dropzone) from 8.0.4 to 10.1.8. - [Release notes](https://github.com/react-dropzone/react-dropzone/releases) - [Commits](https://github.com/react-dropzone/react-dropzone/compare/v8.0.4...v10.1.8) Signed-off-by: dependabot-preview[bot] * Bump react-modal from 3.8.1 to 3.10.1 Bumps [react-modal](https://github.com/reactjs/react-modal) from 3.8.1 to 3.10.1. - [Release notes](https://github.com/reactjs/react-modal/releases) - [Changelog](https://github.com/reactjs/react-modal/blob/master/CHANGELOG.md) - [Commits](https://github.com/reactjs/react-modal/compare/v3.8.1...v3.10.1) Signed-off-by: dependabot-preview[bot] * Bump tslint from 5.12.1 to 5.19.0 Bumps [tslint](https://github.com/palantir/tslint) from 5.12.1 to 5.19.0. - [Release notes](https://github.com/palantir/tslint/releases) - [Changelog](https://github.com/palantir/tslint/blob/master/CHANGELOG.md) - [Commits](https://github.com/palantir/tslint/compare/5.12.1...5.19.0) Signed-off-by: dependabot-preview[bot] * Bump @types/yup from 0.26.7 to 0.26.23 Bumps [@types/yup](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yup) from 0.26.7 to 0.26.23. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yup) Signed-off-by: dependabot-preview[bot] * Bump js-file-download from 0.4.4 to 0.4.8 Bumps [js-file-download](https://github.com/kennethjiang/js-file-download) from 0.4.4 to 0.4.8. - [Release notes](https://github.com/kennethjiang/js-file-download/releases) - [Commits](https://github.com/kennethjiang/js-file-download/commits) Signed-off-by: dependabot-preview[bot] * Bump @types/jest from 23.3.13 to 24.0.18 Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 23.3.13 to 24.0.18. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest) Signed-off-by: dependabot-preview[bot] * Bump styled-components from 4.1.3 to 4.3.2 Bumps [styled-components](https://github.com/styled-components/styled-components) from 4.1.3 to 4.3.2. - [Release notes](https://github.com/styled-components/styled-components/releases) - [Changelog](https://github.com/styled-components/styled-components/blob/master/CHANGELOG.md) - [Commits](https://github.com/styled-components/styled-components/compare/v4.1.3...v4.3.2) Signed-off-by: dependabot-preview[bot] * Bump gh-pages from 2.0.1 to 2.1.1 Bumps [gh-pages](https://github.com/tschaub/gh-pages) from 2.0.1 to 2.1.1. - [Release notes](https://github.com/tschaub/gh-pages/releases) - [Changelog](https://github.com/tschaub/gh-pages/blob/master/changelog.md) - [Commits](https://github.com/tschaub/gh-pages/compare/v2.0.1...v2.1.1) Signed-off-by: dependabot-preview[bot] * Bump file-loader from 3.0.1 to 4.2.0 Bumps [file-loader](https://github.com/webpack-contrib/file-loader) from 3.0.1 to 4.2.0. - [Release notes](https://github.com/webpack-contrib/file-loader/releases) - [Changelog](https://github.com/webpack-contrib/file-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/file-loader/compare/v3.0.1...v4.2.0) Signed-off-by: dependabot-preview[bot] * Bump @types/react from 16.7.21 to 16.9.2 Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 16.7.21 to 16.9.2. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) Signed-off-by: dependabot-preview[bot] * Bump prettier from 1.16.2 to 1.18.2 Bumps [prettier](https://github.com/prettier/prettier) from 1.16.2 to 1.18.2. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/1.16.2...1.18.2) Signed-off-by: dependabot-preview[bot] * Bump @types/react-dom from 16.0.11 to 16.9.0 Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 16.0.11 to 16.9.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom) Signed-off-by: dependabot-preview[bot] * Bump @types/qrcode from 1.3.1 to 1.3.4 Bumps [@types/qrcode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/qrcode) from 1.3.1 to 1.3.4. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/qrcode) Signed-off-by: dependabot-preview[bot] * Bump @types/jspdf from 1.2.2 to 1.3.1 Bumps [@types/jspdf](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jspdf) from 1.2.2 to 1.3.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jspdf) Signed-off-by: dependabot-preview[bot] * Bump react from 16.8.3 to 16.9.0 Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 16.8.3 to 16.9.0. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v16.9.0/packages/react) Signed-off-by: dependabot-preview[bot] * Bump react-dom from 16.8.3 to 16.9.0 Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 16.8.3 to 16.9.0. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v16.9.0/packages/react-dom) Signed-off-by: dependabot-preview[bot] * Bump react-number-format from 4.0.6 to 4.2.0 Bumps [react-number-format](https://github.com/s-yadav/react-number-format) from 4.0.6 to 4.2.0. - [Release notes](https://github.com/s-yadav/react-number-format/releases) - [Commits](https://github.com/s-yadav/react-number-format/compare/v4.0.6...v4.2.0) Signed-off-by: dependabot-preview[bot] * Bump @rebass/grid from 6.0.0-7 to 6.1.0 Bumps [@rebass/grid](https://github.com/rebassjs/grid) from 6.0.0-7 to 6.1.0. - [Release notes](https://github.com/rebassjs/grid/releases) - [Changelog](https://github.com/rebassjs/grid/blob/master/CHANGELOG.md) - [Commits](https://github.com/rebassjs/grid/compare/v6.0.0-7...v6.1.0) Signed-off-by: dependabot-preview[bot] * Bump @types/rebass__grid from 6.0.2 to 6.0.5 Bumps [@types/rebass__grid](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/rebass__grid) from 6.0.2 to 6.0.5. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/rebass__grid) Signed-off-by: dependabot-preview[bot] * Bump @types/react-table from 6.7.21 to 6.8.5 Bumps [@types/react-table](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-table) from 6.7.21 to 6.8.5. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-table) Signed-off-by: dependabot-preview[bot] * Bump qrcode from 1.3.3 to 1.4.1 Bumps [qrcode](https://github.com/soldair/node-qrcode) from 1.3.3 to 1.4.1. - [Release notes](https://github.com/soldair/node-qrcode/releases) - [Changelog](https://github.com/soldair/node-qrcode/blob/master/CHANGELOG.md) - [Commits](https://github.com/soldair/node-qrcode/compare/v1.3.3...v1.4.1) Signed-off-by: dependabot-preview[bot] * Bump react-toastify from 4.5.2 to 5.3.2 Bumps [react-toastify](https://github.com/fkhadra/react-toastify) from 4.5.2 to 5.3.2. - [Release notes](https://github.com/fkhadra/react-toastify/releases) - [Commits](https://github.com/fkhadra/react-toastify/compare/v4.5.2...v5.3.2) Signed-off-by: dependabot-preview[bot] * Bump ajv from 6.7.0 to 6.10.2 Bumps [ajv](https://github.com/epoberezkin/ajv) from 6.7.0 to 6.10.2. - [Release notes](https://github.com/epoberezkin/ajv/releases) - [Commits](https://github.com/epoberezkin/ajv/compare/v6.7.0...v6.10.2) Signed-off-by: dependabot-preview[bot] * Bump react-helmet from 5.2.0 to 5.2.1 Bumps [react-helmet](https://github.com/nfl/react-helmet) from 5.2.0 to 5.2.1. - [Release notes](https://github.com/nfl/react-helmet/releases) - [Changelog](https://github.com/nfl/react-helmet/blob/master/CHANGELOG.md) - [Commits](https://github.com/nfl/react-helmet/commits) Signed-off-by: dependabot-preview[bot] * Bump react-router-dom from 4.3.1 to 5.0.1 Bumps [react-router-dom](https://github.com/ReactTraining/react-router) from 4.3.1 to 5.0.1. - [Release notes](https://github.com/ReactTraining/react-router/releases) - [Changelog](https://github.com/ReactTraining/react-router/blob/master/CHANGELOG.md) - [Commits](https://github.com/ReactTraining/react-router/compare/v4.3.1...v5.0.1) Signed-off-by: dependabot-preview[bot] * Bump formik from 1.5.0 to 1.5.8 Bumps [formik](https://github.com/jaredpalmer/formik) from 1.5.0 to 1.5.8. - [Release notes](https://github.com/jaredpalmer/formik/releases) - [Commits](https://github.com/jaredpalmer/formik/compare/v1.5.0...v1.5.8) Signed-off-by: dependabot-preview[bot] * Bump barrelsby from 1.0.2 to 2.1.1 Bumps [barrelsby](https://github.com/bencoveney/barrelsby) from 1.0.2 to 2.1.1. - [Release notes](https://github.com/bencoveney/barrelsby/releases) - [Commits](https://github.com/bencoveney/barrelsby/compare/v1.0.2...v2.1.1) Signed-off-by: dependabot-preview[bot] * Bump @types/react-helmet from 5.0.8 to 5.0.9 Bumps [@types/react-helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-helmet) from 5.0.8 to 5.0.9. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-helmet) Signed-off-by: dependabot-preview[bot] * Bump react-table from 6.10.2 to 6.10.3 Bumps [react-table](https://github.com/react-tools/react-table) from 6.10.2 to 6.10.3. - [Release notes](https://github.com/react-tools/react-table/releases) - [Changelog](https://github.com/tannerlinsley/react-table/blob/master/CHANGELOG.md) - [Commits](https://github.com/react-tools/react-table/commits) Signed-off-by: dependabot-preview[bot] * Bump tslint from 5.19.0 to 5.20.0 Bumps [tslint](https://github.com/palantir/tslint) from 5.19.0 to 5.20.0. - [Release notes](https://github.com/palantir/tslint/releases) - [Changelog](https://github.com/palantir/tslint/blob/master/CHANGELOG.md) - [Commits](https://github.com/palantir/tslint/compare/5.19.0...5.20.0) Signed-off-by: dependabot-preview[bot] * Bump typescript from 3.6.2 to 3.6.3 Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.6.2 to 3.6.3. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v3.6.2...v3.6.3) Signed-off-by: dependabot-preview[bot] * Bump @types/node from 12.7.4 to 12.7.5 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 12.7.4 to 12.7.5. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Signed-off-by: dependabot-preview[bot] * Bump @types/react-helmet from 5.0.9 to 5.0.10 Bumps [@types/react-helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-helmet) from 5.0.9 to 5.0.10. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-helmet) Signed-off-by: dependabot-preview[bot] * Bump @types/yup from 0.26.23 to 0.26.24 Bumps [@types/yup](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/yup) from 0.26.23 to 0.26.24. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/yup) Signed-off-by: dependabot-preview[bot] * Bump react-dropzone from 10.1.8 to 10.1.9 Bumps [react-dropzone](https://github.com/react-dropzone/react-dropzone) from 10.1.8 to 10.1.9. - [Release notes](https://github.com/react-dropzone/react-dropzone/releases) - [Commits](https://github.com/react-dropzone/react-dropzone/compare/v10.1.8...v10.1.9) Signed-off-by: dependabot-preview[bot] * Bump tslint-react from 3.6.0 to 4.1.0 Bumps [tslint-react](https://github.com/palantir/tslint-react) from 3.6.0 to 4.1.0. - [Release notes](https://github.com/palantir/tslint-react/releases) - [Commits](https://github.com/palantir/tslint-react/compare/3.6.0...4.1.0) Signed-off-by: dependabot-preview[bot] * Bump qrcode from 1.4.1 to 1.4.2 Bumps [qrcode](https://github.com/soldair/node-qrcode) from 1.4.1 to 1.4.2. - [Release notes](https://github.com/soldair/node-qrcode/releases) - [Changelog](https://github.com/soldair/node-qrcode/blob/master/CHANGELOG.md) - [Commits](https://github.com/soldair/node-qrcode/compare/v1.4.1...v1.4.2) Signed-off-by: dependabot-preview[bot] * Bump react-toastify from 5.3.2 to 5.4.0 Bumps [react-toastify](https://github.com/fkhadra/react-toastify) from 5.3.2 to 5.4.0. - [Release notes](https://github.com/fkhadra/react-toastify/releases) - [Commits](https://github.com/fkhadra/react-toastify/compare/v5.3.2...v5.4.0) Signed-off-by: dependabot-preview[bot] * Bump styled-components from 4.3.2 to 4.4.0 Bumps [styled-components](https://github.com/styled-components/styled-components) from 4.3.2 to 4.4.0. - [Release notes](https://github.com/styled-components/styled-components/releases) - [Changelog](https://github.com/styled-components/styled-components/blob/master/CHANGELOG.md) - [Commits](https://github.com/styled-components/styled-components/compare/v4.3.2...v4.4.0) Signed-off-by: dependabot-preview[bot] * Bump @types/react-dom from 16.9.0 to 16.9.1 Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 16.9.0 to 16.9.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom) Signed-off-by: dependabot-preview[bot] * Bump @types/react-responsive from 3.0.2 to 8.0.0 Bumps [@types/react-responsive](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-responsive) from 3.0.2 to 8.0.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-responsive) Signed-off-by: dependabot-preview[bot] * Bump @types/react from 16.9.2 to 16.9.3 Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 16.9.2 to 16.9.3. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) Signed-off-by: dependabot-preview[bot] * Bump react-dom from 16.9.0 to 16.10.1 (#696) Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 16.9.0 to 16.10.1. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v16.10.1/packages/react-dom) Signed-off-by: dependabot-preview[bot] * Bump react from 16.9.0 to 16.10.1 (#695) Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 16.9.0 to 16.10.1. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v16.10.1/packages/react) Signed-off-by: dependabot-preview[bot] * Bump @types/node from 12.7.5 to 12.7.9 (#703) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 12.7.5 to 12.7.9. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Signed-off-by: dependabot-preview[bot] * Bump @types/node from 12.7.9 to 12.7.10 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 12.7.9 to 12.7.10. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Signed-off-by: dependabot-preview[bot] * Bump react-dom from 16.10.1 to 16.10.2 Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 16.10.1 to 16.10.2. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/master/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v16.10.2/packages/react-dom) Signed-off-by: dependabot-preview[bot] * Bump @types/react-autosuggest from 9.3.11 to 9.3.12 Bumps [@types/react-autosuggest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-autosuggest) from 9.3.11 to 9.3.12. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-autosuggest) Signed-off-by: dependabot-preview[bot] * Bump @types/react-helmet from 5.0.10 to 5.0.12 Bumps [@types/react-helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-helmet) from 5.0.10 to 5.0.12. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-helmet) Signed-off-by: dependabot-preview[bot] * Bump @types/node from 12.7.10 to 12.11.1 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 12.7.10 to 12.11.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Signed-off-by: dependabot-preview[bot] * Bump barrelsby from 2.1.1 to 2.2.0 Bumps [barrelsby](https://github.com/bencoveney/barrelsby) from 2.1.1 to 2.2.0. - [Release notes](https://github.com/bencoveney/barrelsby/releases) - [Commits](https://github.com/bencoveney/barrelsby/compare/v2.1.1...v2.2.0) Signed-off-by: dependabot-preview[bot] * Resolve breaking dependencies (#723) * Revert to old dependencies * Bump handlebars to 4.5.1 * Bump eslint-utils to 1.4.3 * Add documentation (#725) * Add contributing guide * Add PR template * Change name * Add folder structure * Add contributing to README * Refactor dashboard text into single file (#724) * Feature/90 new status page (#727) * refactor Dashboard texts * added background illustration * added display props to h1 * added display props to H2 * change button border-radius * added styled status page * added status page to main page for hacker * Update src/features/Dashboard/Main.tsx Co-Authored-By: Loreina Chew * Update src/features/Dashboard/Main.tsx Co-Authored-By: Loreina Chew * remove statusPage from dashboard * Feature/88 sidebar ver2 (#728) * refactor Dashboard texts * added background illustration * added display props to h1 * added display props to H2 * change button border-radius * added styled status page * added status page to main page for hacker * Update src/features/Dashboard/Main.tsx Co-Authored-By: Loreina Chew * Update src/features/Dashboard/Main.tsx Co-Authored-By: Loreina Chew * added sidebar icon * added SideBarMenuItem styled component * Added SideBar styled-component * added SideBar * export SideBar * added SideBar in StatusPage * added pagetype in config * refactor sidebar, highlight current page * change padding top * added props for side bar menu item * change extension from jsx to tsx * remove status page from dashboard * remove status page to prevent conflicts * remove hover over text in sidebar * 100% height sidebar * Make sidebar and status page visible on dashboard (#729) * Show new hacker dashboard * Set export for sidebar component * Change sidebar nav order * Set sidebar home page * Rename SideBar to Sidebar * Rename SideBarMenuItem to SidebarMenuItem * Rename sidebar component export * Alphabetize imports * Refactor status feature * Move StatusPage to Dashboard folder * Refactor Sidebar into its own feature folder * nit: change to ISidebarProps * change to ISidebarItemProps * Add new color constants and replace all old color references with new names (#730) * Refactor hacker dashboard with status as home page (#732) * Integrated Sidebar into HackerDashboard * Removed Team and Travel options from Sidebar temporarily * Refactored HackerDashboard * Commit old hacker dashboard file * Rewrite return statement * Update navbar styling (#726) * Update navbar styling * Create CTAButton component * Remove INavbarProps * Switched logout button from primary button to CTA button * Change to even values for scaling * Created sidebar that is always displayed on the side (#734) * Created sidebar that is always displayed on the side * Fixed rendering of sidebar when creating an account * Fixed rendering of sidebar when creating an account * Fixed styling and spacing issues * Fixed colours * Fixed colours * Update UI elements (#735) * Add ability to style button as primary/call-to-action/secondary * Refactor existing secondary buttons to new style * Reimplement hover, loading and disabled states on buttons * Remove CTAButton.tsx as it has been integrated into Button.tsx * Make text input styles match design spec * Update checkbox style * Update select and autocomplete styling * Update highlight color of autocomplete * Fix arrow on select * Rename Button prominence to variant * Create changelog (#737) * move PR template to docs folder * create changelog * add 1.0.0 * add 1.0.1 * add 1.1.0 * add 1.2.0 * add 1.2.1 * add 1.3.0 * add 1.4.0 * add 1.5.0 * add 1.5.1 * add unreleased section * update unreleased with recent commits * update PR template * update contributing guide * 104/style profile page (#736) * Implement base layout for profile page * Fix horizontal centering of account form * Add ability to disable formatted number components and update disabled input style * Remove tshirt size from accounts and add gender field * Fix bug preventing account changes from saving * Bring form labels inline with figma design * Add background images to profile page * Implement changes * Fix bug with select * Feature/124 update application page (#733) * Updating hacker schema with new questions and improved naming * Fix * Fixed validation errors * Minor changes to validation schema and hacker model * Removed redundant log statements/final touches * Removed redundant log statements/final touches * Should all be good now * Should all be good now * Fixed tab indexing issue and submit button loading forever * All working * Switch gender to profile and moved questions to applications * Fixed account to have gender now * Fixed account and application pages to display appropriate properties/fields * Feature/124 update application page (#738) * Updating hacker schema with new questions and improved naming * Fix * Fixed validation errors * Minor changes to validation schema and hacker model * Removed redundant log statements/final touches * Removed redundant log statements/final touches * Should all be good now * Should all be good now * Fixed tab indexing issue and submit button loading forever * All working * Switch gender to profile and moved questions to applications * Fixed account to have gender now * Fixed account and application pages to display appropriate properties/fields * Ignore * Ignore * Ignore * This better work * Feature/128 add application pagescreens (#739) * Updating hacker schema with new questions and improved naming * Fix * Fixed validation errors * Minor changes to validation schema and hacker model * Removed redundant log statements/final touches * Removed redundant log statements/final touches * Should all be good now * Should all be good now * Fixed tab indexing issue and submit button loading forever * All working * Switch gender to profile and moved questions to applications * Fixed account to have gender now * Fixed account and application pages to display appropriate properties/fields * Fixed application page, made travel take an integer input * Partially function multi-part application form * Added back buttons * Ignore * Ignore * Ignore * Ignore * Minor fixes * Fixed validation and button functionality * Removed redunancies * PR changes/bug fixes * Fixed all pr changes * Removed log statement * Graudation year must be 2019 now minimum now * Fixed button colour and spacing * Asterisks appear now (#741) * Update changelog (#743) * Update fields (#744) * shorten pronoun list * alphabetize genders * update degrees * alphabetize dietary restrictions with none on top * update grad years list * alphabetize job interests * fix job interests * update majors * update skills * update changelog * alphabetize ethnicities * change pronouns case * change case for skills * Update ethnicities * Make no answer consistently "prefer not to answer" * add more majors * add more majors * Update travel and grad year validation (#745) * reorder degrees * move travel label to constants * remove needsBus * add travel field validation * update grad year validation * update changelog * update grad year list * update validation schema to be 2019-2025 * Feature/no more vulns (#742) * Fix 1088 vulnerabilities * Fix all compilation warnings * Add changes to changelog * Feature/199 navbar (#746) * add react-burger-menu * add screen size constants to theme * remove sidebar from status page * add navbar styles * modify routes import * add login button * show navbar links by login state * comment out sidebar * fix account page with navbar * add types version of burger menu * add mobile menu * remove horizontal spacer from application container * update changelog * lint code * change to theme colour * update global styles * add background images to app * Add password reset screens (#747) * Fix styling for Password Reset page * Update styling on password reset sent confirmation page * Update password reset page styling * Add background image * Add background image to forgot password confirmation * Change header of forgot password confirmation page * Update forgot password confirmation resend email button to refresh back to forgot password page * Add background image to password reset page * Update rendered input function for forgot password page * Update rendered page for forgot password confirmation * Fix padding for forgot password pages * Fix padding for password reset page * Change max width on forgot password page * Update padding sizes on all pages * Fix padding on login page * Add changelog changes * Refactor SEO (#748) * add hackathon name constant * use hackathon name constant * fix team pages * add SEO constants * move helmet to app.tsx * update favicon * update changelog * lint code * Fix job interests (#749) * change job interest to take string * change job interest filter name * update job interest enums * update changelog * Update application questions (#751) * change form label to use Brown * fix header and body fonts for form * center checkbox * add application questions * add mlh * update changelog * update changelog * fix status page text for none and applied * add images to account creation * update changelog * Fix bug where resume isn't being checked as required after first page (#750) * Fix bug where resume isn't required to move forward * Fix resume validation * Remove commented code * add declined status * change cancelled -> withdrawn status * update cancelled -> withdrawn * update changelog * Fixed spacing between buttons on application page (#754) * Fixed spacing between buttons on application page * Edited changelog * changed submit to update if hacker is editing their application (#755) * Feature/194 remove needs bus (#758) * Removed needsBus value * Removed needsBus value * Fixed changelog * Feature/191 job interest colour (#759) * Fixed job interest dropdown colour * fixed job interest dropdown colour * Feature/184 dropdown checkmark (#761) * feature/184-dropdown-checkmark * Fixed single select for consistency * Fixed single select for consistency * Fixed checkmark alignment with checkbox on smaller screens (#760) * Fixed checkmark alignment with chekcbox on smaller screens * Fixed checkmark alignment with chekcbox on smaller screens * fixed label spacing between view resume and upload resume (#756) * fixed label spacing between view resume and upload resume * Fixed button spacing and placed view resume on right side * Label spacing fixed * fix changelog * Bugfix/hck 63 remove loading string (#757) * Remove loading string from team page * Update changelog * update changelog Co-authored-by: Loreina Chew * dropdown list should be above all other elements now (#767) * dropdown list should be above all other elements now * Edit changelog * Update PR template (#766) * update pr template * update changelog * update pr template * Add integer validation for travel (#764) * add integer validation * add travel validation to default * update changelog * Add specific URL validations (#765) * capitalize URL in error * update all URL validations * update changelog * Fixed checkmark validation (#768) * Feature/223 school font (#770) * School dropdown uses appropriate font now * Added to changelog * Feature/228 url validation (#773) * Fixed url validation to allow empty strings * Fixed url validation to allow empty strings * Feature/224 job interest placeholder (#771) * Fixed greyed out job interest * Added to changelog * Fixed changelog * Fixed URL validation for github (#776) * Add status page text constants (#778) * add status page text * use constants on status page * update changelog * Fixed login button flashing (#780) * Highlight link of active page on navbar (#762) * Highlight link of active page on navbar * update changelog Co-authored-by: Loreina Chew * Fixed confirm email component flashing when navigating to homepage (#779) * Fix missing space in create/edit account site title (#782) * Add space * update changelog * Update confirmed account page layout (#781) * update confirm message * add margin-top * update changelog * add margins to paragraph text * Restyle profile page (#763) * Restyle profile page * Update image import to meet code style guidelines * Update changelog * Center confirm email title for mobile display * Feature/73 application date (#784) * Prevented application from being created past the deadline * Merged develop * Made deadline value a constant * Renamed constant * Fix * Changed deadline label * fix where background image renders (#786) * Feature/release fix (#787) * fix where background image renders * Whoopsies * Added to changelog * Feature/close date fix (#788) * fix where background image renders * Whoopsies * Added to changelog * fixed closing date of app * Feature/extend app time (#791) * extend apps close time * update changelog * Feature/search fix (#793) * Pull develop * fixed search results for search page * Feature/search add fields (#795) * Pull develop * fixed search results for search page * Sponsor searching improved * Added fields and improved search functionality for search page * Fixed async function * Implement travel page (#796) * Add travel page which only shows up when Hacker.application.accomidation.travel > 0 * Add potential states of travel page * Get travel dashboard working * Improve travel page look, handle case where no reimbursement was offered * Update changelog * Add support for travel policy agreement * Change application confirmation deadline (#797) * change confirm time * Feature/search add fields (#795) * Pull develop * fixed search results for search page * Sponsor searching improved * Added fields and improved search functionality for search page * Fixed async function * Implement travel page (#796) * Add travel page which only shows up when Hacker.application.accomidation.travel > 0 * Add potential states of travel page * Get travel dashboard working * Improve travel page look, handle case where no reimbursement was offered * Update changelog * Add support for travel policy agreement * update changelog Co-authored-by: Rohit Garudadri Co-authored-by: Logan Ralston * Feature/status page (#794) * Pull develop * Status page message adjusted accordingly * Added buttons for status page * Changelog * Minor changes * Small fix * Buttons spaced around rows * Added travel link * Fix withdrawn button (#798) * fix withdrawn status * update changelog * Update travel page (#799) * add a rel attribute * update none status to include bus * update global styles for links * update travel page texts * update changelog * update changelog * bump version to 2.3.0 Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Pierre Theo Klein Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Kyle Rubenok Co-authored-by: Haylee Luu Co-authored-by: Logan Ralston Co-authored-by: Isabelle del Mundo Co-authored-by: Rohit Garudadri --- docs/CHANGELOG.md | 23 +++ package-lock.json | 2 +- package.json | 2 +- src/App.tsx | 19 +++ src/api/index.ts | 1 + src/api/travel.ts | 66 ++++++++ src/assets/images/train.svg | 244 +++++++++++++++++++++++++++ src/config/APIRoute.ts | 4 + src/config/constants.ts | 5 +- src/config/frontendRoutes.ts | 1 + src/config/index.ts | 2 + src/config/travel.ts | 14 ++ src/config/travelStatus.ts | 9 + src/features/Nav/Navbar.tsx | 30 +++- src/features/Search/Filters.tsx | 30 +++- src/features/Search/ResultsTable.tsx | 37 +++- src/features/Search/Search.tsx | 42 +++-- src/features/Status/StatusPage.tsx | 155 ++++++++++++++++- src/features/Travel/Main.tsx | 238 ++++++++++++++++++++++++++ src/shared/Elements/H2.tsx | 2 + src/shared/Styles/GlobalStyles.tsx | 4 +- src/util/UserInfoHelperFunctions.tsx | 30 +++- 22 files changed, 904 insertions(+), 56 deletions(-) create mode 100644 src/api/travel.ts create mode 100644 src/assets/images/train.svg create mode 100644 src/config/travel.ts create mode 100644 src/config/travelStatus.ts create mode 100644 src/features/Travel/Main.tsx diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 46b703952..0365ba164 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -5,6 +5,29 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.3.0](https://github.com/hackmcgill/dashboard/tree/2.3.0) - 2020-01-15 + +### Added + +- Status page displays appropriate message based on hacker status +- Job interest column for sponsors to see more info on hacker +- Added buttons for status page based on status +- Added travel page that displays hacker's travel status and reimbursement amount + +### Changed + +- Update application confirm deadline +- Update travel page text +- Update global styles for `a` tag + +### Fixed + +- Fixed search page not loading properly +- Fixed search queries not working +- Update saved hackers for sponsors to view without refreshing page +- Fixed search page not loading properly +- Fix withdrawn button on status page + ## [2.2.2](https://github.com/hackmcgill/dashboard/tree/2.2.2) - 2020-01-05 ### Changed diff --git a/package-lock.json b/package-lock.json index 4f211a52b..e1762a337 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "hackerapi-frontend", - "version": "2.2.2", + "version": "2.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e5e692dbc..9aaf24fc5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "hackerapi-frontend", "homepage": "https://app.mchacks.ca", - "version": "2.2.2", + "version": "2.3.0", "private": true, "dependencies": { "@rebass/grid": "^6.0.0-7", diff --git a/src/App.tsx b/src/App.tsx index 251531130..a83ebda2f 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -20,6 +20,7 @@ import SingleHackerContainer from './features/SingleHacker/Main'; import CreateSponsorContainer from './features/Sponsor/SponsorCreation'; import EditSponsorContainer from './features/Sponsor/SponsorEdition'; import TeamContainer from './features/Team/Main'; +import TravelContainer from './features/Travel/Main'; import { FrontendRoute, @@ -41,6 +42,7 @@ import { canAccessApplication, canAccessHackerPass, canAccessTeam, + canAccessTravel, isSponsor, userCanAccessHackerPage, } from './util'; @@ -168,6 +170,23 @@ class App extends React.Component { ), { activePage: 'team' } )} /> + + user.confirmed && user.accountType === UserType.HACKER, + } + ), { activePage: 'travel' } + )} + /> >> { + const cached: any = LocalCache.get(CACHE_TRAVEL_KEY); + if (cached && !overrideCache) { + return cached as AxiosResponse>; + } + const value = await API.getEndpoint(APIRoute.TRAVEL_SELF).getAll(); + LocalCache.set(CACHE_TRAVEL_KEY, value); + return value; + } + /** + * Get information about a travel + * @param id the ID of the travel + */ + public async get( + id: string, + overrideCache?: boolean + ): Promise>> { + const key = CACHE_TRAVEL_KEY + '-' + id; + const cached: any = LocalCache.get(key); + if (cached && !overrideCache) { + return cached as Promise>>; + } + const value = await API.getEndpoint(APIRoute.TRAVEL).getOne({ id }); + LocalCache.set(key, value); + return value; + } + + /** + * Get information about a travel + * @param id the ID of the travel + */ + public async getByEmail( + email: string, + overrideCache?: boolean + ): Promise>> { + const value = await API.getEndpoint(APIRoute.TRAVEL_EMAIL).getOne({ + id: email, + }); + return value; + } +} + +export const Travel = new TravelAPI(); + +export default Travel; diff --git a/src/assets/images/train.svg b/src/assets/images/train.svg new file mode 100644 index 000000000..3cc29b434 --- /dev/null +++ b/src/assets/images/train.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/config/APIRoute.ts b/src/config/APIRoute.ts index 06907136d..58ac7d833 100644 --- a/src/config/APIRoute.ts +++ b/src/config/APIRoute.ts @@ -21,6 +21,10 @@ export enum APIRoute { HACKER_SELF = 'hacker/self', HACKER_STATS = 'hacker/stats', HACKER_STATUS = 'hacker/status', + // Travel routes + TRAVEL = 'travel', + TRAVEL_EMAIL = 'travel/email', + TRAVEL_SELF = 'travel/self', // Search routes SEARCH = 'search', // Sponsor routes diff --git a/src/config/constants.ts b/src/config/constants.ts index 7e6b5bd9a..6dec8ee38 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -10,6 +10,7 @@ export const CACHE_USER_KEY = 'userInfo'; export const CACHE_HACKER_KEY = 'hackerInfo'; export const CACHE_STATS_KEY = 'statsInfo'; export const CACHE_SPONSOR_KEY = 'sponsorInfo'; +export const CACHE_TRAVEL_KEY = 'travelInfo'; // General information export const HACKATHON_NAME = 'McHacks'; @@ -52,7 +53,7 @@ export const NONE_STATUS_TEXT = export const APPLIED_STATUS_TEXT = 'Your application has been submitted. Decisions will be sent out in January so stay tuned!'; export const ACCEPTED_STATUS_TEXT = - "Congratulations! We're excited to offer you a spot at McHacks! Please RSVP by January 22, 2020 to secure your spot and we'll see you there."; + "Congratulations! We're excited to offer you a spot at McHacks! Please RSVP by January 20, 2020 at 11:59PM EST to secure your spot and we'll see you there."; export const DECLINED_STATUS_TEXT = "Thank you so much for your interest in McHacks. Unfortunately, we don't have enough space to offer you a spot this year. That being said, please keep in touch and we'd love to see you apply again next year! In the meantime, we hope you continue to create and build awesome things!"; export const WAITLISTED_STATUS_TEXT = @@ -60,7 +61,7 @@ export const WAITLISTED_STATUS_TEXT = export const CONFIRMED_STATUS_TEXT = 'Your attendance has been confirmed! More information on McHacks will be sent to your inbox as we get closer to the event.'; export const WITHDRAWN_STATUS_TEXT = - "We're sorry to hear you're unable to make it to McHacks this year. Please keep in touch and hopefully we'll see you at the next one"; + "We're sorry to hear you're unable to make it to McHacks this year. Please keep in touch and hopefully we'll see you at the next one."; export const CHECKED_IN_STATUS_TEXT = 'You’re checked-in and ready to go!'; // Application management diff --git a/src/config/frontendRoutes.ts b/src/config/frontendRoutes.ts index ee5acbdcf..af68d677d 100644 --- a/src/config/frontendRoutes.ts +++ b/src/config/frontendRoutes.ts @@ -15,6 +15,7 @@ export enum FrontendRoute { RESET_PASSWORD_PAGE = '/password/reset', SPONSOR_SEARCH_PAGE = '/sponsor/search', TEAM_PAGE = '/team', + TRAVEL_PAGE = '/travel', CREATE_SPONSOR_PAGE = '/sponsor/create', EDIT_SPONSOR_PAGE = '/sponsor/edit', diff --git a/src/config/index.ts b/src/config/index.ts index d540614d2..090b0ae7b 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -20,6 +20,8 @@ export * from './shirtSizes'; export * from './skills'; export * from './statsResponse'; export * from './team'; +export * from './travelStatus'; +export * from './travel'; export * from './userTypes'; export * from './validationError'; export * from './pageType'; diff --git a/src/config/travel.ts b/src/config/travel.ts new file mode 100644 index 000000000..b3373aa7c --- /dev/null +++ b/src/config/travel.ts @@ -0,0 +1,14 @@ +export interface ITravel { + // The travel's id + id: string; + // The id of the user that is travelling + accountId: string; + // The id of the hacker that is travlling + hackerId: string; + // The status of the hacker + status: string; + // The amount of money the traveller is requesting + request: number; + // The amount of money we are offering the traveller + offer: number; +} diff --git a/src/config/travelStatus.ts b/src/config/travelStatus.ts new file mode 100644 index 000000000..062988c82 --- /dev/null +++ b/src/config/travelStatus.ts @@ -0,0 +1,9 @@ +export enum TravelStatus { + TRAVEL_STATUS_NONE = 'None', + TRAVEL_STATUS_BUS = 'Bus', + TRAVEL_STATUS_OFFERED = 'Offered', + TRAVEL_STATUS_VALID = 'Valid', + TRAVEL_STATUS_INVALID = 'Invalid', + TRAVEL_STATUS_CLAIMED = 'Claimed', +} +export default TravelStatus; diff --git a/src/features/Nav/Navbar.tsx b/src/features/Nav/Navbar.tsx index b28e70137..e5e0c31b4 100644 --- a/src/features/Nav/Navbar.tsx +++ b/src/features/Nav/Navbar.tsx @@ -7,7 +7,7 @@ import { Hacker } from '../../api'; import Martlet from '../../assets/images/mchacks-martlet-tight.svg'; import { FrontendRoute as routes, HackerStatus } from '../../config'; // import { Image } from '../../shared/Elements'; -import { isLoggedIn } from '../../util/UserInfoHelperFunctions'; +import { isLoggedIn, canAccessTravel } from '../../util/UserInfoHelperFunctions'; import { isConfirmed } from '../../util/UserInfoHelperFunctions'; import Burger from './Burger'; import Icon from './Icon'; @@ -27,12 +27,13 @@ interface INavbarState { status: HackerStatus; confirmed: boolean; loaded: boolean; + showTravelLink: boolean; } export default class Navbar extends React.Component< INavbarProps, INavbarState -> { + > { constructor(props: INavbarProps) { super(props); this.state = { @@ -40,6 +41,7 @@ export default class Navbar extends React.Component< status: HackerStatus.HACKER_STATUS_NONE, confirmed: true, loaded: false, + showTravelLink: false }; this.checkLoggedIn(); } @@ -51,10 +53,10 @@ export default class Navbar extends React.Component< try { const response = await Hacker.getSelf(); hacker = response.data.data; - this.setState({ status: hacker.status }); + this.setState({ status: hacker.status, showTravelLink: canAccessTravel(hacker) }); } catch (e) { if (e.status === 401) { - this.setState({ status: HackerStatus.HACKER_STATUS_NONE }); + this.setState({ status: HackerStatus.HACKER_STATUS_NONE, showTravelLink: false }); } } @@ -80,7 +82,7 @@ export default class Navbar extends React.Component< appRoute = routes.EDIT_APPLICATION_PAGE; } - const route: any[] = [routes.HOME_PAGE, routes.EDIT_ACCOUNT_PAGE, appRoute]; + const route: any[] = [routes.HOME_PAGE, routes.EDIT_ACCOUNT_PAGE, appRoute, routes.TRAVEL_PAGE]; let NavItems = () => <>; if (loggedIn === true) { @@ -99,14 +101,24 @@ export default class Navbar extends React.Component< Profile {Date.now() < CONSTANTS.APPLICATION_CLOSE_TIME || - status !== HackerStatus.HACKER_STATUS_NONE ? ( + status !== HackerStatus.HACKER_STATUS_NONE ? ( + + Application + + ) : null} + {this.state.showTravelLink ? ( - Application + Travel ) : null} diff --git a/src/features/Search/Filters.tsx b/src/features/Search/Filters.tsx index 6fc86b565..55ebec18b 100644 --- a/src/features/Search/Filters.tsx +++ b/src/features/Search/Filters.tsx @@ -45,11 +45,17 @@ class FilterComponent extends React.Component { } private parseInitialValues(initFilters: ISearchParameter[]) { const initVals = { - school: this.searchParam2List('school', initFilters), - gradYear: this.searchParam2List('graduationYear', initFilters), - degree: this.searchParam2List('degree', initFilters), + school: this.searchParam2List('application.general.school', initFilters), + gradYear: this.searchParam2List( + 'application.general.graduationYear', + initFilters + ), + degree: this.searchParam2List('application.general.degree', initFilters), status: this.searchParam2List('status', initFilters), - skills: this.searchParam2List('application.skills', initFilters), + skills: this.searchParam2List( + 'application.shortAnswer.skills', + initFilters + ), jobInterest: this.searchParam2List( 'application.general.jobInterest', initFilters @@ -154,19 +160,25 @@ class FilterComponent extends React.Component { * @param values Formik values */ private handleSubmit(values: FormikValues) { - const schoolSearchParam = this.list2SearchParam('school', values.school); + const schoolSearchParam = this.list2SearchParam( + 'application.general.school', + values.school + ); const gradYearParam = this.list2SearchParam( - 'graduationYear', + 'application.general.graduationYear', values.gradYear ); - const degreeParam = this.list2SearchParam('degree', values.degree); + const degreeParam = this.list2SearchParam( + 'application.general.degree', + values.degree + ); const statusParam = this.list2SearchParam('status', values.status); const skillsParam = this.list2SearchParam( - 'application.skills', + 'application.shortAnswer.skills', values.skills ); const jobInterestParam = this.list2SearchParam( - 'application.jobInterest', + 'application.general.jobInterest', values.jobInterest ); let search: ISearchParameter[] = []; diff --git a/src/features/Search/ResultsTable.tsx b/src/features/Search/ResultsTable.tsx index 371816273..96519ab0c 100644 --- a/src/features/Search/ResultsTable.tsx +++ b/src/features/Search/ResultsTable.tsx @@ -22,8 +22,7 @@ const ResultsTable: React.StatelessComponent = (props) => { accessor: 'hacker.accountId.firstName', }, ]; - - const adminColumns = [ + const generalColumns = [ ...volunteerColumns, { Header: 'Last Name', @@ -31,20 +30,28 @@ const ResultsTable: React.StatelessComponent = (props) => { }, { Header: 'School', - accessor: 'hacker.school', + accessor: 'hacker.application.general.school', }, { - Header: 'Major', - accessor: 'hacker.major', + Header: 'Field of Study', + accessor: 'hacker.application.general.fieldOfStudy', }, { Header: 'Grad Year', - accessor: 'hacker.graduationYear', + accessor: 'hacker.application.general.graduationYear', }, + ]; + + const adminColumns = [ + ...generalColumns, { Header: 'Status', accessor: 'hacker.status', }, + { + Header: 'Job Interest', + accessor: 'hacker.application.general.jobInterest', + }, { Header: 'Applicant Info', Cell: ({ original }: any) => ( @@ -60,7 +67,23 @@ const ResultsTable: React.StatelessComponent = (props) => { ]; const sponsorColumns = [ - ...adminColumns, + ...generalColumns, + { + Header: 'Job Interest', + accessor: 'hacker.application.general.jobInterest', + }, + { + Header: 'Applicant Info', + Cell: ({ original }: any) => ( +
+ r.hacker)} + userType={props.userType} + /> +
+ ), + }, { Header: 'Save', Cell: ({ original }: any) => ( diff --git a/src/features/Search/Search.tsx b/src/features/Search/Search.tsx index a3a8fbe5f..5741bfaa4 100644 --- a/src/features/Search/Search.tsx +++ b/src/features/Search/Search.tsx @@ -142,10 +142,7 @@ class SearchContainer extends React.Component<{}, ISearchState> { const sponsor = (await Sponsor.getSelf()).data.data; this.setState({ sponsor }); } - - if (this.state.query.length > 0 || this.state.searchBar.length > 0) { - this.triggerSearch(); - } + await this.triggerSearch(); } private getSearchFromQuery(): ISearchParameter[] { const search = getValueFromQuery('q'); @@ -260,31 +257,40 @@ class SearchContainer extends React.Component<{}, ISearchState> { } private filter() { - const { sponsor, viewSaved, results, searchBar } = this.state; - + const { sponsor, viewSaved, results } = this.state; + const searchBar = this.state.searchBar.toLowerCase(); return results.filter(({ hacker }) => { const { accountId } = hacker; let foundAcct; if (typeof accountId !== 'string') { const account = accountId as IAccount; - const fullName = `${account.firstName} ${account.lastName}`; + const fullName = `${account.firstName} ${ + account.lastName + }`.toLowerCase(); foundAcct = fullName.includes(searchBar) || - account.email.includes(searchBar) || + account.email.toLowerCase().includes(searchBar) || account.phoneNumber.toString().includes(searchBar) || - // Removed as shirt size is no longer a properity of account: account.shirtSize.includes(searchBar) || - account.gender.includes(searchBar) || + account.gender.toLowerCase().includes(searchBar) || (account._id && account._id.includes(searchBar)); } else { foundAcct = accountId.includes(searchBar); } - const foundHacker = hacker.id.includes(searchBar) || - hacker.fieldOfStudy.includes(searchBar) || - hacker.school.includes(searchBar) || + hacker.application.general.school.includes(searchBar) || + hacker.application.general.degree.includes(searchBar) || + hacker.application.general.fieldOfStudy.includes(searchBar) || + hacker.application.general.graduationYear + .toString() + .includes(searchBar) || + hacker.application.general.jobInterest.includes(searchBar) || hacker.status.includes(searchBar) || - hacker.graduationYear.toString().includes(searchBar); + hacker.application.shortAnswer.question1.includes(searchBar) || + hacker.application.shortAnswer.question2.includes(searchBar) || + hacker.application.accommodation.shirtSize.includes(searchBar) || + (hacker.application.shortAnswer.skills && + hacker.application.shortAnswer.skills.toString().includes(searchBar)); const isSavedBySponsorIfToggled = !viewSaved || @@ -294,10 +300,12 @@ class SearchContainer extends React.Component<{}, ISearchState> { }); } - private toggleSaved = () => { - const { sponsor, viewSaved } = this.state; + private toggleSaved = async () => { + // Resets the sponsor if they made changes to their saved hackers + const sponsor = (await Sponsor.getSelf()).data.data; + const { viewSaved } = this.state; if (sponsor) { - this.setState({ viewSaved: !viewSaved }); + this.setState({ sponsor, viewSaved: !viewSaved }); } }; } diff --git a/src/features/Status/StatusPage.tsx b/src/features/Status/StatusPage.tsx index 0ed0873eb..fc39494c7 100644 --- a/src/features/Status/StatusPage.tsx +++ b/src/features/Status/StatusPage.tsx @@ -20,6 +20,7 @@ import { import theme from '../../shared/Styles/theme'; import ConfirmationEmailSentComponent from '../Account/ConfirmationEmailSentComponent'; +import { Hacker } from '../../api'; import Background from '../../assets/images/statuspage-background.svg'; export interface IStatusPageProps { @@ -28,7 +29,39 @@ export interface IStatusPageProps { confirmed: boolean; } -class StatusPage extends React.Component { +export interface IStatusPageState { + status: HackerStatus; +} + +class StatusPage extends React.Component { + constructor(props: IStatusPageProps) { + super(props); + this.state = { + status: this.props.status, + }; + } + public confirmStatus = async (e: any) => { + if (this.props.account) { + const hacker = (await Hacker.getByEmail(this.props.account.email)).data + .data; + if (hacker) { + await Hacker.confirm(hacker.id, true); + this.setState({ status: HackerStatus.HACKER_STATUS_CONFIRMED }); + } + } + }; + + public withdrawStatus = async (e: any) => { + if (this.props.account) { + const hacker = (await Hacker.getByEmail(this.props.account.email)).data + .data; + if (hacker) { + await Hacker.confirm(hacker.id, false); + this.setState({ status: HackerStatus.HACKER_STATUS_WITHDRAWN }); + } + } + }; + public render() { return ( @@ -46,7 +79,7 @@ class StatusPage extends React.Component { > Hey {this.props.account.firstName}, - {this.props.status !== HackerStatus.HACKER_STATUS_NONE ? ( + {this.state.status === HackerStatus.HACKER_STATUS_APPLIED ? ( { - ) : Date.now() < CONSTANTS.APPLICATION_CLOSE_TIME ? ( + ) : Date.now() < CONSTANTS.APPLICATION_CLOSE_TIME && + this.state.status === HackerStatus.HACKER_STATUS_NONE ? ( { + ) : this.state.status === HackerStatus.HACKER_STATUS_ACCEPTED ? ( + + + {CONSTANTS.ACCEPTED_STATUS_TEXT} + + + + + + + ) : this.state.status === + HackerStatus.HACKER_STATUS_WAITLISTED ? ( + + + {CONSTANTS.WAITLISTED_STATUS_TEXT} + + + ) : this.state.status === HackerStatus.HACKER_STATUS_DECLINED ? ( + + + {CONSTANTS.DECLINED_STATUS_TEXT} + + + ) : this.state.status === + HackerStatus.HACKER_STATUS_CHECKED_IN ? ( + + + {CONSTANTS.CHECKED_IN_STATUS_TEXT} + + + + + + ) : this.state.status === HackerStatus.HACKER_STATUS_CONFIRMED ? ( + + + {CONSTANTS.CONFIRMED_STATUS_TEXT} + + + + + + + + + ) : this.state.status === HackerStatus.HACKER_STATUS_WITHDRAWN ? ( + + + {CONSTANTS.WITHDRAWN_STATUS_TEXT} + + ) : ( { + constructor(props: {}) { + super(props); + this.state = { + hacker: null, + travel: null, + isLoading: true, + }; + } + public render() { + let reimbursement =
; + if (this.state.travel) { + switch (this.state.travel.status) { + case 'None': + reimbursement = ( +
+ Your request to recieve ${this.state.travel.request.toFixed(2)} in + reimbursement for travel is still being processed. +
+
+

Bus

+ We're offering a round-trip bus from Toronto to McHacks. Seats are + available on a first-come, first-serve basis. You can place a + deposit to secure a seat on the bus{' '} + + here + + . +
+ ); + break; + case 'Bus': + reimbursement = ( +
+ You are taking a bus. We should put more info about the bus here. +
+ ); + break; + case 'Policy': + reimbursement = ( +
+ Your travel reimbursement decision has been released. In order to + see how much you will be reimbursed, you must first agree to our{' '} + + travel policy + + . +
+ +
+
+ ); + break; + case 'Offered': + case 'Valid': + case 'Invalid': + // TODO: Handle Valid and Invalid cases once reciepts are handled + if (this.state.travel.offer > 0) { + reimbursement = ( +
+ We're happy to offer an amount to subsidize your travel to + McHacks. We can reimburse you up to: +

+ ${this.state.travel.offer.toFixed(2)} +

+
+ Please{' '} + + upload your receipts + +
+
+ ); + } else { + reimbursement = ( +
+ Unfortunately, we’re unable to offer you any travel + reimbursement to McHacks. +

+ No Amount +

+

Bus

+ We're offering a round-trip bus from Toronto to McHacks. Seats + are available on a first-come, first-serve basis. You can place + a deposit to secure a seat on the bus{' '} + + here + + . +
+ ); + } + break; + case 'Claimed': + // TODO: Handle Valid and Invalid cases once reciepts are handled + reimbursement = ( +
+ We reimbursed you for +

+ ${this.state.travel.offer.toFixed(2)} +

+ which you have already claimed. +
+ ); + break; + } + } + + return ( +
+ + Travel | {HACKATHON_NAME} + + {this.state.isLoading ? ( +
+ ) : ( + +

+ Travel +

+

Status

+ {reimbursement} +
+
+
+ Please ensure you've reviewed our{' '} + + travel policy + {' '} + if using any of our travel accommodation options. +
+
+ )} + +
+ ); + } + + public componentDidMount() { + return this.getTravelInfo(); + } + + private async getTravelInfo() { + try { + const hacker = (await Hacker.getSelf()).data.data; + const travel = (await Travel.getSelf()).data.data; + this.setState({ + hacker, + travel, + }); + } catch (e) { + if (e && e.data) { + ValidationErrorGenerator(e.data); + } + } finally { + this.setState({ isLoading: false }); + } + } +} + +export default WithToasterContainer(TravelContainer); diff --git a/src/shared/Elements/H2.tsx b/src/shared/Elements/H2.tsx index 74e013de5..35ce8f0ba 100644 --- a/src/shared/Elements/H2.tsx +++ b/src/shared/Elements/H2.tsx @@ -3,6 +3,7 @@ import styled from '../Styles/styled-components'; interface IH2Props { color?: string; fontSize?: string; + fontWeight?: string; textAlign?: string; marginLeft?: string; marginTop?: string; @@ -14,6 +15,7 @@ export const H2 = styled.h2` font-size: ${(props) => props.fontSize || '24px'}; text-align: ${(props) => props.textAlign || 'left'}; color: ${(props) => props.color || props.theme.colors.red}; + font-weight: ${(props) => props.fontWeight || 'bold'}; margin-left: ${(props) => props.marginLeft || 'initial'}; margin-bottom: ${(props) => props.marginBottom || '12px'}; margin-top: ${(props) => props.marginTop || 'initial'}; diff --git a/src/shared/Styles/GlobalStyles.tsx b/src/shared/Styles/GlobalStyles.tsx index 29c303e3c..5d96a5418 100644 --- a/src/shared/Styles/GlobalStyles.tsx +++ b/src/shared/Styles/GlobalStyles.tsx @@ -28,10 +28,10 @@ export const GlobalStyles = createGlobalStyle` } a { - color: ${(props) => props.theme.colors.black80}; + color: ${(props) => props.theme.colors.red}; &:hover { - color: ${(props) => props.theme.colors.black30}; + color: ${(props) => props.theme.colors.redLight}; } diff --git a/src/util/UserInfoHelperFunctions.tsx b/src/util/UserInfoHelperFunctions.tsx index 86bc1e9bc..8fdcec0b4 100644 --- a/src/util/UserInfoHelperFunctions.tsx +++ b/src/util/UserInfoHelperFunctions.tsx @@ -116,14 +116,34 @@ export function canAccessTeam(hacker?: IHacker): boolean { ); } +export function canAccessTravel(hacker?: IHacker): boolean { + const status = hacker ? hacker.status : HackerStatus.HACKER_STATUS_NONE; + + if ( + status === HackerStatus.HACKER_STATUS_APPLIED || + status === HackerStatus.HACKER_STATUS_ACCEPTED || + status === HackerStatus.HACKER_STATUS_CONFIRMED || + status === HackerStatus.HACKER_STATUS_CHECKED_IN + ) { + return !!( + hacker && + hacker.application && + hacker.application.accommodation && + hacker.application.accommodation.travel && + hacker.application.accommodation.travel > 0 + ); + } + return false; +} + export function canAccessBus(hacker?: IHacker): boolean { const status = hacker ? hacker.status : HackerStatus.HACKER_STATUS_NONE; return hacker ? Boolean(hacker.travel) && - (status === HackerStatus.HACKER_STATUS_APPLIED || - status === HackerStatus.HACKER_STATUS_ACCEPTED || - status === HackerStatus.HACKER_STATUS_CONFIRMED || - status === HackerStatus.HACKER_STATUS_CHECKED_IN) + (status === HackerStatus.HACKER_STATUS_APPLIED || + status === HackerStatus.HACKER_STATUS_ACCEPTED || + status === HackerStatus.HACKER_STATUS_CONFIRMED || + status === HackerStatus.HACKER_STATUS_CHECKED_IN) : false; } @@ -147,7 +167,7 @@ export async function generateHackerQRCode(hacker: IHacker): Promise { const hackerPage = ` ${window.location.protocol}//${window.location.hostname}${ window.location.port ? ':' + window.location.port : '' - }${FrontendRoute.VIEW_HACKER_PAGE.replace(':id', hacker.id)}`; + }${FrontendRoute.VIEW_HACKER_PAGE.replace(':id', hacker.id)}`; const response = await QRCode.toDataURL(hackerPage, { scale: 10 }); return response; }