From 400062adc08e207d53452e5010afe61573b41d44 Mon Sep 17 00:00:00 2001 From: Manuel Bouza Date: Fri, 29 Mar 2019 22:14:55 +0100 Subject: [PATCH] Link logo to `/activities` in modal --- package.json | 1 + src/js/background.js | 1 + src/js/components/App.js | 4 +- src/js/components/Popup.js | 1 + src/js/components/shared/Header.js | 17 +++++-- src/js/popup.js | 1 + src/js/utils/messageHandlers.js | 82 +++++++++++++++--------------- yarn.lock | 18 +++++++ 8 files changed, 77 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index b9a5101..4129a37 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "test:watch": "node_modules/.bin/jest --watch" }, "dependencies": { + "@babel/polyfill": "^7.4.0", "@bugsnag/js": "^5.2.0", "@bugsnag/plugin-react": "^5.2.0", "axios": "^0.18.0", diff --git a/src/js/background.js b/src/js/background.js index 84f2df0..66378ea 100644 --- a/src/js/background.js +++ b/src/js/background.js @@ -1,3 +1,4 @@ +import "@babel/polyfill" import ApiClient from "api/Client" import { isChrome, diff --git a/src/js/components/App.js b/src/js/components/App.js index aa20907..e13908f 100644 --- a/src/js/components/App.js +++ b/src/js/components/App.js @@ -36,6 +36,7 @@ class App extends Component { projectId: PropTypes.string, taskId: PropTypes.string }), + subdomain: PropTypes.string, activities: PropTypes.array, schedules: PropTypes.array, projects: PropTypes.array, @@ -145,6 +146,7 @@ class App extends Component { render() { const { loading, + subdomain, projects, activities, schedules, @@ -179,7 +181,7 @@ class App extends Component { > {props => ( -
+
{() => ( <> diff --git a/src/js/components/Popup.js b/src/js/components/Popup.js index d57f8bc..da158f3 100644 --- a/src/js/components/Popup.js +++ b/src/js/components/Popup.js @@ -52,6 +52,7 @@ class Popup extends Component { const serializedProps = serializeProps([ "loading", "service", + "subdomain", "lastProjectId", "lastTaskId", "roundTimeEntries", diff --git a/src/js/components/shared/Header.js b/src/js/components/shared/Header.js index 1cd0d4e..245eeea 100644 --- a/src/js/components/shared/Header.js +++ b/src/js/components/shared/Header.js @@ -1,13 +1,20 @@ import React from 'react' +import PropTypes from 'prop-types' import logoUrl from "images/logo.png" -const Header = () => ( +const Header = ({ subdomain }) => (
- + + +
) +Header.propTypes = { + subdomain: PropTypes.string +} + export default Header diff --git a/src/js/popup.js b/src/js/popup.js index 348d0c8..26d7e25 100644 --- a/src/js/popup.js +++ b/src/js/popup.js @@ -9,6 +9,7 @@ import "../css/popup.scss" const parsedProps = parseProps([ "loading", "service", + "subdomain", "projects", "activities", "schedules", diff --git a/src/js/utils/messageHandlers.js b/src/js/utils/messageHandlers.js index 10ffd04..6a8bc13 100644 --- a/src/js/utils/messageHandlers.js +++ b/src/js/utils/messageHandlers.js @@ -76,52 +76,50 @@ export function togglePopup(tab, { messenger }) { } } -function openPopup(tab, { service, messenger }) { +async function openPopup(tab, { service, messenger }) { messenger.postMessage(tab, { type: "openPopup", payload: { loading: true } }) const fromDate = getStartOfWeek() const toDate = getEndOfWeek() - getSettings() - .then(settings => new ApiClient(settings)) - .then(apiClient => - Promise.all([ - apiClient.login(service), - apiClient.projects(), - apiClient.activities(fromDate, toDate), - apiClient.schedules(fromDate, toDate) - ]) - ) - .then(responses => { - const action = { - type: "openPopup", - payload: { - service, - lastProjectId: get("[0].data.last_project_id", responses), - lastTaskId: get("[0].data.last_task_id", responses), - roundTimeEntries: get("[0].data.round_time_entries", responses), - projects: groupedProjectOptions(get("[1].data.projects", responses)), - activities: get("[2].data", responses), - schedules: get("[3].data", responses), - fromDate, - toDate, - loading: false - } + const settings = await getSettings() + const apiClient = new ApiClient(settings) + try { + const responses = await Promise.all([ + apiClient.login(service), + apiClient.projects(), + apiClient.activities(fromDate, toDate), + apiClient.schedules(fromDate, toDate) + ]) + const action = { + type: "openPopup", + payload: { + service, + subdomain: settings.subdomain, + lastProjectId: get("[0].data.last_project_id", responses), + lastTaskId: get("[0].data.last_task_id", responses), + roundTimeEntries: get("[0].data.round_time_entries", responses), + projects: groupedProjectOptions(get("[1].data.projects", responses)), + activities: get("[2].data", responses), + schedules: get("[3].data", responses), + fromDate, + toDate, + loading: false } - messenger.postMessage(tab, action) - }) - .catch(error => { - let errorType, errorMessage - if (error.response?.status === 401) { - errorType = ERROR_UNAUTHORIZED - } else if (error.response?.status === 426) { - errorType = ERROR_UPGRADE_REQUIRED - } else { - errorType = ERROR_UNKNOWN - errorMessage = error.message - } - messenger.postMessage(tab, { - type: "openPopup", - payload: { errorType, errorMessage } - }) + } + messenger.postMessage(tab, action) + } catch (error) { + let errorType, errorMessage + if (error.response?.status === 401) { + errorType = ERROR_UNAUTHORIZED + } else if (error.response?.status === 426) { + errorType = ERROR_UPGRADE_REQUIRED + } else { + errorType = ERROR_UNKNOWN + errorMessage = error.message + } + messenger.postMessage(tab, { + type: "openPopup", + payload: { errorType, errorMessage } }) + } } diff --git a/yarn.lock b/yarn.lock index 5705837..160d8d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -607,6 +607,14 @@ "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" +"@babel/polyfill@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.4.0.tgz#90f9d68ae34ac42ab4b4aa03151848f536960218" + integrity sha512-bVsjsrtsDflIHp5I6caaAa2V25Kzn50HKPL6g3X0P0ni1ks+58cPB8Mz6AOKVuRPgaVdq/OwEUc/1vKqX+Mo4A== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.2" + "@babel/preset-env@^7.2.2": version "7.3.1" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.3.1.tgz#389e8ca6b17ae67aaf9a2111665030be923515db" @@ -2021,6 +2029,11 @@ copyfiles@^2.1.0: through2 "^2.0.1" yargs "^11.0.0" +core-js@^2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" + integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -6160,6 +6173,11 @@ regenerator-runtime@^0.12.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== +regenerator-runtime@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + regenerator-transform@^0.13.3: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb"