diff --git a/frontend/assets/pwa-manifest.webmanifest b/frontend/assets/pwa-manifest.webmanifest
index a0c4f47838..8bac8203fe 100644
--- a/frontend/assets/pwa-manifest.webmanifest
+++ b/frontend/assets/pwa-manifest.webmanifest
@@ -23,6 +23,5 @@
"type": "image/svg+xml"
}
],
- "background_color": "#EDEDED",
- "theme_color": "#EDEDED"
+ "background_color": "#EDEDED"
}
diff --git a/frontend/index.html b/frontend/index.html
index 478611b7c4..47715d3b52 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -5,6 +5,7 @@
Group Income
+
diff --git a/frontend/main.js b/frontend/main.js
index f055ab9f97..fe2285fad3 100644
--- a/frontend/main.js
+++ b/frontend/main.js
@@ -13,7 +13,7 @@ import type { GIMessage } from '~/shared/domains/chelonia/chelonia.js'
import '~/shared/domains/chelonia/chelonia.js'
import { CONTRACT_IS_SYNCING } from '~/shared/domains/chelonia/events.js'
import * as Common from '@common/common.js'
-import { LOGIN, LOGOUT, SWITCH_GROUP } from './utils/events.js'
+import { LOGIN, LOGOUT, SWITCH_GROUP, THEME_CHANGE } from './utils/events.js'
import './controller/namespace.js'
import './controller/actions/index.js'
import './controller/backend.js'
@@ -339,6 +339,7 @@ async function startApp () {
)
}
+ sbp('okTurtles.events/emit', THEME_CHANGE, this.$store.state.settings.themeColor)
this.setBadgeOnTab()
},
computed: {
diff --git a/frontend/model/settings/vuexModule.js b/frontend/model/settings/vuexModule.js
index 90cbd4bbe9..4880cc895f 100644
--- a/frontend/model/settings/vuexModule.js
+++ b/frontend/model/settings/vuexModule.js
@@ -3,7 +3,7 @@
import sbp from '@sbp/sbp'
import Colors from './colors.js'
-import { LOGOUT, SET_APP_LOGS_FILTER } from '@utils/events.js'
+import { LOGOUT, SET_APP_LOGS_FILTER, THEME_CHANGE } from '@utils/events.js'
import { cloneDeep } from '~/frontend/model/contracts/shared/giLodash.js'
import { THEME_LIGHT, THEME_DARK } from './themes.js'
@@ -13,6 +13,15 @@ const checkSystemColor = () => {
: THEME_LIGHT
}
+const updateMetaThemeTag = (theme: string) => {
+ // update the content of according to the changed theme
+ const metaTag: any = document.querySelector('meta[name="theme-color"]')
+
+ if (metaTag) {
+ metaTag.content = theme === THEME_DARK ? '#2E3032' : '#F5F5F5'
+ }
+}
+
const defaultTheme = 'system'
const defaultColor: string = checkSystemColor()
@@ -72,13 +81,19 @@ const mutations = {
},
setTheme (state, theme) {
state.theme = theme
- state.themeColor = theme === 'system' ? checkSystemColor() : theme
+
+ const themeColor = theme === 'system' ? checkSystemColor() : theme
+ state.themeColor = themeColor
+ sbp('okTurtles.events/emit', THEME_CHANGE, themeColor)
}
}
// Default application settings must apply again when we're no longer logged in (#1344).
sbp('okTurtles.events/on', LOGOUT, () => sbp('state/vuex/commit', 'resetSettings'))
+// make sure to set the status bar color according to the theme setting change.
+sbp('okTurtles.events/on', THEME_CHANGE, updateMetaThemeTag)
+
export default ({
state: () => cloneDeep(defaultSettings),
getters,
diff --git a/frontend/utils/events.js b/frontend/utils/events.js
index 0a76a6627c..6c6bad3c20 100644
--- a/frontend/utils/events.js
+++ b/frontend/utils/events.js
@@ -32,3 +32,5 @@ export const INCOME_DETAILS_UPDATE = 'income-details-update'
export const PAYMENTS_RECORDED = 'payments-recorded'
export const AVATAR_EDITED = 'avatar-edited'
+
+export const THEME_CHANGE = 'theme-change'