diff --git a/frontend/app/components/Session/Player/MobilePlayer/PerfWarnings.tsx b/frontend/app/components/Session/Player/MobilePlayer/PerfWarnings.tsx index 87631936d..76d528841 100644 --- a/frontend/app/components/Session/Player/MobilePlayer/PerfWarnings.tsx +++ b/frontend/app/components/Session/Player/MobilePlayer/PerfWarnings.tsx @@ -1,4 +1,4 @@ -import { MobilePerformanceEvent } from "Player/web/messages"; +import { MobilePerformanceEvent } from 'Player/web/messages'; import React from 'react'; import { MobilePlayerContext } from 'App/components/Session/playerContext'; import { observer } from 'mobx-react-lite'; @@ -6,7 +6,7 @@ import { Icon } from 'UI'; import { mapIphoneModel } from 'Player/mobile/utils'; import cn from 'classnames'; import { NONE } from 'App/mstore/uiPlayerStore'; -import { useStore } from "App/mstore"; +import { useStore } from 'App/mstore'; type warningsType = | 'thermalState' @@ -39,24 +39,38 @@ const elements = { }, background: { title: 'In Background', - icon: 'eye-slash' + icon: 'eye-slash', }, } as const; function PerfWarnings({ userDevice }: { userDevice: string }) { const { store } = React.useContext(MobilePlayerContext); - const { uiPlayerStore } = useStore(); - const { scale, performanceListNow, performanceList, inBackground } = store.get() + const { uiPlayerStore, sessionStore } = useStore(); + const { scale, performanceListNow, performanceList, inBackground } = + store.get(); const bottomBlock = uiPlayerStore.bottomBlock; const allElements = Object.keys(elements) as warningsType[]; - const list = React.useMemo(() => allElements - .filter(el => performanceList.findIndex((pw: MobilePerformanceEvent & { techName: warningsType }) => pw.techName === el) !== -1) - , [performanceList.length]) + const list = React.useMemo( + () => + allElements.filter( + (el) => + performanceList.findIndex( + (pw: MobilePerformanceEvent & { techName: warningsType }) => + pw.techName === el + ) !== -1 + ), + [performanceList.length] + ); + const width = sessionStore.current.screenWidth ?? 0; + const leftMargin = + width > 0 + ? (width / 2) * scale + 20 + : (mapIphoneModel(userDevice).styles.shell.width / 2 + 10) * scale; const contStyles = { left: '50%', display: 'flex', - marginLeft: `${(mapIphoneModel(userDevice).styles.shell.width / 2 + 10) * scale}px`, + marginLeft: `${leftMargin}px`, flexDirection: 'column', alignItems: 'flex-start', justifyContent: 'center', @@ -69,36 +83,38 @@ function PerfWarnings({ userDevice }: { userDevice: string }) { } as const; const activeWarnings = React.useMemo(() => { - const warnings: warningsType[] = [] - performanceListNow.forEach((warn: MobilePerformanceEvent & { techName: warningsType }) => { - switch (warn.techName) { - case 'thermalState': - if (warn.value > 1) warnings.push(warn.techName) // 2 = serious 3 = overheating - break; - case 'memoryWarning': - warnings.push(warn.techName) - break; - case 'lowDiskSpace': - warnings.push(warn.techName) - break; - case 'isLowPowerModeEnabled': - if (warn.value === 1) warnings.push(warn.techName) - break; - case 'batteryLevel': - if (warn.value < 25) warnings.push(warn.techName) - break; + const warnings: warningsType[] = []; + performanceListNow.forEach( + (warn: MobilePerformanceEvent & { techName: warningsType }) => { + switch (warn.techName) { + case 'thermalState': + if (warn.value > 1) warnings.push(warn.techName); // 2 = serious 3 = overheating + break; + case 'memoryWarning': + warnings.push(warn.techName); + break; + case 'lowDiskSpace': + warnings.push(warn.techName); + break; + case 'isLowPowerModeEnabled': + if (warn.value === 1) warnings.push(warn.techName); + break; + case 'batteryLevel': + if (warn.value < 25) warnings.push(warn.techName); + break; + } } - }) - return warnings + ); + return warnings; }, [performanceListNow.length]); if (bottomBlock !== NONE) return null; return ( -