Skip to content

Commit 271d358

Browse files
committed
bug fixing on version check
1 parent 40e9572 commit 271d358

File tree

4 files changed

+81
-3
lines changed

4 files changed

+81
-3
lines changed

main.cjs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const defaultPort = 3024;
88
const viteDevPort = defaultPort; // Using same port for consistency
99
const { shell } = require('electron');
1010
const { exec } = require('child_process');
11+
const https = require('https');
1112
const config = 'easyedit.json';
1213
const configPath = path.join(app.getPath('userData'), config);
1314

@@ -373,6 +374,57 @@ ipcMain.handle('open-external', async (_event, url) => {
373374
}
374375
});
375376

377+
// Provide version info to renderer processes in packaged apps where fetch('/package.json') is unavailable
378+
ipcMain.handle('get-version-info', async () => {
379+
const result = { version: 'unknown', latest: 'unknown' };
380+
try {
381+
// Read package.json from app directory
382+
const pkgPath = path.join(__dirname, 'package.json');
383+
if (fs.existsSync(pkgPath)) {
384+
try {
385+
const pkgRaw = fs.readFileSync(pkgPath, 'utf8');
386+
const pkg = JSON.parse(pkgRaw);
387+
result.version = pkg.version || 'unknown';
388+
} catch (e) {
389+
// ignore
390+
}
391+
}
392+
393+
// Try local latest.json first
394+
const localLatest = path.join(__dirname, 'release', 'latest.json');
395+
if (fs.existsSync(localLatest)) {
396+
try {
397+
const latestRaw = fs.readFileSync(localLatest, 'utf8');
398+
const latest = JSON.parse(latestRaw);
399+
result.latest = latest.version || 'unknown';
400+
return result;
401+
} catch (e) {
402+
// ignore and try network
403+
}
404+
}
405+
406+
// Fetch remote latest.json from GitHub raw
407+
const ghUrl = 'https://raw.githubusercontent.com/gcclinux/EasyEdit/refs/heads/main/release/latest.json';
408+
result.latest = await new Promise((resolve) => {
409+
https.get(ghUrl, (res) => {
410+
let data = '';
411+
res.on('data', (chunk) => { data += chunk; });
412+
res.on('end', () => {
413+
try {
414+
const json = JSON.parse(data);
415+
resolve(json.version || 'unknown');
416+
} catch (e) {
417+
resolve('unknown');
418+
}
419+
});
420+
}).on('error', () => resolve('unknown'));
421+
});
422+
} catch (err) {
423+
console.error('get-version-info failed:', err);
424+
}
425+
return result;
426+
});
427+
376428
// function createMenuTemplate() {
377429
// const menuTemplate = [
378430
// {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "easyedit",
33
"description": "EasyEdit - A simple Markdown editor",
4-
"version": "1.4.0",
4+
"version": "1.4.1",
55
"type": "module",
66
"scripts": {
77
"server": "vite --host --port 3024",

preload.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ contextBridge.exposeInMainWorld('electronAPI', {
1212
}
1313
},
1414
openExternal: (url) => ipcRenderer.invoke('open-external', url),
15+
getVersionInfo: () => ipcRenderer.invoke('get-version-info'),
1516
getLineHeight: () => ipcRenderer.send('get-line-height'),
1617
setLineHeight: (callback) => {
1718
if (callback) {

src/components/AboutModal.tsx

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,34 @@ export function AboutModal({ open, onClose }: AboutModalProps) {
2727
// ignore
2828
}
2929

30-
// Try fetching package.json (works if app serves it) and also try to fetch
31-
// the latest available version info (local release/latest.json or remote fallback).
30+
// Try to use the electron preload API when available (packaged apps).
3231
(async () => {
32+
const electronAPI = (window as any).electronAPI;
33+
if (electronAPI && typeof electronAPI.getVersionInfo === 'function') {
34+
try {
35+
const info = await electronAPI.getVersionInfo();
36+
setVersion(info.version || 'unknown');
37+
setAvailableVersion(info.latest || 'unknown');
38+
return;
39+
} catch (e) {
40+
// fallback to fetch-based approach
41+
}
42+
}
43+
44+
// Try fetching package.json (works if app serves it) and also try to fetch
45+
// the latest available version info (local release/latest.json or remote fallback).
46+
47+
try {
48+
const resp = await fetch('/package.json');
49+
if (resp.ok) {
50+
const pkg = await resp.json();
51+
setVersion(pkg.version || 'unknown');
52+
} else {
53+
setVersion('unknown');
54+
}
55+
} catch (e) {
56+
setVersion('unknown');
57+
}
3358
// get running version
3459
try {
3560
const resp = await fetch('/package.json');

0 commit comments

Comments
 (0)