fix: tighten server update check handling (#694)
Refine server update-check flow in runtime endpoints Improve package-manager update detection consistency
This commit is contained in:
committed by
GitHub
parent
3123de5f43
commit
74ef18dd4f
@@ -7782,28 +7782,13 @@ async function main(options = {}) {
|
|||||||
if (value.includes('mobi') || value.includes('android') || value.includes('iphone')) return 'mobile';
|
if (value.includes('mobi') || value.includes('android') || value.includes('iphone')) return 'mobile';
|
||||||
return 'desktop';
|
return 'desktop';
|
||||||
};
|
};
|
||||||
const inferArch = (ua) => {
|
|
||||||
const value = (ua || '').toLowerCase();
|
|
||||||
if (!value) return 'unknown';
|
|
||||||
if (value.includes('aarch64') || value.includes('arm64') || value.includes(' arm;') || value.includes('armv')) return 'arm64';
|
|
||||||
if (value.includes('x86_64') || value.includes('x64') || value.includes('amd64') || value.includes('win64') || value.includes('x86-64')) return 'x64';
|
|
||||||
return 'unknown';
|
|
||||||
};
|
|
||||||
const inferPlatform = (ua) => {
|
|
||||||
const value = (ua || '').toLowerCase();
|
|
||||||
if (!value) return undefined;
|
|
||||||
if (value.includes('mac os') || value.includes('macintosh') || value.includes('darwin')) return 'macos';
|
|
||||||
if (value.includes('windows') || value.includes('win32') || value.includes('win64')) return 'windows';
|
|
||||||
if (value.includes('linux') || value.includes('x11')) return 'linux';
|
|
||||||
return 'web';
|
|
||||||
};
|
|
||||||
const userAgent = typeof req.headers['user-agent'] === 'string' ? req.headers['user-agent'] : '';
|
const userAgent = typeof req.headers['user-agent'] === 'string' ? req.headers['user-agent'] : '';
|
||||||
|
|
||||||
const updateInfo = await checkForUpdates({
|
const updateInfo = await checkForUpdates({
|
||||||
appType: parseString(req.query.appType),
|
appType: parseString(req.query.appType),
|
||||||
deviceClass: parseString(req.query.deviceClass) || inferDeviceClass(userAgent),
|
deviceClass: parseString(req.query.deviceClass) || inferDeviceClass(userAgent),
|
||||||
platform: parseString(req.query.platform) || inferPlatform(userAgent),
|
platform: parseString(req.query.platform),
|
||||||
arch: parseString(req.query.arch) || inferArch(userAgent),
|
arch: parseString(req.query.arch),
|
||||||
instanceMode: parseString(req.query.instanceMode),
|
instanceMode: parseString(req.query.instanceMode),
|
||||||
currentVersion: parseString(req.query.currentVersion),
|
currentVersion: parseString(req.query.currentVersion),
|
||||||
reportUsage: parseReportUsage(parseString(req.query.reportUsage)),
|
reportUsage: parseReportUsage(parseString(req.query.reportUsage)),
|
||||||
|
|||||||
@@ -86,11 +86,15 @@ function normalizeArch(value) {
|
|||||||
async function checkForUpdatesFromApi(currentVersion, options = {}) {
|
async function checkForUpdatesFromApi(currentVersion, options = {}) {
|
||||||
try {
|
try {
|
||||||
const appType = normalizeAppType(options.appType);
|
const appType = normalizeAppType(options.appType);
|
||||||
|
const hostPlatform = mapPlatform(process.platform);
|
||||||
|
const hostArch = mapArch(process.arch);
|
||||||
|
const platform = appType === 'vscode' ? normalizePlatform(options.platform) : hostPlatform;
|
||||||
|
const arch = appType === 'vscode' ? normalizeArch(options.arch) : hostArch;
|
||||||
const payload = {
|
const payload = {
|
||||||
appType,
|
appType,
|
||||||
deviceClass: normalizeDeviceClass(options.deviceClass),
|
deviceClass: normalizeDeviceClass(options.deviceClass),
|
||||||
platform: normalizePlatform(options.platform),
|
platform,
|
||||||
arch: normalizeArch(options.arch),
|
arch,
|
||||||
channel: 'stable',
|
channel: 'stable',
|
||||||
currentVersion,
|
currentVersion,
|
||||||
installId: getOrCreateInstallId(appType),
|
installId: getOrCreateInstallId(appType),
|
||||||
|
|||||||
Reference in New Issue
Block a user