added env vars types and start scripts
This commit is contained in:
parent
43ff5d416a
commit
b88f5bf2e4
@ -1,3 +1,3 @@
|
|||||||
# .env.development
|
# .env.development
|
||||||
API_URI="http://192.168.1.28:8000/graphql"
|
EXPO_PUBLIC_API_URI="http://192.168.1.28:8000/graphql"
|
||||||
DEV_USER_ID=1
|
EXPO_PUBLIC_DEV_USER_ID=1
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
# .env.production
|
# .env.production
|
||||||
API_URI=https://api-dev.railbird.ai/graphql
|
EXPO_PUBLIC_API_URI=https://api-dev.railbird.ai/graphql
|
||||||
|
11
App.tsx
11
App.tsx
@ -1,15 +1,18 @@
|
|||||||
import { DEV_USER_ID } from "@env";
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { ClientProvider, useAuthHeader } from "./graphql/client";
|
import { ClientProvider, useAuthHeader } from "./graphql/client";
|
||||||
import AppNavigator from "./navigation/app-navigator";
|
import AppNavigator from "./navigation/app-navigator";
|
||||||
|
|
||||||
|
import { devUserId } from "./config";
|
||||||
|
|
||||||
const SetAuthHeaderBasedOnEnv = () => {
|
const SetAuthHeaderBasedOnEnv = () => {
|
||||||
const { setAuthHeader } = useAuthHeader();
|
const { setAuthHeader } = useAuthHeader();
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
if (DEV_USER_ID) {
|
if (devUserId) {
|
||||||
console.log("Setting fake authorization user to: ", DEV_USER_ID);
|
console.log("Setting fake authorization user to: ", devUserId);
|
||||||
setAuthHeader({ key: "user_id", value: DEV_USER_ID });
|
setAuthHeader({ key: "user_id", value: devUserId });
|
||||||
|
} else {
|
||||||
|
console.log("Production auth.");
|
||||||
}
|
}
|
||||||
}, [setAuthHeader]);
|
}, [setAuthHeader]);
|
||||||
|
|
||||||
|
21
config.ts
Normal file
21
config.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
const warnEnv = [
|
||||||
|
'EXPO_PUBLIC_API_URI'
|
||||||
|
];
|
||||||
|
|
||||||
|
const errMsg =
|
||||||
|
'does not exist in the environment.';
|
||||||
|
|
||||||
|
const missingEnv: string[] = [];
|
||||||
|
|
||||||
|
for (const key of warnEnv) {
|
||||||
|
if (!process.env[key]) {
|
||||||
|
missingEnv.push(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (missingEnv.length > 0) {
|
||||||
|
throw new Error(`${missingEnv.join(', ')} ${errMsg}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const apiUrl = process.env.EXPO_PUBLIC_API_URI;
|
||||||
|
export const devUserId = process.env.EXPO_PUBLIC_DEV_USER_ID ?? false;
|
11
env.d.tsx
11
env.d.tsx
@ -1,4 +1,7 @@
|
|||||||
declare module "@env" {
|
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
||||||
export const API_URI: string;
|
declare namespace NodeJS {
|
||||||
export const DEV_USER_ID: string;
|
interface ProcessEnv {
|
||||||
}
|
EXPO_PUBLIC_API_URI: string;
|
||||||
|
EXPO_PUBLIC_DEV_USER_ID?: string;
|
||||||
|
}
|
||||||
|
}
|
@ -6,7 +6,7 @@ import {
|
|||||||
InMemoryCache,
|
InMemoryCache,
|
||||||
from,
|
from,
|
||||||
} from "@apollo/client";
|
} from "@apollo/client";
|
||||||
import { API_URI } from "@env";
|
|
||||||
import React, {
|
import React, {
|
||||||
ReactNode,
|
ReactNode,
|
||||||
createContext,
|
createContext,
|
||||||
@ -15,6 +15,8 @@ import React, {
|
|||||||
useState,
|
useState,
|
||||||
} from "react";
|
} from "react";
|
||||||
|
|
||||||
|
import { apiUrl } from '../config'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
};
|
};
|
||||||
@ -40,9 +42,9 @@ export const useAuthHeader = () => {
|
|||||||
|
|
||||||
export const ClientProvider: React.FC<Props> = ({ children }) => {
|
export const ClientProvider: React.FC<Props> = ({ children }) => {
|
||||||
const [authHeader, setAuthHeader] = useState({ key: "", value: "" });
|
const [authHeader, setAuthHeader] = useState({ key: "", value: "" });
|
||||||
console.log(`The api uri is ${API_URI}`);
|
console.log(`The api uri is ${apiUrl}`);
|
||||||
const httpLink = new HttpLink({
|
const httpLink = new HttpLink({
|
||||||
uri: API_URI,
|
uri: apiUrl,
|
||||||
});
|
});
|
||||||
const cache = new InMemoryCache({});
|
const cache = new InMemoryCache({});
|
||||||
|
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
"start:android": "expo start --android",
|
"start:android": "expo start --android",
|
||||||
"start:ios": "expo start --ios",
|
"start:ios": "expo start --ios",
|
||||||
"android": "expo run:android",
|
"android": "expo run:android",
|
||||||
|
"android:dev": "NODE_ENV=development expo run:android",
|
||||||
|
"android:prod": "NODE_ENV=production expo run:android",
|
||||||
"ios": "expo run:ios",
|
"ios": "expo run:ios",
|
||||||
"web": "expo start --web",
|
"web": "expo start --web",
|
||||||
"lint": "eslint . --ext .js,.ts,.tsx",
|
"lint": "eslint . --ext .js,.ts,.tsx",
|
||||||
|
@ -9658,9 +9658,9 @@ queue@6.0.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
inherits "~2.0.3"
|
inherits "~2.0.3"
|
||||||
|
|
||||||
"railbird-gql@git+https://dev.railbird.ai/railbird/railbird-gql.git#db82f66c5d3600d90f09c813f71287e176dc078b":
|
"railbird-gql@git+https://dev.railbird.ai/railbird/railbird-gql.git#838304efdd49a093bd8f9cea6cd6ef9e306d888a":
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "git+https://dev.railbird.ai/railbird/railbird-gql.git#db82f66c5d3600d90f09c813f71287e176dc078b"
|
resolved "git+https://dev.railbird.ai/railbird/railbird-gql.git#838304efdd49a093bd8f9cea6cd6ef9e306d888a"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@apollo/client" "^3.9.2"
|
"@apollo/client" "^3.9.2"
|
||||||
"@graphql-codegen/cli" "^5.0.0"
|
"@graphql-codegen/cli" "^5.0.0"
|
||||||
|
Loading…
Reference in New Issue
Block a user