diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index 7223bfe..df80065 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -42,7 +42,8 @@
"WebFetch(domain:medium.com)",
"Bash(keytool:*)",
"Bash(echo:*)",
- "Bash(python -c \"import base64; print\\(base64.b64encode\\(open\\(r''C:\\\\Users\\\\bryan\\\\Desktop\\\\Discord Clone\\\\discord-clone-release.keystore'',''rb''\\).read\\(\\)\\).decode\\(\\)\\)\")"
+ "Bash(python -c \"import base64; print\\(base64.b64encode\\(open\\(r''C:\\\\Users\\\\bryan\\\\Desktop\\\\Discord Clone\\\\discord-clone-release.keystore'',''rb''\\).read\\(\\)\\).decode\\(\\)\\)\")",
+ "WebFetch(domain:gitea.moyettes.com)"
]
}
}
diff --git a/packages/platform-web/src/index.js b/packages/platform-web/src/index.js
index d746465..b766ed0 100644
--- a/packages/platform-web/src/index.js
+++ b/packages/platform-web/src/index.js
@@ -47,21 +47,32 @@ const webPlatform = {
// Detect Android/Capacitor and enable native APK updates
if (window.Capacitor?.isNativePlatform?.()) {
const YAML_URL = 'https://gitea.moyettes.com/Moyettes/DiscordClone/releases/download/latest/latest-android.yml';
- const APK_URL = 'https://gitea.moyettes.com/Moyettes/DiscordClone/releases/download/latest/app-release.apk';
const AppUpdater = window.Capacitor.Plugins.AppUpdater;
+ let apkUrl;
webPlatform.updates = {
async checkUpdate() {
try {
const response = await fetch(YAML_URL);
- if (!response.ok) return { updateAvailable: false };
+ if (!response.ok) {
+ console.log('[UpdateCheck] Fetch failed:', response.status);
+ return { updateAvailable: false };
+ }
const yaml = await response.text();
const versionMatch = yaml.match(/^version:\s*(.+)$/m);
- if (!versionMatch) return { updateAvailable: false };
+ if (!versionMatch) {
+ console.log('[UpdateCheck] No version found in YAML');
+ return { updateAvailable: false };
+ }
const latestVersion = versionMatch[1].trim();
+ const pathMatch = yaml.match(/^path:\s*(.+)$/m);
+ const apkFilename = pathMatch ? pathMatch[1].trim() : `DiscordClone-v${latestVersion}.apk`;
+ apkUrl = `https://gitea.moyettes.com/Moyettes/DiscordClone/releases/download/latest/${apkFilename}`;
+
const { version: currentVersion } = await AppUpdater.getVersion();
+ console.log('[UpdateCheck] Latest:', latestVersion, '| Current:', currentVersion);
const latest = latestVersion.split('.').map(Number);
const current = currentVersion.split('.').map(Number);
@@ -78,13 +89,15 @@ if (window.Capacitor?.isNativePlatform?.()) {
if (l < c) break;
}
- return { updateAvailable, updateType, latestVersion, currentVersion, apkUrl: APK_URL };
- } catch {
+ console.log('[UpdateCheck] Result:', updateAvailable ? updateType + ' update available' : 'up to date');
+ return { updateAvailable, updateType, latestVersion, currentVersion, apkUrl };
+ } catch (e) {
+ console.log('[UpdateCheck] Error:', e.message);
return { updateAvailable: false };
}
},
async installUpdate() {
- await AppUpdater.downloadAndInstall({ url: APK_URL });
+ await AppUpdater.downloadAndInstall({ url: apkUrl });
},
onDownloadProgress(callback) {
AppUpdater.addListener('downloadProgress', callback);
diff --git a/packages/shared/src/components/UpdateBanner.jsx b/packages/shared/src/components/UpdateBanner.jsx
index f9ae1ac..9aaa915 100644
--- a/packages/shared/src/components/UpdateBanner.jsx
+++ b/packages/shared/src/components/UpdateBanner.jsx
@@ -27,14 +27,14 @@ export function UpdateProvider({ children }) {
return (
- A new version (v{latestVersion}) is available. This update is required to continue using the app. + {isPatch + ? `A new version (v${latestVersion}) is available.` + : `A new version (v${latestVersion}) is available. This update is required to continue using the app.` + }
{downloading ? (