138 lines
3.8 KiB
JavaScript
138 lines
3.8 KiB
JavaScript
import { Platform } from "react-native";
|
|
import { secureStore } from "~/storage/memorySecureStore";
|
|
import { STORAGE_KEYS } from "~/storage/storageKeys";
|
|
|
|
// Logging configuration
|
|
const LOG_SCOPES = process.env.APP_LOG_SCOPES;
|
|
const LOG_MIN_LEVEL = process.env.APP_LOG_MIN_LEVEL;
|
|
|
|
const LOCAL_DEV = process.env.LOCAL_DEV !== "false" ? true : false;
|
|
|
|
const BEARER_COOKIE_NAME = "bearer";
|
|
const BEARER_USE_COOKIE = false;
|
|
|
|
// Helper function to get the correct development host based on platform
|
|
const getDevelopmentHost = () => {
|
|
if (Platform.OS === "ios") {
|
|
return "localhost";
|
|
}
|
|
// Android uses 10.0.2.2 to access host machine's localhost
|
|
return "10.0.2.2";
|
|
};
|
|
|
|
const DEV_HOST = getDevelopmentHost();
|
|
|
|
const OA_FILES_URL =
|
|
process.env.APP_OA_FILES_URL || `http://${DEV_HOST}:4292/api/v1/oas`;
|
|
|
|
const MINIO_URL = process.env.APP_MINIO_URL || `http://${DEV_HOST}:4290`;
|
|
|
|
const GRAPHQL_URL =
|
|
process.env.APP_GRAPHQL_URL || `http://${DEV_HOST}:4201/v1/graphql`;
|
|
|
|
const GRAPHQL_WS_URL =
|
|
process.env.APP_GRAPHQL_WS_URL || `ws://${DEV_HOST}:4201/v1/graphql`;
|
|
|
|
const GEOLOC_SYNC_URL =
|
|
process.env.APP_GEOLOC_SYNC_URL ||
|
|
`http://${DEV_HOST}:4200/api/v1/oas/geoloc/sync`;
|
|
|
|
const OSRM_CAR_URL = process.env.APP_OSRM_CAR_URL || `http://${DEV_HOST}:4261`;
|
|
const OSRM_FOOT_URL =
|
|
process.env.APP_OSRM_FOOT_URL || `http://${DEV_HOST}:4262`;
|
|
const OSRM_BICYCLE_URL =
|
|
process.env.APP_OSRM_BICYCLE_URL || `http://${DEV_HOST}:4263`;
|
|
|
|
const CLAIMS_NAMESPACE =
|
|
process.env.CLAIMS_NAMESPACE || "https://alertesecours.fr/claims";
|
|
|
|
const MAPVIEW_STYLE_URL =
|
|
process.env.APP_MAPVIEW_STYLE_URL || `http://${DEV_HOST}:4203/app/style.json`;
|
|
const MAPVIEW_DARK_STYLE_URL =
|
|
process.env.APP_MAPVIEW_DARK_STYLE_URL ||
|
|
`http://${DEV_HOST}:4203/app/dark-matter/style.json`;
|
|
|
|
const SENTRY_DSN = process.env.SENTRY_DSN;
|
|
|
|
const BUILD_TIME = process.env.BUILD_TIME;
|
|
|
|
const envMap = {
|
|
LOG_SCOPES,
|
|
LOG_MIN_LEVEL,
|
|
LOCAL_DEV,
|
|
BEARER_COOKIE_NAME,
|
|
BEARER_USE_COOKIE,
|
|
OA_FILES_URL,
|
|
MINIO_URL,
|
|
GRAPHQL_URL,
|
|
GRAPHQL_WS_URL,
|
|
GEOLOC_SYNC_URL,
|
|
OSRM_CAR_URL,
|
|
OSRM_FOOT_URL,
|
|
OSRM_BICYCLE_URL,
|
|
CLAIMS_NAMESPACE,
|
|
MAPVIEW_STYLE_URL,
|
|
MAPVIEW_DARK_STYLE_URL,
|
|
SENTRY_DSN,
|
|
BUILD_TIME,
|
|
IS_STAGING: false,
|
|
};
|
|
|
|
const stagingMap = {
|
|
MINIO_URL: process.env.STAGING_APP_MINIO_URL || MINIO_URL,
|
|
OA_FILES_URL: process.env.STAGING_APP_OA_FILES_URL || OA_FILES_URL,
|
|
GRAPHQL_URL: process.env.STAGING_APP_GRAPHQL_URL || GRAPHQL_URL,
|
|
GRAPHQL_WS_URL: process.env.STAGING_APP_GRAPHQL_WS_URL || GRAPHQL_WS_URL,
|
|
GEOLOC_SYNC_URL: process.env.STAGING_APP_GEOLOC_SYNC_URL || GEOLOC_SYNC_URL,
|
|
IS_STAGING: true,
|
|
};
|
|
|
|
export const setStaging = async (enabled) => {
|
|
for (const key of Object.keys(env)) {
|
|
if (stagingMap[key] !== undefined) {
|
|
env[key] = enabled ? stagingMap[key] : envMap[key];
|
|
}
|
|
}
|
|
|
|
// Persist the staging setting
|
|
await secureStore.setItemAsync(STORAGE_KEYS.ENV_IS_STAGING, String(enabled));
|
|
};
|
|
|
|
// Initialize with default values
|
|
const env = { ...envMap };
|
|
|
|
// Load the staging setting from secureStore
|
|
export const initializeEnv = async () => {
|
|
try {
|
|
const storedStaging = await secureStore.getItemAsync(
|
|
STORAGE_KEYS.ENV_IS_STAGING,
|
|
);
|
|
if (storedStaging !== null) {
|
|
const isStaging = storedStaging === "true";
|
|
if (isStaging) {
|
|
// Apply staging settings without persisting again
|
|
for (const key of Object.keys(env)) {
|
|
if (stagingMap[key] !== undefined) {
|
|
env[key] = stagingMap[key];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} catch (error) {
|
|
console.error("Failed to load staging setting from secureStore:", error);
|
|
}
|
|
};
|
|
|
|
// Initialize environment settings
|
|
// We use an IIFE to handle the async initialization
|
|
(async () => {
|
|
try {
|
|
await initializeEnv();
|
|
} catch (error) {
|
|
console.error("Failed to initialize environment settings:", error);
|
|
}
|
|
})();
|
|
|
|
export default env;
|
|
|
|
// +1
|