40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
import { AxiosInstance } from 'axios';
|
|
import { HttpInstanceFactory } from '@/utils/HttpInstanceFactory';
|
|
|
|
export interface IShopItem {
|
|
id: number;
|
|
attributes: {
|
|
isDecimal: boolean;
|
|
name: string;
|
|
price: number;
|
|
icon: {
|
|
data: {
|
|
id: number;
|
|
attributes: {
|
|
url: string;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|
|
|
|
export class ShopItemApi {
|
|
private static instance: ShopItemApi | null = null;
|
|
private httpInstance: AxiosInstance;
|
|
|
|
private constructor(token?: string) {
|
|
this.httpInstance = HttpInstanceFactory.getAuthorizedInstance(token);
|
|
}
|
|
|
|
public static getInstance(token?: string): ShopItemApi {
|
|
if (this.instance) return this.instance;
|
|
this.instance = new ShopItemApi(token);
|
|
return this.instance;
|
|
}
|
|
|
|
async getAllShopItems(): Promise<IShopItem[]> {
|
|
return (await this.httpInstance.get<{ data: IShopItem[] }>(`/shop-items?populate=*`)).data
|
|
.data;
|
|
}
|
|
}
|