/
Spinner.ts
89 lines (77 loc) · 2.71 KB
/
Spinner.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import BaseClient from '../BaseClient';
import DateUtils from '../utils/Date';
import { SpinnerData } from '../../interfaces/SpinnerData';
import { SpinnerHistory } from '../../interfaces/SpinnerHistory';
export default class Spinner {
private baseClient: BaseClient;
/**
* @hidden
*/
public constructor(baseClient: BaseClient) {
this.baseClient = baseClient;
}
/**
* Get the current Spinner's data
* @returns a Promise resolved with the response or rejected in case of error
*/
public async getSpinner(): Promise<SpinnerData> {
const result = await this.baseClient.get('spinner');
const data: SpinnerData = {
id: result.id,
name: result.name,
items: result.items.map((item: any) => ({
id: item.id,
name: item.name,
chance: item.chance,
properties: {
coins: item.properties.coins,
silverCoins: item.properties.silvercoins,
craftingCoins: item.properties.craftingcoins,
packs:
item.properties.pack_templates.length > 0
? {
id: item.properties.pack_templates[0].id,
quantity: item.properties.pack_templates[0].quantity,
}
: null,
},
images: item.images,
})),
};
return data;
}
/**
* Get the history of the user's spinner rewards
* @returns a Promise resolved with the response or rejected in case of error
*/
public async getHistory(): Promise<SpinnerHistory[]> {
const result = await this.baseClient.get(`spinner/history`);
const data: SpinnerHistory[] = result.spins.map((spin: any) => ({
name: spin.name,
chance: spin.chance,
date: DateUtils.convertToDate(spin.created),
images: spin.images,
isPurchased: spin.isPurchased,
}));
return data;
}
/**
* Buy a Spin
* @returns a Promise resolved with the response or rejected in case of error
*/
public async buySpinner(): Promise<void> {
await this.baseClient.post('spinner/buy-spin', {
amount: 1,
});
}
/**
* Spin a Spinner with a given spinner id
* @param spinnerId spinner id to spin
* @returns a Promise resolved with the response or rejected in case of error
*/
public async spin(spinnerId = 166): Promise<void> {
await this.baseClient.post('spinner/spin', {
spinnerId,
});
}
}