quivr/frontend/lib/api/user/user.ts
Antoine Dewez e7ce2fa54b
feat(frontend): show remaining credits (#2495)
# Description

Please include a summary of the changes and the related issue. Please
also include relevant motivation and context.

## Checklist before requesting a review

Please delete options that are not relevant.

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my code
- [ ] I have commented hard-to-understand areas
- [ ] I have ideally added tests that prove my fix is effective or that
my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged

## Screenshots (if appropriate):
2024-04-27 04:44:48 -07:00

60 lines
1.4 KiB
TypeScript

import { AxiosInstance } from "axios";
import { UUID } from "crypto";
import { UserStats } from "@/lib/types/User";
export enum CompanySize {
One = "1-10",
Two = "10-25",
Three = "25-50",
Four = "50-100",
Five = "100-500",
Six = "500-1000",
Seven = "1000-5000",
Eight = "+5000",
}
export enum UsagePurpose {
Business = "Business",
NGO = "NGO",
Personal = "Personal",
Student = "Student",
Teacher = "Teacher",
}
export type UserIdentityUpdatableProperties = {
username: string;
company?: string;
onboarded: boolean;
company_size?: CompanySize;
usage_purpose?: UsagePurpose;
};
export type UserIdentity = {
user_id: UUID;
onboarded: boolean;
username: string;
};
export const updateUserIdentity = async (
userUpdatableProperties: UserIdentityUpdatableProperties,
axiosInstance: AxiosInstance
): Promise<UserIdentity> =>
axiosInstance.put(`/user/identity`, userUpdatableProperties);
export const getUserIdentity = async (
axiosInstance: AxiosInstance
): Promise<UserIdentity> => {
const { data } = await axiosInstance.get<UserIdentity>(`/user/identity`);
return data;
};
export const getUser = async (
axiosInstance: AxiosInstance
): Promise<UserStats> => (await axiosInstance.get<UserStats>("/user")).data;
export const getUserCredits = async (
axiosInstance: AxiosInstance
): Promise<number> => (await axiosInstance.get<number>("/user/credits")).data;