diff --git a/packages/app/capacitor.config.json b/packages/app/capacitor.config.json index 9ab8f758..9d37bc2a 100755 --- a/packages/app/capacitor.config.json +++ b/packages/app/capacitor.config.json @@ -6,7 +6,7 @@ "webDir": "dist", "plugins": { "CapacitorUpdater": { - "updateUrl": "https://relic.ragestudio.net/comty/update_check" + "updateUrl": "https://api.comty.app/auto-update/mobile" } } } \ No newline at end of file diff --git a/packages/server/src/controllers/AutoUpdate/index.js b/packages/server/src/controllers/AutoUpdate/index.js new file mode 100644 index 00000000..bc062989 --- /dev/null +++ b/packages/server/src/controllers/AutoUpdate/index.js @@ -0,0 +1,46 @@ +import { Controller } from "linebridge/dist/server" + +import { Octokit } from "@octokit/rest" + +const octokit = new Octokit({}) + +const endpoints = { + post: { + "/mobile": { + fn: async (req, res) => { + if (!process.env.GITHUB_REPO) { + return res.status(400).json({ + error: "GITHUB_REPO env variable not set" + }) + } + + const lastRelease = await octokit.repos.getLatestRelease({ + owner: process.env.GITHUB_REPO.split("/")[0], + repo: process.env.GITHUB_REPO.split("/")[1] + }) + + const bundle = lastRelease.data.assets.find((asset) => asset.name === "mobile_dist.zip") + const version = lastRelease.data.tag_name + + if (!bundle) { + return res.status(400).json({ + error: "mobile asset not available", + version: version, + }) + } + + return res.json({ + url: bundle.browser_download_url, + version: version, + }) + } + } + } +} + +export default class AutoUpdate extends Controller { + static refName = "AutoUpdate" + static useRoute = "/auto-update" + + httpEndpoints = endpoints +} \ No newline at end of file diff --git a/packages/server/src/controllers/index.js b/packages/server/src/controllers/index.js index 61938fe9..13f8d95e 100755 --- a/packages/server/src/controllers/index.js +++ b/packages/server/src/controllers/index.js @@ -24,4 +24,6 @@ export { default as ModerationController } from "./ModerationController" export { default as AdminController } from "./AdminController" -export { default as SyncController } from "./SyncController" \ No newline at end of file +export { default as SyncController } from "./SyncController" + +export { default as AutoUpdateController } from "./AutoUpdate" \ No newline at end of file