fix: GIF CSP + edit history HTML rendering + unhandled rejection cleanup

- nginx (LXC 106, live): added https://*.giphy.com to connect-src CSP —
  browser was blocking fetch() to media2.giphy.com CDN with CSP violation
- EditHistoryModal: render formatted_body as sanitized HTML (via
  html-react-parser + sanitizeCustomHtml) with linkification for plain
  text, matching how messages render in the timeline
- useAsyncCallback + ThumbnailContent + ImageContent + VideoContent +
  ClientConfigLoader: use .catch(() => undefined) instead of void to
  silence unhandled promise rejections from fire-and-forget useEffect
  calls — errors already captured in AsyncState.Error for UI display

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-02 10:34:46 -04:00
parent 7bafefa5e7
commit 7b01cfebf5
6 changed files with 25 additions and 18 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ export function ClientConfigLoader({ fallback, error, children }: ClientConfigLo
const ignoreCallback = useCallback(() => setIgnoreError(true), []);
useEffect(() => {
void load().catch(() => undefined);
load().catch(() => undefined);
}, [load]);
if (state.status === AsyncStatus.Idle || state.status === AsyncStatus.Loading) {