feat: getLatestReleaseFromFileServer also returns the current release channel

this allows us to access it on the node side in the auto update
pull/3281/head
yougotwill 2 months ago
parent 0e2706a5c0
commit 65f7a93bef

@ -83,25 +83,27 @@ export const DebugActions = () => {
return;
}
setLoadingLatestRelease(true);
const versionNumber = await getLatestReleaseFromFileServer(
userEd25519SecretKey,
'latest'
);
setLoadingLatestRelease(false);
if (versionNumber) {
ToastUtils.pushToastInfo(
'debugCurrentRelease1',
`Current: v${window.versionInfo.version}`
);
ToastUtils.pushToastInfo('debugLatestRelease', `Available: v${versionNumber}`);
window.log.debug(
`WIP: [debugMenu] [updater] isVersionGreaterThan(latestVersion, currentVersion)`,
isVersionGreaterThan(`v${versionNumber}`, `v${window.versionInfo.version}`)
);
} else {
const result = await getLatestReleaseFromFileServer(userEd25519SecretKey, 'latest');
if (!result) {
ToastUtils.pushToastError('debugLatestRelease', 'Failed to fetch latest release');
return;
}
const [versionNumber, releaseChannel] = result;
if (!versionNumber) {
ToastUtils.pushToastError('debugLatestRelease', 'Failed to fetch latest release');
return;
}
setLoadingLatestRelease(false);
ToastUtils.pushToastInfo(
'debugCurrentRelease',
`Current: v${window.versionInfo.version}`
);
ToastUtils.pushToastInfo(`debugLatestRelease`, `Available: v${versionNumber}`);
window.log.debug(
`WIP: [debugMenu] [updater] ${releaseChannel} channel isVersionGreaterThan(latestVersion, currentVersion)`,
isVersionGreaterThan(`v${versionNumber}`, `v${window.versionInfo.version}`)
);
}}
>
<SessionSpinner loading={loadingLatestRelease} color={'var(--text-primary-color)'} />
@ -116,25 +118,27 @@ export const DebugActions = () => {
return;
}
setLoadingAlphaRelease(true);
const versionNumber = await getLatestReleaseFromFileServer(
userEd25519SecretKey,
'alpha'
);
const result = await getLatestReleaseFromFileServer(userEd25519SecretKey, 'alpha');
if (!result) {
ToastUtils.pushToastError('debugAlphaRelease', 'Failed to fetch alpha release');
return;
}
const [versionNumber, releaseChannel] = result;
if (!versionNumber) {
ToastUtils.pushToastError('debugAlphaRelease', 'Failed to fetch alpha release');
return;
}
setLoadingAlphaRelease(false);
if (versionNumber) {
ToastUtils.pushToastInfo(
'debugCurrentRelease2',
`Current: v${window.versionInfo.version}`
);
ToastUtils.pushToastInfo('debugAlphaRelease', `Available: v${versionNumber}`);
window.log.debug(
`WIP: [debugMenu] [updater] isVersionGreaterThan(latestVersion, currentVersion)`,
isVersionGreaterThan(`v${versionNumber}`, `v${window.versionInfo.version}`)
);
} else {
ToastUtils.pushToastError('debugAlphaRelease', 'Failed to fetch latest release');
}
ToastUtils.pushToastInfo(
`debugCurrentRelease1`,
`Current: v${window.versionInfo.version}`
);
ToastUtils.pushToastInfo('debugAlphaRelease', `Available: v${versionNumber}`);
window.log.debug(
`WIP: [debugMenu] [updater] ${releaseChannel} channel isVersionGreaterThan(latestVersion, currentVersion)`,
isVersionGreaterThan(`v${versionNumber}`, `v${window.versionInfo.version}`)
);
}}
>
<SessionSpinner loading={loadingAlphaRelease} color={'var(--text-primary-color)'} />

@ -1,9 +1,13 @@
import type { ReleaseChannels } from '../updater/types';
let latestRelease: string | undefined;
let releaseChannel: ReleaseChannels | undefined;
export function setLatestRelease(release: string) {
latestRelease = release;
export function setLatestRelease(release: [string, ReleaseChannels]) {
latestRelease = release[0];
releaseChannel = release[1];
}
export function getLatestRelease() {
return latestRelease;
return [latestRelease, releaseChannel];
}

@ -135,7 +135,7 @@ const parseStatusCodeFromOnionRequestV4 = (
export const getLatestReleaseFromFileServer = async (
userEd25519SecretKey: Uint8Array,
releaseType?: ReleaseChannels
): Promise<string | null> => {
): Promise<[string, ReleaseChannels] | null> => {
const sigTimestampSeconds = NetworkTime.getNowWithNetworkOffsetSeconds();
const blindedPkHex = await BlindingActions.blindVersionPubkey({
ed25519SecretKey: userEd25519SecretKey,
@ -177,5 +177,5 @@ export const getLatestReleaseFromFileServer = async (
if (!latestVersionWithV) {
return null;
}
return latestVersionWithV;
return [latestVersionWithV, releaseType || releaseChannel];
};

@ -30,9 +30,17 @@ async function fetchReleaseFromFSAndUpdateMain(userEd25519SecretKey: Uint8Array)
}
const justFetched = await getLatestReleaseFromFileServer(userEd25519SecretKey);
window.log.info('[updater] fetched latest release from fileserver: ', justFetched);
if (!justFetched) {
window.log.info('[updater] no new release found on fileserver');
return;
}
const [releaseVersion, releaseChannel] = justFetched;
window.log.info(
`[updater] fetched ${releaseChannel} release from fileserver: ${releaseVersion}`
);
if (isString(justFetched) && !isEmpty(justFetched)) {
if (isString(releaseVersion) && !isEmpty(releaseVersion)) {
lastFetchedTimestamp = Date.now();
ipcRenderer.send('set-release-from-file-server', justFetched);
window.readyForUpdates();

@ -76,29 +76,30 @@ async function checkForUpdates(
i18n: SetupI18nReturnType,
logger: LoggerType
) {
logger.info('[updater] checkForUpdates');
if (stopped || isUpdating || downloadIgnored) {
logger.info('[updater] checkForUpdates stopped or isUpdating or downloadIgnored');
return;
}
const canUpdate = await canAutoUpdate();
logger.info('[updater] canUpdate', canUpdate);
logger.info('[updater] checkForUpdates canAutoUpdate', canUpdate);
if (!canUpdate) {
logger.info('[updater] checkForUpdates canAutoUpdate false');
return;
}
logger.info('[updater] checkForUpdates...');
logger.info('[updater] checkForUpdates isUpdating', isUpdating);
isUpdating = true;
try {
const latestVersionFromFsFromRenderer = getLatestRelease();
const [latestVersionFromFsFromRenderer, releaseChannelFromFsFromRenderer] = getLatestRelease();
logger.info('[updater] latestVersionFromFsFromRenderer', latestVersionFromFsFromRenderer);
logger.info(
`[updater] checkForUpdates latestVersionFromFsFromRenderer ${latestVersionFromFsFromRenderer} releaseChannelFromFsFromRenderer ${releaseChannelFromFsFromRenderer}`
);
if (!latestVersionFromFsFromRenderer || !latestVersionFromFsFromRenderer?.length) {
logger.info(
'[updater] testVersionFromFsFromRenderer was not updated yet by renderer. Skipping update check'
'[updater] checkForUpdates testVersionFromFsFromRenderer was not updated yet by renderer. Skipping update check'
);
return;
}
@ -180,10 +181,10 @@ async function checkForUpdates(
}
function isUpdateAvailable(updateInfo: UpdateInfo): boolean {
const latestVersion = parseVersion(updateInfo.version);
if (!latestVersion) {
const updateVersion = parseVersion(updateInfo.version);
if (!updateVersion) {
console.error(
'[updater] isUpdateAvailable could not parse latest version:',
'[updater] isUpdateAvailable could not parse update version:',
updateInfo.version
);
return false;
@ -192,11 +193,11 @@ function isUpdateAvailable(updateInfo: UpdateInfo): boolean {
// We need to convert this to string because typescript won't let us use types across submodules ....
const currentVersion = autoUpdater.currentVersion.toString();
const latestIsNewer = isVersionGreaterThan(latestVersion, currentVersion);
const updateIsNewer = isVersionGreaterThan(updateVersion, currentVersion);
console.log(
`[updater] isUpdateAvailable latestIsNewer: ${latestIsNewer} currentVersion: ${currentVersion} latestVersion: ${latestVersion}`
`[updater] isUpdateAvailable updateIsNewer: ${updateIsNewer} currentVersion: ${currentVersion} updateVersion: ${updateVersion}`
);
return latestIsNewer;
return updateIsNewer;
}
/*

Loading…
Cancel
Save