Close TimerView if timer stopped for current service

This commit is contained in:
manubo
2019-10-03 14:56:59 +02:00
parent 4e8018b8a0
commit cc223a1025

View File

@@ -3,10 +3,15 @@ import ApiClient from "api/Client"
import { isChrome, getCurrentTab, getSettings, isBrowserTab } from "utils/browser" import { isChrome, getCurrentTab, getSettings, isBrowserTab } from "utils/browser"
import { BackgroundMessenger } from "utils/messaging" import { BackgroundMessenger } from "utils/messaging"
import { tabUpdated, settingsChanged, togglePopup, openPopup } from "utils/messageHandlers" import { tabUpdated, settingsChanged, togglePopup, openPopup } from "utils/messageHandlers"
import { isNil } from "lodash"
const messenger = new BackgroundMessenger() const messenger = new BackgroundMessenger()
function resetBubble({ tab, apiClient, service }, closePopup = true) { function timerStoppedForCurrentService(service, timedActivity) {
return timedActivity.service_id && timedActivity.service_id === service?.id
}
function resetBubble({ tab, apiClient, service, timedActivity }) {
apiClient apiClient
.activitiesStatus(service) .activitiesStatus(service)
.then(({ data }) => { .then(({ data }) => {
@@ -20,7 +25,7 @@ function resetBubble({ tab, apiClient, service }, closePopup = true) {
}) })
}) })
.then(() => { .then(() => {
if (closePopup) { if (isNil(timedActivity) || timerStoppedForCurrentService(service, timedActivity)) {
messenger.postMessage(tab, { type: "closePopup" }) messenger.postMessage(tab, { type: "closePopup" })
} else { } else {
openPopup(tab, { service, messenger }) openPopup(tab, { service, messenger })
@@ -73,7 +78,7 @@ chrome.runtime.onMessage.addListener(action => {
const apiClient = new ApiClient(settings) const apiClient = new ApiClient(settings)
apiClient apiClient
.stopTimer(timedActivity) .stopTimer(timedActivity)
.then(() => resetBubble({ tab, apiClient, service }, false)) .then(() => resetBubble({ tab, apiClient, service, timedActivity }))
.catch(() => null) .catch(() => null)
}) })
}) })