diff --git a/apps/frontend/.env.production b/apps/frontend/.env.production
index 9bcbe0d..4d108f7 100644
--- a/apps/frontend/.env.production
+++ b/apps/frontend/.env.production
@@ -1,5 +1,5 @@
VITE_APP_ENV=production
-VITE_API_BASE_URL=http://120.26.116.145:4000/api
+VITE_API_BASE_URL=http://120.26.116.145:4010/api
# Optional native server url for live reload (used by capacitor.config.ts when building native shell)
CAP_SERVER_URL=
diff --git a/apps/frontend/android/app/src/main/java/com/bill/ai/MainActivity.java b/apps/frontend/android/app/src/main/java/com/bill/ai/MainActivity.java
index 9414331..cd73113 100644
--- a/apps/frontend/android/app/src/main/java/com/bill/ai/MainActivity.java
+++ b/apps/frontend/android/app/src/main/java/com/bill/ai/MainActivity.java
@@ -11,6 +11,6 @@ public class MainActivity extends BridgeActivity {
protected void onCreate(Bundle savedInstanceState) {
registerPlugin(NotificationPermissionPlugin.class);
registerPlugin(CapacitorSQLitePlugin.class);
- super.onCreate(savedInstanceState);
+ super.onCreate(savedInstanceState);
}
}
diff --git a/apps/frontend/android/app/src/main/res/xml/network_security_config.xml b/apps/frontend/android/app/src/main/res/xml/network_security_config.xml
index fbc0db5..2263b22 100644
--- a/apps/frontend/android/app/src/main/res/xml/network_security_config.xml
+++ b/apps/frontend/android/app/src/main/res/xml/network_security_config.xml
@@ -4,5 +4,7 @@
localhost
127.0.0.1
10.0.2.2
+
+ 120.26.116.145
diff --git a/apps/frontend/android/gradle.properties b/apps/frontend/android/gradle.properties
index a675bd6..8eb0bad 100644
--- a/apps/frontend/android/gradle.properties
+++ b/apps/frontend/android/gradle.properties
@@ -20,5 +20,5 @@ org.gradle.jvmargs=-Xmx1536m
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
-API_BASE_URL=http://10.0.2.2:4000/api
-NOTIFICATION_WEBHOOK_SECRET=38f71dbf99ab510d970165e43979f945f992848406117c8597a892837331a853
\ No newline at end of file
+API_BASE_URL=http://120.26.116.145:4010/api
+NOTIFICATION_WEBHOOK_SECRET=bf921ce9ac433ba2fdfccbccb50e7d805ac89f166962e4b8437a3ecd4ef833b2
\ No newline at end of file
diff --git a/apps/frontend/src/composables/useNotifications.ts b/apps/frontend/src/composables/useNotifications.ts
index b858a87..a0be482 100644
--- a/apps/frontend/src/composables/useNotifications.ts
+++ b/apps/frontend/src/composables/useNotifications.ts
@@ -11,6 +11,10 @@ export interface NotificationStatus {
ingestEndpoint: string;
}
+// Derive a sensible default ingest endpoint from current API base URL
+const apiBaseUrl = (apiClient.defaults.baseURL as string | undefined) ?? 'http://localhost:4000/api';
+const defaultIngestEndpoint = (apiBaseUrl.endsWith('/') ? apiBaseUrl.slice(0, -1) : apiBaseUrl) + '/transactions/notification';
+
const initialStatus: NotificationStatus = {
secretConfigured: false,
secretHint: null,
@@ -18,7 +22,7 @@ const initialStatus: NotificationStatus = {
packageWhitelist: [],
ingestedCount: 0,
lastNotificationAt: null,
- ingestEndpoint: 'http://localhost:4000/api/transactions/notification'
+ ingestEndpoint: defaultIngestEndpoint
};
export function useNotificationStatusQuery() {
diff --git a/apps/frontend/src/features/settings/pages/SettingsPage.vue b/apps/frontend/src/features/settings/pages/SettingsPage.vue
index 7270d1a..2e3a33c 100644
--- a/apps/frontend/src/features/settings/pages/SettingsPage.vue
+++ b/apps/frontend/src/features/settings/pages/SettingsPage.vue
@@ -366,7 +366,7 @@ const removeChannel = async (channelId: string) => {
- {{ notificationStatus?.ingestEndpoint ?? 'http://localhost:4000/api/transactions/notification' }}
+ {{ notificationStatus?.ingestEndpoint }}