Browse Source

chore(web): use custom axios instance

pull/1/head
isra el 3 years ago
parent
commit
879eb0eb4f
  1. 16
      web/lib/axiosInstance.ts
  2. 1
      web/pages/index.tsx
  3. 2
      web/pages/login.tsx
  4. 27
      web/services/index.ts
  5. 4
      web/services/types.ts

16
web/lib/axiosInstance.ts

@ -0,0 +1,16 @@
import axios from 'axios'
import { LOCAL_STORAGE_KEY } from '../shared/constants'
const axiosInstance = axios.create({
baseURL: process.env.NEXT_PUBLIC_API_BASE_URL,
})
axiosInstance.interceptors.request.use((config) => {
const token = localStorage.getItem(LOCAL_STORAGE_KEY.TOKEN)
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
})
export default axiosInstance

1
web/pages/index.tsx

@ -27,6 +27,7 @@ export default function HomePage() {
) )
}, },
onError: () => {}, onError: () => {},
disabled: !!user,
}) })
return ( return (

2
web/pages/login.tsx

@ -124,7 +124,7 @@ export default function LoginPage() {
status: 'error', status: 'error',
}) })
}} }}
useOneTap={true}
useOneTap={!authState.user}
width='100%' width='100%'
/> />
<Stack pt={6}> <Stack pt={6}>

27
web/services/index.ts

@ -1,5 +1,4 @@
import axios from 'axios'
import { LOCAL_STORAGE_KEY } from '../shared/constants'
import axiosInstance from '../lib/axiosInstance'
import { import {
GoogleLoginRequestPayload, GoogleLoginRequestPayload,
LoginRequestPayload, LoginRequestPayload,
@ -8,51 +7,45 @@ import {
RegisterResponse, RegisterResponse,
SendSMSRequestPayload, SendSMSRequestPayload,
} from './types' } from './types'
const BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL
if (typeof localStorage !== 'undefined')
axios.defaults.headers.common[
'Authorization'
] = `Bearer ${localStorage.getItem(LOCAL_STORAGE_KEY.TOKEN)}`
export const loginRequest = async ( export const loginRequest = async (
payload: LoginRequestPayload payload: LoginRequestPayload
): Promise<LoginResponse> => { ): Promise<LoginResponse> => {
const res = await axios.post(`${BASE_URL}/auth/login`, payload)
const res = await axiosInstance.post(`/auth/login`, payload)
return res.data.data return res.data.data
} }
export const loginWithGoogleRequest = async ( export const loginWithGoogleRequest = async (
payload: GoogleLoginRequestPayload payload: GoogleLoginRequestPayload
): Promise<LoginResponse> => { ): Promise<LoginResponse> => {
const res = await axios.post(`${BASE_URL}/auth/google-login`, payload)
const res = await axiosInstance.post(`/auth/google-login`, payload)
return res.data.data return res.data.data
} }
export const registerRequest = async ( export const registerRequest = async (
payload: RegisterRequestPayload payload: RegisterRequestPayload
): Promise<RegisterResponse> => { ): Promise<RegisterResponse> => {
const res = await axios.post(`${BASE_URL}/auth/register`, payload)
const res = await axiosInstance.post(`/auth/register`, payload)
return res.data.data return res.data.data
} }
export const generateApiKeyRequest = async () => { export const generateApiKeyRequest = async () => {
const res = await axios.post(`${BASE_URL}/auth/api-keys`, {})
const res = await axiosInstance.post(`/auth/api-keys`, {})
return res.data.data return res.data.data
} }
export const getApiKeyListRequest = async () => { export const getApiKeyListRequest = async () => {
const res = await axios.get(`${BASE_URL}/auth/api-keys`)
const res = await axiosInstance.get(`/auth/api-keys`)
return res.data.data return res.data.data
} }
export const deleteApiKeyRequest = async (id: string) => { export const deleteApiKeyRequest = async (id: string) => {
const res = await axios.delete(`${BASE_URL}/auth/api-keys/${id}`)
const res = await axiosInstance.delete(`/auth/api-keys/${id}`)
return res.data.data return res.data.data
} }
export const getDeviceListRequest = async () => { export const getDeviceListRequest = async () => {
const res = await axios.get(`${BASE_URL}/gateway/devices`)
const res = await axiosInstance.get(`/gateway/devices`)
return res.data.data return res.data.data
} }
@ -60,8 +53,8 @@ export const sendSMSRequest = async (
deviceId: string, deviceId: string,
payload: SendSMSRequestPayload payload: SendSMSRequestPayload
) => { ) => {
const res = await axios.post(
`${BASE_URL}/gateway/devices/${deviceId}/sendSMS`,
const res = await axiosInstance.post(
`/gateway/devices/${deviceId}/sendSMS`,
payload payload
) )
return res.data.data return res.data.data

4
web/services/types.ts

@ -25,8 +25,10 @@ export interface GoogleLoginRequestPayload {
idToken: string idToken: string
} }
export interface RegisterRequestPayload extends LoginRequestPayload {
export interface RegisterRequestPayload {
name: string name: string
email: string
password: string
} }
export interface BaseResponse { export interface BaseResponse {

Loading…
Cancel
Save