forked from doshidak/showdex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpresetApi.ts
79 lines (68 loc) · 2.75 KB
/
presetApi.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
import {
type PkmnApiSmogonFormatPresetResponse,
type PkmnApiSmogonFormatStatsResponse,
type PkmnApiSmogonPresetRequest,
type PkmnApiSmogonPresetResponse,
type PkmnApiSmogonRandomsPresetResponse,
type PkmnApiSmogonRandomsStatsResponse,
} from '@showdex/interfaces/api';
import { type CalcdexPokemonPreset } from '@showdex/interfaces/calc';
import { buildBundleQuery, buildPresetQuery, createTagProvider } from '@showdex/redux/factories';
import {
transformFormatPresetResponse,
transformFormatStatsResponse,
transformPresetResponse,
transformRandomsPresetResponse,
transformRandomsStatsResponse,
} from '@showdex/redux/transformers';
import { env } from '@showdex/utils/core';
import { pkmnApi } from './pkmnApi';
import { PokemonReduxTagType } from './tagTypes';
export const presetApi = pkmnApi.injectEndpoints({
overrideExisting: true,
endpoints: (build) => ({
pokemonBundledPreset: build.query<CalcdexPokemonPreset[], PkmnApiSmogonPresetRequest>({
queryFn: buildBundleQuery(transformFormatPresetResponse),
providesTags: createTagProvider(PokemonReduxTagType.Preset),
}),
pokemonFormatPreset: build.query<CalcdexPokemonPreset[], PkmnApiSmogonPresetRequest>({
queryFn: buildPresetQuery<PkmnApiSmogonPresetResponse | PkmnApiSmogonFormatPresetResponse>(
'smogon',
env('pkmn-presets-format-path'),
({ formatOnly }) => (formatOnly ? transformFormatPresetResponse : transformPresetResponse),
),
providesTags: createTagProvider(PokemonReduxTagType.Preset),
}),
pokemonFormatStats: build.query<CalcdexPokemonPreset[], PkmnApiSmogonPresetRequest>({
queryFn: buildPresetQuery<PkmnApiSmogonFormatStatsResponse>(
'usage',
env('pkmn-presets-format-stats-path'),
() => transformFormatStatsResponse,
),
providesTags: createTagProvider(PokemonReduxTagType.Preset),
}),
pokemonRandomsPreset: build.query<CalcdexPokemonPreset[], PkmnApiSmogonPresetRequest>({
queryFn: buildPresetQuery<PkmnApiSmogonRandomsPresetResponse>(
'smogon',
env('pkmn-presets-randoms-path'),
() => transformRandomsPresetResponse,
),
providesTags: createTagProvider(PokemonReduxTagType.Preset),
}),
pokemonRandomsStats: build.query<CalcdexPokemonPreset[], PkmnApiSmogonPresetRequest>({
queryFn: buildPresetQuery<PkmnApiSmogonRandomsStatsResponse>(
'usage',
env('pkmn-presets-randoms-stats-path'),
() => transformRandomsStatsResponse,
),
providesTags: createTagProvider(PokemonReduxTagType.Preset),
}),
}),
});
export const {
usePokemonBundledPresetQuery,
usePokemonFormatPresetQuery,
usePokemonFormatStatsQuery,
usePokemonRandomsPresetQuery,
usePokemonRandomsStatsQuery,
} = presetApi;