project setup
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
|
||||
import Constants from "expo-constants";
|
||||
import { Platform } from "react-native";
|
||||
|
||||
import { getToken } from "@/auth/token";
|
||||
|
||||
export const getApiUrl = () => {
|
||||
const isDev = process.env.NODE_ENV === "development" || !process.env.NODE_ENV;
|
||||
const prodUrl = "https://your-production-api.com/api";
|
||||
if (!isDev) return prodUrl;
|
||||
|
||||
if (Platform.OS === "web") {
|
||||
return process.env.EXPO_PUBLIC_BACKEND_URL;
|
||||
}
|
||||
|
||||
try {
|
||||
const debuggerHost =
|
||||
Constants.expoConfig?.hostUri ||
|
||||
Constants.manifest2?.extra?.expoGo?.debuggerHost;
|
||||
|
||||
if (debuggerHost) {
|
||||
const hostIp = debuggerHost.split(":")[0];
|
||||
return `http://${hostIp}:5000/api`;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to get debuggerHost:", error);
|
||||
}
|
||||
|
||||
if (process.env.EXPO_PUBLIC_API_URL) {
|
||||
return process.env.EXPO_PUBLIC_API_URL;
|
||||
}
|
||||
|
||||
return "http://192.168.1.X:5000/api";
|
||||
};
|
||||
|
||||
export const baseApi = createApi({
|
||||
reducerPath: "api",
|
||||
baseQuery: fetchBaseQuery({
|
||||
baseUrl: getApiUrl(),
|
||||
prepareHeaders: (headers) => {
|
||||
headers.set("accept", "application/json");
|
||||
const token = getToken();
|
||||
if (token) {
|
||||
headers.set("authorization", `Bearer ${token}`);
|
||||
}
|
||||
return headers;
|
||||
},
|
||||
}),
|
||||
refetchOnFocus: true,
|
||||
refetchOnReconnect: true,
|
||||
tagTypes: ["Users", "Todos", "UserLogs"],
|
||||
endpoints: () => ({}),
|
||||
});
|
||||
Reference in New Issue
Block a user