diff --git a/edge-apps/clock/screenshots/1080x1920.webp b/edge-apps/clock/screenshots/1080x1920.webp index 5c29e3a14..7bc90673c 100644 Binary files a/edge-apps/clock/screenshots/1080x1920.webp and b/edge-apps/clock/screenshots/1080x1920.webp differ diff --git a/edge-apps/clock/screenshots/1280x720.webp b/edge-apps/clock/screenshots/1280x720.webp index c48a6f89f..2121603d1 100644 Binary files a/edge-apps/clock/screenshots/1280x720.webp and b/edge-apps/clock/screenshots/1280x720.webp differ diff --git a/edge-apps/clock/screenshots/1920x1080.webp b/edge-apps/clock/screenshots/1920x1080.webp index e81dd13ad..2686be7c0 100644 Binary files a/edge-apps/clock/screenshots/1920x1080.webp and b/edge-apps/clock/screenshots/1920x1080.webp differ diff --git a/edge-apps/clock/screenshots/2160x3840.webp b/edge-apps/clock/screenshots/2160x3840.webp index b77169631..ca362707a 100644 Binary files a/edge-apps/clock/screenshots/2160x3840.webp and b/edge-apps/clock/screenshots/2160x3840.webp differ diff --git a/edge-apps/clock/screenshots/2160x4096.webp b/edge-apps/clock/screenshots/2160x4096.webp index d652bc79e..dd87a0ed1 100644 Binary files a/edge-apps/clock/screenshots/2160x4096.webp and b/edge-apps/clock/screenshots/2160x4096.webp differ diff --git a/edge-apps/clock/screenshots/3840x2160.webp b/edge-apps/clock/screenshots/3840x2160.webp index 2061ee349..da4f51ace 100644 Binary files a/edge-apps/clock/screenshots/3840x2160.webp and b/edge-apps/clock/screenshots/3840x2160.webp differ diff --git a/edge-apps/clock/screenshots/4096x2160.webp b/edge-apps/clock/screenshots/4096x2160.webp index 788a4150d..51db4b6af 100644 Binary files a/edge-apps/clock/screenshots/4096x2160.webp and b/edge-apps/clock/screenshots/4096x2160.webp differ diff --git a/edge-apps/clock/screenshots/480x800.webp b/edge-apps/clock/screenshots/480x800.webp index 39c56c2de..22783be53 100644 Binary files a/edge-apps/clock/screenshots/480x800.webp and b/edge-apps/clock/screenshots/480x800.webp differ diff --git a/edge-apps/clock/screenshots/720x1280.webp b/edge-apps/clock/screenshots/720x1280.webp index 7a77a8664..c7cd4db32 100644 Binary files a/edge-apps/clock/screenshots/720x1280.webp and b/edge-apps/clock/screenshots/720x1280.webp differ diff --git a/edge-apps/clock/screenshots/800x480.webp b/edge-apps/clock/screenshots/800x480.webp index 06514df45..cb922899c 100644 Binary files a/edge-apps/clock/screenshots/800x480.webp and b/edge-apps/clock/screenshots/800x480.webp differ diff --git a/edge-apps/edge-apps-library/src/assets/images/screenly.svg b/edge-apps/edge-apps-library/src/assets/images/screenly.svg new file mode 100644 index 000000000..16ce8e6af --- /dev/null +++ b/edge-apps/edge-apps-library/src/assets/images/screenly.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/edge-apps/edge-apps-library/src/utils/theme.test.ts b/edge-apps/edge-apps-library/src/utils/theme.test.ts index 53b807f3e..74a58a72d 100644 --- a/edge-apps/edge-apps-library/src/utils/theme.test.ts +++ b/edge-apps/edge-apps-library/src/utils/theme.test.ts @@ -1,13 +1,15 @@ -import { describe, test, expect, beforeEach, afterEach } from 'bun:test' +import { describe, test, expect, beforeEach, afterEach, mock } from 'bun:test' import { getPrimaryColor, getSecondaryColor, getThemeColors, applyThemeColors, setupTheme, + setupBrandingLogo, DEFAULT_THEME_COLORS, } from './theme' import { setupScreenlyMock, resetScreenlyMock } from '../test/mock' +import defaultLogoUrl from '../assets/images/screenly.svg' // eslint-disable-next-line max-lines-per-function describe('theme utilities', () => { @@ -151,4 +153,36 @@ describe('theme utilities', () => { ).toBe('#FF0000') }) }) + + describe('setupBrandingLogo', () => { + let originalFetch: typeof globalThis.fetch + + beforeEach(() => { + originalFetch = globalThis.fetch + }) + + afterEach(() => { + globalThis.fetch = originalFetch + }) + + test('should return default logo when no logos are configured', async () => { + const result = await setupBrandingLogo() + expect(result).toBe(defaultLogoUrl) + }) + + test('should return default logo when primary and fallback fetches fail', async () => { + setupScreenlyMock( + {}, + { + screenly_logo_light: 'http://example.com/logo.png', + screenly_logo_dark: '', + }, + ) + globalThis.fetch = mock(() => + Promise.reject(new Error('Network error')), + ) as typeof globalThis.fetch + const result = await setupBrandingLogo() + expect(result).toBe(defaultLogoUrl) + }) + }) }) diff --git a/edge-apps/edge-apps-library/src/utils/theme.ts b/edge-apps/edge-apps-library/src/utils/theme.ts index c2189ebd8..53974b516 100644 --- a/edge-apps/edge-apps-library/src/utils/theme.ts +++ b/edge-apps/edge-apps-library/src/utils/theme.ts @@ -1,4 +1,5 @@ import type { ThemeColors, BrandingConfig } from '../types/index.js' +import defaultLogoUrl from '../assets/images/screenly.svg' /** * Default theme colors used by Screenly @@ -169,12 +170,11 @@ export async function fetchLogoImage(fileUrl: string): Promise { * Setup branding logo from Screenly settings. * * Attempts to fetch the logo image using a CORS proxy URL based on the current theme. - * Falls back to a direct URL if the proxy fetch fails, and returns an empty string if no logo is configured or all fetch attempts fail. + * Falls back to a direct URL if the proxy fetch fails, and returns the default logo if no logo is configured or all fetch attempts fail. * * @returns {Promise} The processed logo URL: * - Returns a data URI for SVG images, or the original URL for PNG/JPEG images, if successfully fetched via the CORS proxy or fallback URL. - * - Returns the fallback URL if all fetch attempts fail but a logo URL is configured. - * - Returns an empty string if no logo is configured or all fetch attempts fail. + * - Returns the default logo URL if no logo is configured or all fetch attempts fail. */ export async function setupBrandingLogo(): Promise { const settings = screenly.settings @@ -187,20 +187,18 @@ export async function setupBrandingLogo(): Promise { let logoUrl = '' let fallbackUrl = '' - if (theme === 'light') { - logoUrl = lightLogo - ? `${screenly.cors_proxy_url}/${lightLogo}` - : `${screenly.cors_proxy_url}/${darkLogo}` - fallbackUrl = lightLogo || darkLogo || '' - } else if (theme === 'dark') { - logoUrl = darkLogo - ? `${screenly.cors_proxy_url}/${darkLogo}` - : `${screenly.cors_proxy_url}/${lightLogo}` - fallbackUrl = darkLogo || lightLogo || '' + const isDark = theme === 'dark' + const primaryLogo = isDark ? darkLogo : lightLogo + const secondaryLogo = isDark ? lightLogo : darkLogo + const resolvedLogo = primaryLogo || secondaryLogo + + if (resolvedLogo) { + logoUrl = `${screenly.cors_proxy_url}/${resolvedLogo}` + fallbackUrl = resolvedLogo } - // Return early if logoUrl is empty - if (!logoUrl) return '' + // Return default logo if no logo is configured + if (!fallbackUrl) return defaultLogoUrl // Try to fetch the image using the CORS proxy URL try { return await fetchLogoImage(logoUrl) @@ -217,8 +215,8 @@ export async function setupBrandingLogo(): Promise { err, ) } - // Return empty string if all fetches fail - return '' + // Return default logo if all fetches fail + return defaultLogoUrl } /** @@ -230,6 +228,6 @@ export async function setupBranding(): Promise { return { colors, - logoUrl: logoUrl || undefined, + logoUrl, } } diff --git a/edge-apps/simple-message-app/screenshots/1080x1920.webp b/edge-apps/simple-message-app/screenshots/1080x1920.webp index 1817f5689..744f07286 100644 Binary files a/edge-apps/simple-message-app/screenshots/1080x1920.webp and b/edge-apps/simple-message-app/screenshots/1080x1920.webp differ diff --git a/edge-apps/simple-message-app/screenshots/1280x720.webp b/edge-apps/simple-message-app/screenshots/1280x720.webp index 86ae43b15..74d4e6b19 100644 Binary files a/edge-apps/simple-message-app/screenshots/1280x720.webp and b/edge-apps/simple-message-app/screenshots/1280x720.webp differ diff --git a/edge-apps/simple-message-app/screenshots/1920x1080.webp b/edge-apps/simple-message-app/screenshots/1920x1080.webp index a8cd57850..4fdc38654 100644 Binary files a/edge-apps/simple-message-app/screenshots/1920x1080.webp and b/edge-apps/simple-message-app/screenshots/1920x1080.webp differ diff --git a/edge-apps/simple-message-app/screenshots/2160x3840.webp b/edge-apps/simple-message-app/screenshots/2160x3840.webp index 5a15069c9..c21257acd 100644 Binary files a/edge-apps/simple-message-app/screenshots/2160x3840.webp and b/edge-apps/simple-message-app/screenshots/2160x3840.webp differ diff --git a/edge-apps/simple-message-app/screenshots/2160x4096.webp b/edge-apps/simple-message-app/screenshots/2160x4096.webp index 141b22ce0..a226002b6 100644 Binary files a/edge-apps/simple-message-app/screenshots/2160x4096.webp and b/edge-apps/simple-message-app/screenshots/2160x4096.webp differ diff --git a/edge-apps/simple-message-app/screenshots/3840x2160.webp b/edge-apps/simple-message-app/screenshots/3840x2160.webp index dcfce68dc..3b9989acf 100644 Binary files a/edge-apps/simple-message-app/screenshots/3840x2160.webp and b/edge-apps/simple-message-app/screenshots/3840x2160.webp differ diff --git a/edge-apps/simple-message-app/screenshots/4096x2160.webp b/edge-apps/simple-message-app/screenshots/4096x2160.webp index aac99a275..4686e30b1 100644 Binary files a/edge-apps/simple-message-app/screenshots/4096x2160.webp and b/edge-apps/simple-message-app/screenshots/4096x2160.webp differ diff --git a/edge-apps/simple-message-app/screenshots/480x800.webp b/edge-apps/simple-message-app/screenshots/480x800.webp index 6675c6da6..e397a6992 100644 Binary files a/edge-apps/simple-message-app/screenshots/480x800.webp and b/edge-apps/simple-message-app/screenshots/480x800.webp differ diff --git a/edge-apps/simple-message-app/screenshots/720x1280.webp b/edge-apps/simple-message-app/screenshots/720x1280.webp index ee7e83809..ce6fb96b8 100644 Binary files a/edge-apps/simple-message-app/screenshots/720x1280.webp and b/edge-apps/simple-message-app/screenshots/720x1280.webp differ diff --git a/edge-apps/simple-message-app/screenshots/800x480.webp b/edge-apps/simple-message-app/screenshots/800x480.webp index 8f266b243..908b891e2 100644 Binary files a/edge-apps/simple-message-app/screenshots/800x480.webp and b/edge-apps/simple-message-app/screenshots/800x480.webp differ diff --git a/edge-apps/simple-timer/screenshots/1080x1920.webp b/edge-apps/simple-timer/screenshots/1080x1920.webp index 825466ab9..e38505f7c 100644 Binary files a/edge-apps/simple-timer/screenshots/1080x1920.webp and b/edge-apps/simple-timer/screenshots/1080x1920.webp differ diff --git a/edge-apps/simple-timer/screenshots/1280x720.webp b/edge-apps/simple-timer/screenshots/1280x720.webp index 0feb71064..4bbfa9d22 100644 Binary files a/edge-apps/simple-timer/screenshots/1280x720.webp and b/edge-apps/simple-timer/screenshots/1280x720.webp differ diff --git a/edge-apps/simple-timer/screenshots/1920x1080.webp b/edge-apps/simple-timer/screenshots/1920x1080.webp index 1369afceb..8abd32b43 100644 Binary files a/edge-apps/simple-timer/screenshots/1920x1080.webp and b/edge-apps/simple-timer/screenshots/1920x1080.webp differ diff --git a/edge-apps/simple-timer/screenshots/2160x3840.webp b/edge-apps/simple-timer/screenshots/2160x3840.webp index bc207f552..0d718d77e 100644 Binary files a/edge-apps/simple-timer/screenshots/2160x3840.webp and b/edge-apps/simple-timer/screenshots/2160x3840.webp differ diff --git a/edge-apps/simple-timer/screenshots/2160x4096.webp b/edge-apps/simple-timer/screenshots/2160x4096.webp index 209e81f13..f757703de 100644 Binary files a/edge-apps/simple-timer/screenshots/2160x4096.webp and b/edge-apps/simple-timer/screenshots/2160x4096.webp differ diff --git a/edge-apps/simple-timer/screenshots/3840x2160.webp b/edge-apps/simple-timer/screenshots/3840x2160.webp index c743c5ba4..94e4a9399 100644 Binary files a/edge-apps/simple-timer/screenshots/3840x2160.webp and b/edge-apps/simple-timer/screenshots/3840x2160.webp differ diff --git a/edge-apps/simple-timer/screenshots/4096x2160.webp b/edge-apps/simple-timer/screenshots/4096x2160.webp index 0d1b900e7..8c02183f7 100644 Binary files a/edge-apps/simple-timer/screenshots/4096x2160.webp and b/edge-apps/simple-timer/screenshots/4096x2160.webp differ diff --git a/edge-apps/simple-timer/screenshots/480x800.webp b/edge-apps/simple-timer/screenshots/480x800.webp index 2ca6a75a7..ff5f72ea0 100644 Binary files a/edge-apps/simple-timer/screenshots/480x800.webp and b/edge-apps/simple-timer/screenshots/480x800.webp differ diff --git a/edge-apps/simple-timer/screenshots/720x1280.webp b/edge-apps/simple-timer/screenshots/720x1280.webp index 66afdda3f..6ba8e0aaa 100644 Binary files a/edge-apps/simple-timer/screenshots/720x1280.webp and b/edge-apps/simple-timer/screenshots/720x1280.webp differ diff --git a/edge-apps/simple-timer/screenshots/800x480.webp b/edge-apps/simple-timer/screenshots/800x480.webp index 0398c5cf5..2ca08d60e 100644 Binary files a/edge-apps/simple-timer/screenshots/800x480.webp and b/edge-apps/simple-timer/screenshots/800x480.webp differ diff --git a/edge-apps/weather/screenshots/1080x1920.webp b/edge-apps/weather/screenshots/1080x1920.webp index 8e2b21d87..a674948f8 100644 Binary files a/edge-apps/weather/screenshots/1080x1920.webp and b/edge-apps/weather/screenshots/1080x1920.webp differ diff --git a/edge-apps/weather/screenshots/1280x720.webp b/edge-apps/weather/screenshots/1280x720.webp index 5b3fe54dc..f0daab0e9 100644 Binary files a/edge-apps/weather/screenshots/1280x720.webp and b/edge-apps/weather/screenshots/1280x720.webp differ diff --git a/edge-apps/weather/screenshots/1920x1080.webp b/edge-apps/weather/screenshots/1920x1080.webp index 5b7702cdc..bb1d8148b 100644 Binary files a/edge-apps/weather/screenshots/1920x1080.webp and b/edge-apps/weather/screenshots/1920x1080.webp differ diff --git a/edge-apps/weather/screenshots/2160x3840.webp b/edge-apps/weather/screenshots/2160x3840.webp index fbed875f1..026fda7e5 100644 Binary files a/edge-apps/weather/screenshots/2160x3840.webp and b/edge-apps/weather/screenshots/2160x3840.webp differ diff --git a/edge-apps/weather/screenshots/2160x4096.webp b/edge-apps/weather/screenshots/2160x4096.webp index 7771604ee..03ff58b19 100644 Binary files a/edge-apps/weather/screenshots/2160x4096.webp and b/edge-apps/weather/screenshots/2160x4096.webp differ diff --git a/edge-apps/weather/screenshots/3840x2160.webp b/edge-apps/weather/screenshots/3840x2160.webp index 786ee72cd..5cc5d68e1 100644 Binary files a/edge-apps/weather/screenshots/3840x2160.webp and b/edge-apps/weather/screenshots/3840x2160.webp differ diff --git a/edge-apps/weather/screenshots/4096x2160.webp b/edge-apps/weather/screenshots/4096x2160.webp index 02f716198..d7ef210de 100644 Binary files a/edge-apps/weather/screenshots/4096x2160.webp and b/edge-apps/weather/screenshots/4096x2160.webp differ diff --git a/edge-apps/weather/screenshots/480x800.webp b/edge-apps/weather/screenshots/480x800.webp index fc2c8fe91..2b4ea8828 100644 Binary files a/edge-apps/weather/screenshots/480x800.webp and b/edge-apps/weather/screenshots/480x800.webp differ diff --git a/edge-apps/weather/screenshots/720x1280.webp b/edge-apps/weather/screenshots/720x1280.webp index 65b25c645..beb0fe983 100644 Binary files a/edge-apps/weather/screenshots/720x1280.webp and b/edge-apps/weather/screenshots/720x1280.webp differ diff --git a/edge-apps/weather/screenshots/800x480.webp b/edge-apps/weather/screenshots/800x480.webp index 07cbf6e08..2cbe5685a 100644 Binary files a/edge-apps/weather/screenshots/800x480.webp and b/edge-apps/weather/screenshots/800x480.webp differ diff --git a/edge-apps/welcome-app/screenshots/1080x1920.webp b/edge-apps/welcome-app/screenshots/1080x1920.webp index 33200bac3..7417f36da 100644 Binary files a/edge-apps/welcome-app/screenshots/1080x1920.webp and b/edge-apps/welcome-app/screenshots/1080x1920.webp differ diff --git a/edge-apps/welcome-app/screenshots/1280x720.webp b/edge-apps/welcome-app/screenshots/1280x720.webp index a54732320..8cb92f631 100644 Binary files a/edge-apps/welcome-app/screenshots/1280x720.webp and b/edge-apps/welcome-app/screenshots/1280x720.webp differ diff --git a/edge-apps/welcome-app/screenshots/1920x1080.webp b/edge-apps/welcome-app/screenshots/1920x1080.webp index b4e8292ee..2b8b96dad 100644 Binary files a/edge-apps/welcome-app/screenshots/1920x1080.webp and b/edge-apps/welcome-app/screenshots/1920x1080.webp differ diff --git a/edge-apps/welcome-app/screenshots/2160x3840.webp b/edge-apps/welcome-app/screenshots/2160x3840.webp index 0b51cdb02..50afe9f64 100644 Binary files a/edge-apps/welcome-app/screenshots/2160x3840.webp and b/edge-apps/welcome-app/screenshots/2160x3840.webp differ diff --git a/edge-apps/welcome-app/screenshots/2160x4096.webp b/edge-apps/welcome-app/screenshots/2160x4096.webp index f85f654b4..4eab2048c 100644 Binary files a/edge-apps/welcome-app/screenshots/2160x4096.webp and b/edge-apps/welcome-app/screenshots/2160x4096.webp differ diff --git a/edge-apps/welcome-app/screenshots/3840x2160.webp b/edge-apps/welcome-app/screenshots/3840x2160.webp index 5ae181540..be35be5ec 100644 Binary files a/edge-apps/welcome-app/screenshots/3840x2160.webp and b/edge-apps/welcome-app/screenshots/3840x2160.webp differ diff --git a/edge-apps/welcome-app/screenshots/4096x2160.webp b/edge-apps/welcome-app/screenshots/4096x2160.webp index ab3bd69b9..b2624b584 100644 Binary files a/edge-apps/welcome-app/screenshots/4096x2160.webp and b/edge-apps/welcome-app/screenshots/4096x2160.webp differ diff --git a/edge-apps/welcome-app/screenshots/480x800.webp b/edge-apps/welcome-app/screenshots/480x800.webp index 81b7fe931..c7bd155d7 100644 Binary files a/edge-apps/welcome-app/screenshots/480x800.webp and b/edge-apps/welcome-app/screenshots/480x800.webp differ diff --git a/edge-apps/welcome-app/screenshots/720x1280.webp b/edge-apps/welcome-app/screenshots/720x1280.webp index 6511d52a2..305819942 100644 Binary files a/edge-apps/welcome-app/screenshots/720x1280.webp and b/edge-apps/welcome-app/screenshots/720x1280.webp differ diff --git a/edge-apps/welcome-app/screenshots/800x480.webp b/edge-apps/welcome-app/screenshots/800x480.webp index 4ff115a04..16ee05939 100644 Binary files a/edge-apps/welcome-app/screenshots/800x480.webp and b/edge-apps/welcome-app/screenshots/800x480.webp differ