diff --git a/ui/common/src/device.ts b/ui/common/src/device.ts index dd3612d3ba717..d337bff62f7c0 100644 --- a/ui/common/src/device.ts +++ b/ui/common/src/device.ts @@ -66,11 +66,9 @@ export const isTouchDevice = (): boolean => !hasMouse(); // prefer isTouchDevice export const isMobile = (): boolean => isAndroid() || isIos(); -export const isAndroid = (): boolean => /Android/.test(navigator.userAgent); +export const isAndroid: () => boolean = memoize(() => /Android/.test(navigator.userAgent)); -export const isIos: () => boolean = memoize( - () => /iPhone|iPod/.test(navigator.userAgent) || isIPad(), -); +export const isIos: () => boolean = memoize(() => /iPhone|iPod/.test(navigator.userAgent) || isIPad()); export const isIPad = (): boolean => navigator?.maxTouchPoints > 2 && /iPad|Macintosh/.test(navigator.userAgent); diff --git a/ui/round/src/clock/clockView.ts b/ui/round/src/clock/clockView.ts index f2532e71da680..5b38e89191d01 100644 --- a/ui/round/src/clock/clockView.ts +++ b/ui/round/src/clock/clockView.ts @@ -7,6 +7,7 @@ import type { ClockElements, ClockController } from './clockCtrl'; import type { Hooks } from 'snabbdom'; import { looseH as h, type VNode, bind } from 'common/snabbdom'; import type { Position } from '../interfaces'; +import { isAndroid, isCol1 } from 'common/device'; export function renderClock(ctrl: RoundController, player: Player, position: Position): VNode { const clock = ctrl.clock!, @@ -113,7 +114,10 @@ function showBar(ctrl: RoundController, color: Color) { export function updateElements(clock: ClockController, els: ClockElements, millis: Millis): void { if (els.time) els.time.innerHTML = formatClockTime(millis, clock.showTenths(millis), true, clock.opts.nvui); - if (els.bar) els.bar.style.transform = 'scale(' + clock.timeRatio(millis) + ',1)'; + // 12/02/2025 Brave 1.74.51 android flickers the bar oninline transforms, even though .bar is display: none + if (els.bar) + if (!isAndroid() || !isCol1() || window.getComputedStyle(els.bar).display === 'block') + els.bar.style.transform = 'scale(' + clock.timeRatio(millis) + ',1)'; if (els.clock) { const cl = els.clock.classList; if (millis < clock.emergMs) cl.add('emerg');