Update API Connection for Local Development

This commit is contained in:
Tola Leng
2025-05-20 14:51:12 +08:00
parent ba318f13a5
commit 48abc618f3
+18 -12
View File
@@ -1,16 +1,17 @@
import PocketBase from 'pocketbase'; import PocketBase from 'pocketbase';
// Auto-detect base URL from browser location // Dynamically detect API base URL from current host (for use in browser)
const dynamicBaseUrl = const dynamicBaseUrl =
typeof window !== 'undefined' typeof window !== 'undefined'
? window.location.origin ? `${window.location.protocol}//${window.location.hostname}:8090`
: 'http://localhost:8090'; : 'http://localhost:8090';
// Define API endpoints // Define available API endpoints
export const API_ENDPOINTS = { export const API_ENDPOINTS = {
REMOTE: dynamicBaseUrl REMOTE: dynamicBaseUrl
}; };
// Get the current endpoint from localStorage or use remote as default
export const getCurrentEndpoint = (): string => { export const getCurrentEndpoint = (): string => {
if (typeof window !== 'undefined') { if (typeof window !== 'undefined') {
const savedEndpoint = localStorage.getItem('pocketbase_endpoint'); const savedEndpoint = localStorage.getItem('pocketbase_endpoint');
@@ -19,19 +20,26 @@ export const getCurrentEndpoint = (): string => {
return API_ENDPOINTS.REMOTE; return API_ENDPOINTS.REMOTE;
}; };
// Set the API endpoint and reinitialize PocketBase
export const setApiEndpoint = (endpoint: string): void => { export const setApiEndpoint = (endpoint: string): void => {
if (typeof window !== 'undefined') { if (typeof window !== 'undefined') {
localStorage.setItem('pocketbase_endpoint', endpoint); localStorage.setItem('pocketbase_endpoint', endpoint);
window.location.reload(); window.location.reload(); // Reload to reinitialize PocketBase with new endpoint
} }
}; };
// Initialize the PocketBase client with the current API URL
export const pb = new PocketBase(getCurrentEndpoint()); export const pb = new PocketBase(getCurrentEndpoint());
export const isAuthenticated = () => pb.authStore.isValid; // Helper to check if user is authenticated
export const isAuthenticated = () => {
return pb.authStore.isValid;
};
// Export the auth store for use in components
export const authStore = pb.authStore; export const authStore = pb.authStore;
// Configure PocketBase to persist authentication between page reloads
if (typeof window !== 'undefined') { if (typeof window !== 'undefined') {
const storedAuthData = localStorage.getItem('pocketbase_auth'); const storedAuthData = localStorage.getItem('pocketbase_auth');
if (storedAuthData) { if (storedAuthData) {
@@ -44,15 +52,13 @@ if (typeof window !== 'undefined') {
} }
} }
// Subscribe to authStore changes to persist authentication
pb.authStore.onChange(() => { pb.authStore.onChange(() => {
if (pb.authStore.isValid) { if (pb.authStore.isValid) {
localStorage.setItem( localStorage.setItem('pocketbase_auth', JSON.stringify({
'pocketbase_auth', token: pb.authStore.token,
JSON.stringify({ model: pb.authStore.model
token: pb.authStore.token, }));
model: pb.authStore.model
})
);
} else { } else {
localStorage.removeItem('pocketbase_auth'); localStorage.removeItem('pocketbase_auth');
} }