added env vars types and start scripts

This commit is contained in:
Andy Malkin 2024-02-05 22:48:29 -08:00
parent 43ff5d416a
commit b88f5bf2e4
9 changed files with 47 additions and 18 deletions

2
.env
View File

@ -1,2 +0,0 @@
# .env.development
API_URI=https://api-dev.railbird.ai/graphql

View File

@ -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

View File

@ -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
View File

@ -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
View 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;

View File

@ -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;
}
}

View File

@ -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({});

View File

@ -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",

View File

@ -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"