|
1 | 1 | import { Discord, DocumentationSite, ExtVersion, ExtServer } from "@App/app/const"; |
| 2 | +import { sanitizeHTML } from "@App/pkg/utils/sanitize"; |
2 | 3 | import { Alert, Badge, Button, Card, Collapse, Dropdown, Menu, Switch, Tooltip } from "@arco-design/web-react"; |
3 | 4 | import { |
4 | 5 | IconBook, |
@@ -270,7 +271,7 @@ function App() { |
270 | 271 | const checkScriptEnableAndUpdate = async () => { |
271 | 272 | const [isEnableScript, checkUpdate] = await Promise.all([ |
272 | 273 | systemConfig.getEnableScript(), |
273 | | - systemConfig.getCheckUpdate(), |
| 274 | + systemConfig.getCheckUpdate({ sanitizeHTML }), |
274 | 275 | ]); |
275 | 276 | if (!hookMgr.isMounted) return; |
276 | 277 | setIsEnableScript(isEnableScript); |
@@ -374,13 +375,16 @@ function App() { |
374 | 375 | ]).then(([resp]: [{ data: { notice: string; version: string } } | null | undefined, any]) => { |
375 | 376 | let newCheckUpdateState = 0; |
376 | 377 | if (resp?.data) { |
| 378 | + let notice = ""; |
| 379 | + if (typeof resp.data.notice === "string") notice = sanitizeHTML(resp.data.notice); |
| 380 | + const version = resp.data.version; |
377 | 381 | setCheckUpdate((items) => { |
378 | | - if (resp.data.version === items.version) { |
| 382 | + if (version === items.version) { |
379 | 383 | newCheckUpdateState = 2; |
380 | 384 | return items; |
381 | 385 | } |
382 | | - const isRead = items.notice !== resp.data.notice ? false : items.isRead; |
383 | | - const newCheckUpdate = { ...resp.data, isRead }; |
| 386 | + const isRead = items.notice !== notice ? false : items.isRead; |
| 387 | + const newCheckUpdate = { version, notice, isRead }; |
384 | 388 | systemConfig.setCheckUpdate(newCheckUpdate); |
385 | 389 | return newCheckUpdate; |
386 | 390 | }); |
@@ -482,7 +486,11 @@ function App() { |
482 | 486 | <Alert |
483 | 487 | style={{ display: showAlert ? "flex" : "none" }} |
484 | 488 | type="info" |
485 | | - content={<div dangerouslySetInnerHTML={{ __html: checkUpdate.notice || "" }} />} |
| 489 | + content={ |
| 490 | + <div |
| 491 | + dangerouslySetInnerHTML={{ __html: checkUpdate.notice /* notice is already sanitized by dompurify */ }} |
| 492 | + /> |
| 493 | + } |
486 | 494 | /> |
487 | 495 | <Collapse |
488 | 496 | bordered={false} |
|
0 commit comments