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

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

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

@ -30,9 +30,17 @@ async function fetchReleaseFromFSAndUpdateMain(userEd25519SecretKey: Uint8Array)
} }
const justFetched = await getLatestReleaseFromFileServer(userEd25519SecretKey); 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(); lastFetchedTimestamp = Date.now();
ipcRenderer.send('set-release-from-file-server', justFetched); ipcRenderer.send('set-release-from-file-server', justFetched);
window.readyForUpdates(); window.readyForUpdates();

@ -76,29 +76,30 @@ async function checkForUpdates(
i18n: SetupI18nReturnType, i18n: SetupI18nReturnType,
logger: LoggerType logger: LoggerType
) { ) {
logger.info('[updater] checkForUpdates');
if (stopped || isUpdating || downloadIgnored) { if (stopped || isUpdating || downloadIgnored) {
logger.info('[updater] checkForUpdates stopped or isUpdating or downloadIgnored');
return; return;
} }
const canUpdate = await canAutoUpdate(); const canUpdate = await canAutoUpdate();
logger.info('[updater] canUpdate', canUpdate); logger.info('[updater] checkForUpdates canAutoUpdate', canUpdate);
if (!canUpdate) { if (!canUpdate) {
logger.info('[updater] checkForUpdates canAutoUpdate false');
return; return;
} }
logger.info('[updater] checkForUpdates...'); logger.info('[updater] checkForUpdates isUpdating', isUpdating);
isUpdating = true; isUpdating = true;
try { 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) { if (!latestVersionFromFsFromRenderer || !latestVersionFromFsFromRenderer?.length) {
logger.info( 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; return;
} }
@ -180,10 +181,10 @@ async function checkForUpdates(
} }
function isUpdateAvailable(updateInfo: UpdateInfo): boolean { function isUpdateAvailable(updateInfo: UpdateInfo): boolean {
const latestVersion = parseVersion(updateInfo.version); const updateVersion = parseVersion(updateInfo.version);
if (!latestVersion) { if (!updateVersion) {
console.error( console.error(
'[updater] isUpdateAvailable could not parse latest version:', '[updater] isUpdateAvailable could not parse update version:',
updateInfo.version updateInfo.version
); );
return false; 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 .... // We need to convert this to string because typescript won't let us use types across submodules ....
const currentVersion = autoUpdater.currentVersion.toString(); const currentVersion = autoUpdater.currentVersion.toString();
const latestIsNewer = isVersionGreaterThan(latestVersion, currentVersion); const updateIsNewer = isVersionGreaterThan(updateVersion, currentVersion);
console.log( 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