fix(electron): restore packaged desktop app loading (#1095)

* fix(electron): restore packaged desktop app loading

Rebuild and verify Electron native modules before packaging and use the Vite base URL for packaged asset preloads.

* test(preload-utils): cover non-root base urls
This commit is contained in:
Tommaso Casaburi
2026-03-17 17:04:47 +08:00
committed by GitHub
parent f812fe1d18
commit c9bd6258b2
6 changed files with 93 additions and 12 deletions
+11 -2
View File
@@ -1,7 +1,7 @@
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { copyToClipboard } from '../clipboard-utils';
import { hashStringToColor, getTextColorForBackground, removeMarkdown } from '../post-utils';
import { preloadReplyModal, preloadThemeAssets } from '../preload-utils';
import { preloadReplyModal, preloadThemeAssets, resolveAssetUrl } from '../preload-utils';
import { computeOmittedCount, filterRepliesForDisplay, getPreviewDisplayReplies, getTotalReplyCount } from '../replies-preview-utils';
import { getQuotedCidsFromContent, mergeQuotedCids } from '../reply-quote-utils';
import { formatUserIDForDisplay, truncateWithEllipsisInMiddle } from '../string-utils';
@@ -116,7 +116,16 @@ describe('misc utils', () => {
preloadThemeAssets();
expect(loadedSources).toEqual(['/buttons/default.png', '/buttons/hover.png', '/backgrounds/wallpaper.png']);
expect(loadedSources).toEqual([
`${import.meta.env.BASE_URL}buttons/default.png`,
`${import.meta.env.BASE_URL}buttons/hover.png`,
`${import.meta.env.BASE_URL}backgrounds/wallpaper.png`,
]);
});
it('resolves theme asset URLs against a non-root base URL', () => {
expect(resolveAssetUrl('buttons/default.png', 'file:///app/')).toBe('file:///app/buttons/default.png');
expect(resolveAssetUrl('backgrounds/wallpaper.png', 'file:///app/')).toBe('file:///app/backgrounds/wallpaper.png');
});
it('schedules reply modal preload with requestIdleCallback when available', () => {
+3 -1
View File
@@ -1,5 +1,7 @@
import { THEME_BUTTON_IMAGES, THEME_BACKGROUND_IMAGES } from '../../generated/asset-manifest';
export const resolveAssetUrl = (path: string, baseUrl = import.meta.env.BASE_URL): string => `${baseUrl}${path}`;
/**
* Preloads an array of image URLs by creating Image objects.
* Images are loaded in the background and cached by the browser.
@@ -7,7 +9,7 @@ import { THEME_BUTTON_IMAGES, THEME_BACKGROUND_IMAGES } from '../../generated/as
const preloadImages = (imagePaths: readonly string[]): void => {
imagePaths.forEach((path) => {
const img = new Image();
img.src = `/${path}`;
img.src = resolveAssetUrl(path);
});
};