Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
}
}
},
"productName": "Advanced PassGen",
"productName": "advanced-passgen",
"mainBinaryName": "advanced-passgen",
"version": "2.5.2",
"identifier": "com.codedead.advancedpassgen",
Expand Down
5 changes: 3 additions & 2 deletions src/components/App/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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));
})
Expand Down
7 changes: 4 additions & 3 deletions src/routes/Settings/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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));
Expand Down Expand Up @@ -252,7 +253,7 @@ const Settings = () => {
<Typography>{language.theme}</Typography>
</AccordionSummary>
<AccordionDetails>
<GridList spacing={2} xs={6} md={4} lg={4}>
<GridList spacing={2} xs={12} md={6} lg={4}>
<Theme
title={language.default}
description={language.defaultThemeDescription}
Expand Down
57 changes: 42 additions & 15 deletions src/utils/Updater/index.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
const Updater = (os, currentVersion) => {
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
* @param b Version b
* @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;

Expand All @@ -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);
Expand Down
18 changes: 9 additions & 9 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down
Loading