diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index 049c3d3..03bbf84 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -40,7 +40,7 @@
}
}
},
- "productName": "Advanced PassGen",
+ "productName": "advanced-passgen",
"mainBinaryName": "advanced-passgen",
"version": "2.5.2",
"identifier": "com.codedead.advancedpassgen",
diff --git a/src/components/App/index.jsx b/src/components/App/index.jsx
index 1d09310..b9f5432 100644
--- a/src/components/App/index.jsx
+++ b/src/components/App/index.jsx
@@ -8,7 +8,7 @@ import { createTheme, ThemeProvider } from '@mui/material/styles';
import Toolbar from '@mui/material/Toolbar';
import Typography from '@mui/material/Typography';
import useMediaQuery from '@mui/material/useMediaQuery';
-import { platform } from '@tauri-apps/plugin-os';
+import { arch, platform } from '@tauri-apps/plugin-os';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import packageJson from '../../../package.json';
import { MainContext } from '../../contexts/MainContextProvider';
@@ -77,7 +77,8 @@ const App = () => {
try {
const res = platform();
- Updater(res.toLowerCase(), packageJson.version)
+ const architecture = arch();
+ Updater(res.toLowerCase(), architecture, packageJson.version)
.then((up) => {
d1(setUpdate(up));
})
diff --git a/src/routes/Settings/index.jsx b/src/routes/Settings/index.jsx
index f316867..96f96a2 100644
--- a/src/routes/Settings/index.jsx
+++ b/src/routes/Settings/index.jsx
@@ -36,7 +36,7 @@ import Radio from '@mui/material/Radio';
import RadioGroup from '@mui/material/RadioGroup';
import Select from '@mui/material/Select';
import Typography from '@mui/material/Typography';
-import { platform } from '@tauri-apps/plugin-os';
+import { arch, platform } from '@tauri-apps/plugin-os';
import packageJson from '../../../package.json';
import AlertDialog from '../../components/AlertDialog';
import GridList from '../../components/GridList';
@@ -125,7 +125,8 @@ const Settings = () => {
try {
const res = platform();
- Updater(res.toLowerCase(), packageJson.version)
+ const architecture = arch();
+ Updater(res.toLowerCase(), architecture, packageJson.version)
.then((up) => {
d1(setUpdate(up));
d1(setCheckedForUpdates(true));
@@ -252,7 +253,7 @@ const Settings = () => {
{language.theme}
-
+
{
+const normalizeVersion = (version) =>
+ typeof version === 'string' ? version.replace(/^[^\d]+/, '') : '';
+
+const normalizeArch = (architecture) => {
+ switch (architecture) {
+ case 'x86_64':
+ return 'x64';
+ default:
+ return architecture;
+ }
+};
+
+const Updater = (os, architecture, currentVersion) => {
/**
* Check whether version b is newer than version a
* @param a Version a
@@ -6,8 +18,8 @@ const Updater = (os, currentVersion) => {
* @returns {boolean} True if version b is newer than version a, otherwise false
*/
const isNewer = (a, b) => {
- const partsA = a.split('.');
- const partsB = b.split('.');
+ const partsA = normalizeVersion(a).split('.');
+ const partsB = normalizeVersion(b).split('.');
const numParts =
partsA.length > partsB.length ? partsA.length : partsB.length;
@@ -23,35 +35,50 @@ const Updater = (os, currentVersion) => {
/**
* Parse the information inside an external update
* @param update The update data
- * @returns {{infoUrl: null, updateUrl: boolean, downloadUrl: null, version: null}}
+ * @returns {{infoUrl: null, updateUrl: null, downloadUrl: null, version: null, updateAvailable: boolean}}
*/
const parseUpdate = (update) => {
- const platform = update.platforms[os];
const data = {
- updateUrl: false,
+ updateUrl: null,
downloadUrl: null,
infoUrl: null,
version: null,
+ updateAvailable: false,
};
- if (
- isNewer(
- currentVersion,
- `${platform.version.majorVersion}.${platform.version.minorVersion}.${platform.version.buildVersion}.${platform.version.revisionVersion}`,
- )
- ) {
+ if (!update || !Array.isArray(update.platforms)) {
+ return data;
+ }
+
+ const normalizedArchitecture = normalizeArch(architecture);
+ const matchingPlatforms = update.platforms.filter(
+ (platform) => platform.name === os,
+ );
+ const platform = matchingPlatforms.find(
+ (entry) => normalizeArch(entry.arch) === normalizedArchitecture,
+ );
+ const version = normalizeVersion(update.semver);
+
+ if (!platform || !version) {
+ return data;
+ }
+
+ if (isNewer(currentVersion, version)) {
data.updateAvailable = true;
}
- data.updateUrl = platform.updateUrl;
+ data.updateUrl = platform.downloadUrl;
+ data.downloadUrl = platform.downloadUrl;
data.infoUrl = platform.infoUrl;
- data.version = `${platform.version.majorVersion}.${platform.version.minorVersion}.${platform.version.buildVersion}.${platform.version.revisionVersion}`;
+ data.version = version;
return data;
};
return new Promise((resolve, reject) => {
- fetch('https://codedead.com/Software/Advanced%20PassGen/version.json')
+ fetch(
+ 'https://api.codedead.com/api/v1/version/38b1f6e7-3274-4405-9eb1-42d47ae8a53e',
+ )
.then((res) => {
if (!res.ok) {
throw Error(res.statusText);
diff --git a/yarn.lock b/yarn.lock
index fde00a7..c21ae6d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3249,11 +3249,11 @@ __metadata:
linkType: hard
"baseline-browser-mapping@npm:^2.10.12":
- version: 2.10.21
- resolution: "baseline-browser-mapping@npm:2.10.21"
+ version: 2.10.23
+ resolution: "baseline-browser-mapping@npm:2.10.23"
bin:
baseline-browser-mapping: dist/cli.cjs
- checksum: 10c0/065d90f98099dd0d7b6e1c284f7133d0eaebf571a7ee3e9e0740862dbd64cf040f4447404269bc8b1fd4015dead68c3a026e541a214050375df6bde20706ec8b
+ checksum: 10c0/b2c167b9b46dc1c0c6a2c2ccc24469910f22ca953fa591dcff7a222a69aa864b8172f3fdff851da00de307732752b87b1e23a0b4b416f024e5608facdbc461c4
languageName: node
linkType: hard
@@ -3347,9 +3347,9 @@ __metadata:
linkType: hard
"caniuse-lite@npm:^1.0.30001782":
- version: 1.0.30001790
- resolution: "caniuse-lite@npm:1.0.30001790"
- checksum: 10c0/eec0adc1dcb35d51e57bcfa0657493cb57ef43f0ceb03c1edcfee34d43e7a938e6beed2781118c7a5ee99d4f71d443977f08ca5a549005cf89260733af9ad3f8
+ version: 1.0.30001791
+ resolution: "caniuse-lite@npm:1.0.30001791"
+ checksum: 10c0/53c8b5dad1c196a5e495405a7d2dc1db58aed9be02f60cf2a2e29d2c8d8cbb6c39beabf958d6aa191ab967ddcf49f22319452256b980bad1e271615acfe58940
languageName: node
linkType: hard
@@ -5593,13 +5593,13 @@ __metadata:
linkType: hard
"postcss@npm:^8.5.10":
- version: 8.5.10
- resolution: "postcss@npm:8.5.10"
+ version: 8.5.12
+ resolution: "postcss@npm:8.5.12"
dependencies:
nanoid: "npm:^3.3.11"
picocolors: "npm:^1.1.1"
source-map-js: "npm:^1.2.1"
- checksum: 10c0/c592dffa0c4873b401f01955b265538d9942f425040df5e2b8f0ad34c83773a792ea0fa5859ccc99cfb5b955b4ebff118ab7056315388dc83b107b0fa8313576
+ checksum: 10c0/5baebaf574c567bc1b3d61197f38af4ce5920b8f611c887fb6bc3dcc14af00253c169dbf19897bc889cce0b0d9818ab5eb4ea0caedf02b0bab10da8a43ce8c12
languageName: node
linkType: hard