diff --git a/.gitignore b/.gitignore index 1af2f6e..e2622bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules .idea -.env \ No newline at end of file +.env +.env.development diff --git a/src/releases.ts b/src/releases.ts index 56fe482..a7a0a3e 100644 --- a/src/releases.ts +++ b/src/releases.ts @@ -185,6 +185,23 @@ export async function Retrieve(req: express.Request, res: express.Response) { select: { version: true, url: true, rolloutPercentage: true, hash: true }, }); + /* + Return the latest release if forceUpdate is true, bypassing rollout rules. + This occurs when a user manually checks for updates in the app UI. + Background update checks follow the normal rollout percentage rules, to ensure controlled, gradual deployment of updates. + */ + const forceUpdate = req.query.forceUpdate === "true"; + if (forceUpdate) { + return res.json({ + appVersion: latestAppRelease.version, + appUrl: latestAppRelease.url, + appHash: latestAppRelease.hash, + systemVersion: latestSystemRelease.version, + systemUrl: latestSystemRelease.url, + systemHash: latestSystemRelease.hash, + }); + } + const defaultAppRelease = await getDefaultRelease("app"); const defaultSystemRelease = await getDefaultRelease("system");