mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 21:15:32 +09:00
fix(desktop): fetch theme CSS via the local resource proxy (#3326)
This commit is contained in:
1 parent
d0b4816a5f
commit
fff67ed9af
3 files changed
+7
-7
No files matched your search
@@ -8,7 +8,7 @@ import {useArboriumHighlightedHtml} from '@app/features/code_highlighting/utils/
|
||||
import {COPY_CODE_DESCRIPTOR, SOMETHING_WENT_WRONG_DESCRIPTOR} from '@app/features/i18n/utils/CommonMessageDescriptors';
|
||||
import {Logger} from '@app/features/platform/utils/AppLogger';
|
||||
import styles from '@app/features/theme/components/modals/ThemeAcceptModal.module.css';
|
||||
import {buildThemeCssProxyUrl} from '@app/features/theme/utils/ThemeUtils';
|
||||
import {buildThemeCssFetchUrl} from '@app/features/theme/utils/ThemeUtils';
|
||||
import {Button} from '@app/features/ui/button/Button';
|
||||
import * as ModalCommands from '@app/features/ui/commands/ModalCommands';
|
||||
import * as ToastCommands from '@app/features/ui/commands/ToastCommands';
|
||||
@@ -56,7 +56,7 @@ export const ThemeAcceptModal = observer(function ThemeAcceptModal({themeId, run
|
||||
setFetchStatus('loading');
|
||||
setFetchError(null);
|
||||
try {
|
||||
const themeUrl = buildThemeCssProxyUrl(runtimeSnapshot, themeId);
|
||||
const themeUrl = buildThemeCssFetchUrl(runtimeSnapshot, themeId);
|
||||
if (!themeUrl) {
|
||||
throw new Error('Media endpoint not configured');
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import type {RuntimeConfigSnapshot} from '@app/features/app/state/InstanceSnapshotStore';
|
||||
import {Logger} from '@app/features/platform/utils/AppLogger';
|
||||
import {buildThemeCssProxyUrl} from '@app/features/theme/utils/ThemeUtils';
|
||||
import {buildThemeCssFetchUrl} from '@app/features/theme/utils/ThemeUtils';
|
||||
import {useEffect, useState} from 'react';
|
||||
|
||||
const logger = new Logger('useThemeExists');
|
||||
@@ -15,7 +15,7 @@ export const useThemeExists = (themeId: string, runtimeSnapshot: RuntimeConfigSn
|
||||
let cancelled = false;
|
||||
const checkThemeExists = async () => {
|
||||
try {
|
||||
const themeUrl = buildThemeCssProxyUrl(runtimeSnapshot, themeId);
|
||||
const themeUrl = buildThemeCssFetchUrl(runtimeSnapshot, themeId);
|
||||
if (themeUrl == null) throw new Error('Media endpoint not configured');
|
||||
const response = await fetch(themeUrl, {method: 'HEAD'});
|
||||
if (!response.ok) throw new Error('Theme not found');
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
import {type RuntimeConfigSnapshot, runtimeInstanceKey} from '@app/features/app/state/InstanceSnapshotStore';
|
||||
import RuntimeConfig from '@app/features/app/state/RuntimeConfig';
|
||||
import * as CodeLinkUtils from '@app/features/messaging/utils/CodeLinkUtils';
|
||||
import {buildMediaProxyURLForInstance} from '@app/features/messaging/utils/MediaProxyUtils';
|
||||
import {wrapDesktopLocalResourceURLForInstance} from '@app/features/messaging/utils/DesktopResourceUrl';
|
||||
|
||||
const OFFICIAL_THEME_URL_BASES = Object.freeze([
|
||||
'https://fluxer.app/theme',
|
||||
@@ -47,12 +47,12 @@ function buildThemeCssUrl(endpoint: string | null | undefined, themeId: string):
|
||||
return `${base}/themes/${themeId}.css`;
|
||||
}
|
||||
|
||||
export function buildThemeCssProxyUrl(snapshot: RuntimeConfigSnapshot, themeId: string): string | null {
|
||||
export function buildThemeCssFetchUrl(snapshot: RuntimeConfigSnapshot, themeId: string): string | null {
|
||||
const rawUrl = buildThemeCssUrl(snapshot.mediaEndpoint, themeId);
|
||||
if (!rawUrl) return null;
|
||||
const instanceKey = runtimeInstanceKey(snapshot);
|
||||
if (instanceKey == null) {
|
||||
throw new Error(`Theme runtime has no usable instance key (apiEndpoint: "${snapshot.apiEndpoint}")`);
|
||||
}
|
||||
return buildMediaProxyURLForInstance(rawUrl, instanceKey);
|
||||
return wrapDesktopLocalResourceURLForInstance(rawUrl, instanceKey);
|
||||
}
|
||||
Reference in new issue
Block a user