Skip to content

Commit ece8426

Browse files
committed
fix(branding): update badge color when switching branding
1 parent 621062f commit ece8426

File tree

4 files changed

+22
-4
lines changed

4 files changed

+22
-4
lines changed

src/models/message/message-type.model.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { VersionUpdateDetails } from '@dvcol/web-extension-utils/chrome/models';
22
import type { ContextMenuIds } from '~/models/context/context-menu.model';
3+
import type { BadgeColorDetails, TabIconDetails } from '~/utils/browser/browser-message.utils';
34

45
export const MessageType = {
56
ContextMenu: 'context-menu',
@@ -30,5 +31,5 @@ export type MessagePayload<T extends MessageTypes = MessageTypes> = T extends ty
3031
: T extends typeof MessageType.BadgeUpdate
3132
? BadgeUpdatePayload
3233
: T extends typeof MessageType.IconUpdate
33-
? string
34+
? { icon?: TabIconDetails; color?: BadgeColorDetails }
3435
: never;

src/scripts/background/index.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ try {
6666
try {
6767
onMessage(MessageType.IconUpdate, async message => {
6868
if (!message.payload) return;
69-
setIcon?.({ path: message.payload });
69+
const { icon, color } = message.payload;
70+
if (icon !== undefined) setIcon?.(icon);
71+
if (color !== undefined) setBadgeBackgroundColor?.(color);
7072
});
7173
} catch (error) {
7274
console.error('Failed to handle badge update message', error);

src/stores/settings/extension.store.ts

+14-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { Route } from '~/models/router.model';
2020
import { Logger } from '~/services/logger.service';
2121
import { TraktService } from '~/services/trakt.service';
2222
import { useAuthSettingsStoreRefs } from '~/stores/settings/auth.store';
23+
import { BrandColors } from '~/styles/colors.style';
2324
import { sendMessage } from '~/utils/browser/browser-message.utils';
2425
import { storage } from '~/utils/browser/browser-storage.utils';
2526
import { debounce } from '~/utils/debounce.utils';
@@ -233,11 +234,22 @@ export const useExtensionSettingsStore = defineStore(ExtensionSettingsConstants.
233234

234235
const changeBrand = async (value: Brands = brand.value) => {
235236
if (value === Brand.New) {
236-
if (chromeRuntimeId) return sendMessage({ type: MessageType.IconUpdate, payload: NewExtensionIcon });
237+
if (chromeRuntimeId) {
238+
return sendMessage({
239+
type: MessageType.IconUpdate,
240+
payload: { icon: { path: NewExtensionIcon }, color: { color: BrandColors.traktDark } },
241+
});
242+
}
237243
newIcons.forEach(replaceIcon);
238244
return replaceMeta(newThemeColor);
239245
}
240-
if (chromeRuntimeId) return sendMessage({ type: MessageType.IconUpdate, payload: OldExtensionIcon });
246+
247+
if (chromeRuntimeId) {
248+
return sendMessage({
249+
type: MessageType.IconUpdate,
250+
payload: { icon: { path: OldExtensionIcon }, color: { color: BrandColors.traktDark } },
251+
});
252+
}
241253
oldIcons.forEach(replaceIcon);
242254
return replaceMeta(oldThemeColor);
243255
};

src/utils/browser/browser-message.utils.ts

+3
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,6 @@ export const sendMessage = async <
3232
else throw error;
3333
}
3434
};
35+
36+
export type TabIconDetails = chrome.action.TabIconDetails;
37+
export type BadgeColorDetails = chrome.action.BadgeColorDetails;

0 commit comments

Comments
 (0)