diff --git a/.changeset/calm-bees-roll.md b/.changeset/calm-bees-roll.md new file mode 100644 index 0000000000..034ed598e1 --- /dev/null +++ b/.changeset/calm-bees-roll.md @@ -0,0 +1,6 @@ +--- +"@lynx-js/web-worker-runtime": patch +"@lynx-js/web-core": patch +--- + +feat: add pixelRatio of SystemInfo, now you can use `SystemInfo.pixelRatio`. diff --git a/packages/web-platform/web-core/src/uiThread/bootWorkers.ts b/packages/web-platform/web-core/src/uiThread/bootWorkers.ts index bbdc41a3ca..dd49854d10 100644 --- a/packages/web-platform/web-core/src/uiThread/bootWorkers.ts +++ b/packages/web-platform/web-core/src/uiThread/bootWorkers.ts @@ -44,6 +44,7 @@ function createMainWorker() { mode: 'main', toUIThread: channelToMainThread.port2, toPeerThread: channelMainThreadWithBackground.port1, + pixelRatio: window.devicePixelRatio, }; mainThreadWorker.postMessage(mainThreadMessage, [ @@ -73,6 +74,7 @@ function createBackgroundWorker( mode: 'background', toUIThread: channelToBackground.port2, toPeerThread: channelMainThreadWithBackground.port2, + pixelRatio: window.devicePixelRatio, }; backgroundThreadWorker.postMessage(backgroundThreadMessage, [ channelToBackground.port2, diff --git a/packages/web-platform/web-tests/tests/react/api-SystemInfo/index.jsx b/packages/web-platform/web-tests/tests/react/api-SystemInfo/index.jsx index a4957299d0..fbe6713125 100644 --- a/packages/web-platform/web-tests/tests/react/api-SystemInfo/index.jsx +++ b/packages/web-platform/web-tests/tests/react/api-SystemInfo/index.jsx @@ -6,7 +6,9 @@ import { root, useEffect, useState } from '@lynx-js/react'; function App() { const [color, setColor] = useState('pink'); useEffect(() => { - if (SystemInfo.platform === 'web') { + if ( + SystemInfo.platform === 'web' && typeof SystemInfo.pixelRatio === 'number' + ) { setColor('green'); } }, []); diff --git a/packages/web-platform/web-worker-runtime/src/index.ts b/packages/web-platform/web-worker-runtime/src/index.ts index bd0d26928e..8a297eb982 100644 --- a/packages/web-platform/web-worker-runtime/src/index.ts +++ b/packages/web-platform/web-worker-runtime/src/index.ts @@ -9,10 +9,13 @@ export interface WorkerStartMessage { mode: 'main' | 'background'; toPeerThread: MessagePort; toUIThread: MessagePort; + pixelRatio: number; } self.onmessage = (ev) => { - const { mode, toPeerThread, toUIThread } = ev.data as WorkerStartMessage; + const { mode, toPeerThread, toUIThread, pixelRatio } = ev + .data as WorkerStartMessage; + (globalThis as any).SystemInfo.pixelRatio = pixelRatio; if (mode === 'main') { startMainThread(toUIThread, toPeerThread); } else {