StudE-Frontend/src/components/Api/Api.tsx

76 lines
1.8 KiB
TypeScript
Raw Normal View History

2023-07-03 21:22:31 +08:00
import axios from "axios";
import AsyncStorage from "@react-native-async-storage/async-storage";
import {
ActivationParams,
LoginParams,
RegistrationParams,
} from "../../interfaces/Interfaces";
let debug = true;
export let backendURL = "";
if (debug) {
backendURL = "http://10.0.10.8:8000";
} else {
backendURL = "https://keannu125.pythonanywhere.com";
}
const instance = axios.create({
baseURL: backendURL,
timeout: 1000,
});
// App APIs
// User APIs
export function UserRegister(register: RegistrationParams) {
console.log(JSON.stringify(register));
return instance
.post("/api/v1/accounts/users/", register)
.then(async (response) => {
return [response.status];
})
.catch((error) => {
return [error.response.status, error.response.data];
});
}
export function UserLogin(user: LoginParams) {
return instance
.post("/api/v1/accounts/token/login/", user)
.then(async (response) => {
AsyncStorage.setItem("token", JSON.stringify(response.data.auth_token));
2023-07-03 22:40:58 +08:00
return [true, JSON.stringify(response.data.auth_token)];
2023-07-03 21:22:31 +08:00
})
.catch((error) => {
2023-07-03 22:11:04 +08:00
console.log(
"Login Failed: " + error.response.status + " " + error.response.data
);
return [false, error.response.data];
2023-07-03 21:22:31 +08:00
});
}
export async function UserInfo() {
const token = JSON.parse((await AsyncStorage.getItem("token")) || "{}");
return instance
.get("/api/v1/accounts/users/me/", {
headers: {
Authorization: "Token " + token,
},
})
.then((response) => {
return response.data;
});
}
export function UserActivate(activation: ActivationParams) {
return instance
.post("/api/v1/accounts/users/activation/", activation)
.then(async (response) => {
return true;
})
.catch((error) => {
return false;
});
}