|
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, |
@@ -273,6 +274,9 @@ function App() { |
273 | 274 | systemConfig.getCheckUpdate(), |
274 | 275 | ]); |
275 | 276 | if (!hookMgr.isMounted) return; |
| 277 | + if (typeof checkUpdate.notice === "string") { |
| 278 | + checkUpdate.notice = sanitizeHTML(checkUpdate.notice); |
| 279 | + } |
276 | 280 | setIsEnableScript(isEnableScript); |
277 | 281 | setCheckUpdate(checkUpdate); |
278 | 282 | }; |
@@ -374,13 +378,16 @@ function App() { |
374 | 378 | ]).then(([resp]: [{ data: { notice: string; version: string } } | null | undefined, any]) => { |
375 | 379 | let newCheckUpdateState = 0; |
376 | 380 | if (resp?.data) { |
| 381 | + let notice = ""; |
| 382 | + if (typeof resp.data.notice === "string") notice = sanitizeHTML(resp.data.notice); |
| 383 | + const version = resp.data.version; |
377 | 384 | setCheckUpdate((items) => { |
378 | | - if (resp.data.version === items.version) { |
| 385 | + if (version === items.version) { |
379 | 386 | newCheckUpdateState = 2; |
380 | 387 | return items; |
381 | 388 | } |
382 | | - const isRead = items.notice !== resp.data.notice ? false : items.isRead; |
383 | | - const newCheckUpdate = { ...resp.data, isRead }; |
| 389 | + const isRead = items.notice !== notice ? false : items.isRead; |
| 390 | + const newCheckUpdate = { version, notice, isRead }; |
384 | 391 | systemConfig.setCheckUpdate(newCheckUpdate); |
385 | 392 | return newCheckUpdate; |
386 | 393 | }); |
@@ -482,7 +489,11 @@ function App() { |
482 | 489 | <Alert |
483 | 490 | style={{ display: showAlert ? "flex" : "none" }} |
484 | 491 | type="info" |
485 | | - content={<div dangerouslySetInnerHTML={{ __html: checkUpdate.notice || "" }} />} |
| 492 | + content={ |
| 493 | + <div |
| 494 | + dangerouslySetInnerHTML={{ __html: checkUpdate.notice /* notice is already sanitized by dompurify */ }} |
| 495 | + /> |
| 496 | + } |
486 | 497 | /> |
487 | 498 | <Collapse |
488 | 499 | bordered={false} |
|
0 commit comments