be-components 1.4.9 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/lib/commonjs/Competition/api/index.js +15 -0
  2. package/lib/commonjs/Competition/api/index.js.map +1 -1
  3. package/lib/commonjs/Competition/components/CompetitionSeasonCard.js +1 -1
  4. package/lib/commonjs/Competition/components/CompetitionSeasonCard.js.map +1 -1
  5. package/lib/commonjs/Competition/components/SeasonCard.js +61 -0
  6. package/lib/commonjs/Competition/components/SeasonCard.js.map +1 -0
  7. package/lib/commonjs/Competition/index.js +23 -3
  8. package/lib/commonjs/Competition/index.js.map +1 -1
  9. package/lib/commonjs/CompetitionManager/api/index.js +3 -5
  10. package/lib/commonjs/CompetitionManager/api/index.js.map +1 -1
  11. package/lib/commonjs/CompetitionManager/components/CompetitionInfoForm.js +1 -61
  12. package/lib/commonjs/CompetitionManager/components/CompetitionInfoForm.js.map +1 -1
  13. package/lib/commonjs/CompetitionManager/components/CompetitionSettingsForm.js +6 -1
  14. package/lib/commonjs/CompetitionManager/components/CompetitionSettingsForm.js.map +1 -1
  15. package/lib/commonjs/CompetitionManager/components/ContestSettingsForm.js +4 -0
  16. package/lib/commonjs/CompetitionManager/components/ContestSettingsForm.js.map +1 -1
  17. package/lib/commonjs/CompetitionManager/components/CreateCompetitionForm.js +37 -3
  18. package/lib/commonjs/CompetitionManager/components/CreateCompetitionForm.js.map +1 -1
  19. package/lib/commonjs/CompetitionSeason/api/index.js +134 -0
  20. package/lib/commonjs/CompetitionSeason/api/index.js.map +1 -0
  21. package/lib/commonjs/CompetitionSeason/components/CompetitionsSection.js +127 -0
  22. package/lib/commonjs/CompetitionSeason/components/CompetitionsSection.js.map +1 -0
  23. package/lib/commonjs/CompetitionSeason/components/EnterSeasonPrompt.js +253 -0
  24. package/lib/commonjs/CompetitionSeason/components/EnterSeasonPrompt.js.map +1 -0
  25. package/lib/commonjs/CompetitionSeason/components/SeasonHeader.js +126 -0
  26. package/lib/commonjs/CompetitionSeason/components/SeasonHeader.js.map +1 -0
  27. package/lib/commonjs/CompetitionSeason/components/SeasonLeaderboard.js +324 -0
  28. package/lib/commonjs/CompetitionSeason/components/SeasonLeaderboard.js.map +1 -0
  29. package/lib/commonjs/CompetitionSeason/components/SeasonSettingsSection.js +175 -0
  30. package/lib/commonjs/CompetitionSeason/components/SeasonSettingsSection.js.map +1 -0
  31. package/lib/commonjs/CompetitionSeason/index.js +278 -0
  32. package/lib/commonjs/CompetitionSeason/index.js.map +1 -0
  33. package/lib/commonjs/CompetitionSeasonManager/api/index.js +182 -0
  34. package/lib/commonjs/CompetitionSeasonManager/api/index.js.map +1 -0
  35. package/lib/commonjs/CompetitionSeasonManager/components/CompetitionSelector.js +2 -0
  36. package/lib/commonjs/CompetitionSeasonManager/components/CompetitionSelector.js.map +1 -0
  37. package/lib/commonjs/CompetitionSeasonManager/components/CompetitionsForm.js +153 -0
  38. package/lib/commonjs/CompetitionSeasonManager/components/CompetitionsForm.js.map +1 -0
  39. package/lib/commonjs/CompetitionSeasonManager/components/CreateSeasonForm.js +388 -0
  40. package/lib/commonjs/CompetitionSeasonManager/components/CreateSeasonForm.js.map +1 -0
  41. package/lib/commonjs/CompetitionSeasonManager/components/SeasonHeader.js +108 -0
  42. package/lib/commonjs/CompetitionSeasonManager/components/SeasonHeader.js.map +1 -0
  43. package/lib/commonjs/CompetitionSeasonManager/components/SeasonInfoForm.js +242 -0
  44. package/lib/commonjs/CompetitionSeasonManager/components/SeasonInfoForm.js.map +1 -0
  45. package/lib/commonjs/CompetitionSeasonManager/components/SeasonSettingsForm.js +352 -0
  46. package/lib/commonjs/CompetitionSeasonManager/components/SeasonSettingsForm.js.map +1 -0
  47. package/lib/commonjs/CompetitionSeasonManager/index.js +190 -0
  48. package/lib/commonjs/CompetitionSeasonManager/index.js.map +1 -0
  49. package/lib/commonjs/Components/Switch.js +3 -0
  50. package/lib/commonjs/Components/Switch.js.map +1 -1
  51. package/lib/commonjs/Engage/api/index.js +25 -0
  52. package/lib/commonjs/Engage/api/index.js.map +1 -1
  53. package/lib/commonjs/Engage/components/SeasonCard.js +78 -0
  54. package/lib/commonjs/Engage/components/SeasonCard.js.map +1 -0
  55. package/lib/commonjs/Engage/index.js +52 -1
  56. package/lib/commonjs/Engage/index.js.map +1 -1
  57. package/lib/commonjs/index.js +14 -0
  58. package/lib/commonjs/index.js.map +1 -1
  59. package/lib/module/Competition/api/index.js +15 -0
  60. package/lib/module/Competition/api/index.js.map +1 -1
  61. package/lib/module/Competition/components/CompetitionSeasonCard.js +1 -1
  62. package/lib/module/Competition/components/CompetitionSeasonCard.js.map +1 -1
  63. package/lib/module/Competition/components/SeasonCard.js +54 -0
  64. package/lib/module/Competition/components/SeasonCard.js.map +1 -0
  65. package/lib/module/Competition/index.js +23 -3
  66. package/lib/module/Competition/index.js.map +1 -1
  67. package/lib/module/CompetitionManager/api/index.js +3 -5
  68. package/lib/module/CompetitionManager/api/index.js.map +1 -1
  69. package/lib/module/CompetitionManager/components/CompetitionInfoForm.js +1 -63
  70. package/lib/module/CompetitionManager/components/CompetitionInfoForm.js.map +1 -1
  71. package/lib/module/CompetitionManager/components/CompetitionSettingsForm.js +6 -1
  72. package/lib/module/CompetitionManager/components/CompetitionSettingsForm.js.map +1 -1
  73. package/lib/module/CompetitionManager/components/ContestSettingsForm.js +4 -0
  74. package/lib/module/CompetitionManager/components/ContestSettingsForm.js.map +1 -1
  75. package/lib/module/CompetitionManager/components/CreateCompetitionForm.js +37 -3
  76. package/lib/module/CompetitionManager/components/CreateCompetitionForm.js.map +1 -1
  77. package/lib/module/CompetitionSeason/api/index.js +128 -0
  78. package/lib/module/CompetitionSeason/api/index.js.map +1 -0
  79. package/lib/module/CompetitionSeason/components/CompetitionsSection.js +118 -0
  80. package/lib/module/CompetitionSeason/components/CompetitionsSection.js.map +1 -0
  81. package/lib/module/CompetitionSeason/components/EnterSeasonPrompt.js +244 -0
  82. package/lib/module/CompetitionSeason/components/EnterSeasonPrompt.js.map +1 -0
  83. package/lib/module/CompetitionSeason/components/SeasonHeader.js +119 -0
  84. package/lib/module/CompetitionSeason/components/SeasonHeader.js.map +1 -0
  85. package/lib/module/CompetitionSeason/components/SeasonLeaderboard.js +315 -0
  86. package/lib/module/CompetitionSeason/components/SeasonLeaderboard.js.map +1 -0
  87. package/lib/module/CompetitionSeason/components/SeasonSettingsSection.js +166 -0
  88. package/lib/module/CompetitionSeason/components/SeasonSettingsSection.js.map +1 -0
  89. package/lib/module/CompetitionSeason/index.js +269 -0
  90. package/lib/module/CompetitionSeason/index.js.map +1 -0
  91. package/lib/module/CompetitionSeasonManager/api/index.js +176 -0
  92. package/lib/module/CompetitionSeasonManager/api/index.js.map +1 -0
  93. package/lib/module/CompetitionSeasonManager/components/CompetitionSelector.js +2 -0
  94. package/lib/module/CompetitionSeasonManager/components/CompetitionSelector.js.map +1 -0
  95. package/lib/module/CompetitionSeasonManager/components/CompetitionsForm.js +144 -0
  96. package/lib/module/CompetitionSeasonManager/components/CompetitionsForm.js.map +1 -0
  97. package/lib/module/CompetitionSeasonManager/components/CreateSeasonForm.js +379 -0
  98. package/lib/module/CompetitionSeasonManager/components/CreateSeasonForm.js.map +1 -0
  99. package/lib/module/CompetitionSeasonManager/components/SeasonHeader.js +101 -0
  100. package/lib/module/CompetitionSeasonManager/components/SeasonHeader.js.map +1 -0
  101. package/lib/module/CompetitionSeasonManager/components/SeasonInfoForm.js +233 -0
  102. package/lib/module/CompetitionSeasonManager/components/SeasonInfoForm.js.map +1 -0
  103. package/lib/module/CompetitionSeasonManager/components/SeasonSettingsForm.js +343 -0
  104. package/lib/module/CompetitionSeasonManager/components/SeasonSettingsForm.js.map +1 -0
  105. package/lib/module/CompetitionSeasonManager/index.js +181 -0
  106. package/lib/module/CompetitionSeasonManager/index.js.map +1 -0
  107. package/lib/module/Components/Switch.js +3 -0
  108. package/lib/module/Components/Switch.js.map +1 -1
  109. package/lib/module/Engage/api/index.js +25 -0
  110. package/lib/module/Engage/api/index.js.map +1 -1
  111. package/lib/module/Engage/components/SeasonCard.js +71 -0
  112. package/lib/module/Engage/components/SeasonCard.js.map +1 -0
  113. package/lib/module/Engage/index.js +52 -1
  114. package/lib/module/Engage/index.js.map +1 -1
  115. package/lib/module/index.js +3 -1
  116. package/lib/module/index.js.map +1 -1
  117. package/lib/typescript/src/Competition/api/index.d.ts +1 -0
  118. package/lib/typescript/src/Competition/api/index.d.ts.map +1 -1
  119. package/lib/typescript/src/Competition/components/SeasonCard.d.ts +10 -0
  120. package/lib/typescript/src/Competition/components/SeasonCard.d.ts.map +1 -0
  121. package/lib/typescript/src/Competition/index.d.ts +3 -2
  122. package/lib/typescript/src/Competition/index.d.ts.map +1 -1
  123. package/lib/typescript/src/CompetitionManager/api/index.d.ts +1 -1
  124. package/lib/typescript/src/CompetitionManager/api/index.d.ts.map +1 -1
  125. package/lib/typescript/src/CompetitionManager/components/CompetitionInfoForm.d.ts.map +1 -1
  126. package/lib/typescript/src/CompetitionManager/components/CompetitionSettingsForm.d.ts.map +1 -1
  127. package/lib/typescript/src/CompetitionManager/components/ContestSettingsForm.d.ts.map +1 -1
  128. package/lib/typescript/src/CompetitionManager/components/CreateCompetitionForm.d.ts +3 -2
  129. package/lib/typescript/src/CompetitionManager/components/CreateCompetitionForm.d.ts.map +1 -1
  130. package/lib/typescript/src/CompetitionSeason/api/index.d.ts +41 -0
  131. package/lib/typescript/src/CompetitionSeason/api/index.d.ts.map +1 -0
  132. package/lib/typescript/src/CompetitionSeason/components/CompetitionsSection.d.ts +14 -0
  133. package/lib/typescript/src/CompetitionSeason/components/CompetitionsSection.d.ts.map +1 -0
  134. package/lib/typescript/src/CompetitionSeason/components/EnterSeasonPrompt.d.ts +16 -0
  135. package/lib/typescript/src/CompetitionSeason/components/EnterSeasonPrompt.d.ts.map +1 -0
  136. package/lib/typescript/src/CompetitionSeason/components/SeasonHeader.d.ts +15 -0
  137. package/lib/typescript/src/CompetitionSeason/components/SeasonHeader.d.ts.map +1 -0
  138. package/lib/typescript/src/CompetitionSeason/components/SeasonLeaderboard.d.ts +18 -0
  139. package/lib/typescript/src/CompetitionSeason/components/SeasonLeaderboard.d.ts.map +1 -0
  140. package/lib/typescript/src/CompetitionSeason/components/SeasonSettingsSection.d.ts +12 -0
  141. package/lib/typescript/src/CompetitionSeason/components/SeasonSettingsSection.d.ts.map +1 -0
  142. package/lib/typescript/src/CompetitionSeason/index.d.ts +12 -0
  143. package/lib/typescript/src/CompetitionSeason/index.d.ts.map +1 -0
  144. package/lib/typescript/src/CompetitionSeasonManager/api/index.d.ts +31 -0
  145. package/lib/typescript/src/CompetitionSeasonManager/api/index.d.ts.map +1 -0
  146. package/lib/typescript/src/CompetitionSeasonManager/components/CompetitionSelector.d.ts +1 -0
  147. package/lib/typescript/src/CompetitionSeasonManager/components/CompetitionSelector.d.ts.map +1 -0
  148. package/lib/typescript/src/CompetitionSeasonManager/components/CompetitionsForm.d.ts +12 -0
  149. package/lib/typescript/src/CompetitionSeasonManager/components/CompetitionsForm.d.ts.map +1 -0
  150. package/lib/typescript/src/CompetitionSeasonManager/components/CreateSeasonForm.d.ts +11 -0
  151. package/lib/typescript/src/CompetitionSeasonManager/components/CreateSeasonForm.d.ts.map +1 -0
  152. package/lib/typescript/src/CompetitionSeasonManager/components/SeasonHeader.d.ts +13 -0
  153. package/lib/typescript/src/CompetitionSeasonManager/components/SeasonHeader.d.ts.map +1 -0
  154. package/lib/typescript/src/CompetitionSeasonManager/components/SeasonInfoForm.d.ts +11 -0
  155. package/lib/typescript/src/CompetitionSeasonManager/components/SeasonInfoForm.d.ts.map +1 -0
  156. package/lib/typescript/src/CompetitionSeasonManager/components/SeasonSettingsForm.d.ts +12 -0
  157. package/lib/typescript/src/CompetitionSeasonManager/components/SeasonSettingsForm.d.ts.map +1 -0
  158. package/lib/typescript/src/CompetitionSeasonManager/index.d.ts +8 -0
  159. package/lib/typescript/src/CompetitionSeasonManager/index.d.ts.map +1 -0
  160. package/lib/typescript/src/Components/Switch.d.ts +2 -1
  161. package/lib/typescript/src/Components/Switch.d.ts.map +1 -1
  162. package/lib/typescript/src/Engage/api/index.d.ts +6 -1
  163. package/lib/typescript/src/Engage/api/index.d.ts.map +1 -1
  164. package/lib/typescript/src/Engage/components/SeasonCard.d.ts +10 -0
  165. package/lib/typescript/src/Engage/components/SeasonCard.d.ts.map +1 -0
  166. package/lib/typescript/src/Engage/index.d.ts +3 -2
  167. package/lib/typescript/src/Engage/index.d.ts.map +1 -1
  168. package/lib/typescript/src/index.d.ts +3 -1
  169. package/lib/typescript/src/index.d.ts.map +1 -1
  170. package/package.json +1 -1
  171. package/src/Competition/api/index.ts +15 -0
  172. package/src/Competition/components/CompetitionSeasonCard.tsx +1 -1
  173. package/src/Competition/components/SeasonCard.tsx +46 -0
  174. package/src/Competition/index.tsx +45 -27
  175. package/src/CompetitionManager/api/index.ts +2 -5
  176. package/src/CompetitionManager/components/CompetitionInfoForm.tsx +2 -64
  177. package/src/CompetitionManager/components/CompetitionSettingsForm.tsx +10 -3
  178. package/src/CompetitionManager/components/ContestSettingsForm.tsx +8 -2
  179. package/src/CompetitionManager/components/CreateCompetitionForm.tsx +20 -4
  180. package/src/CompetitionSeason/api/index.ts +111 -0
  181. package/src/CompetitionSeason/components/CompetitionsSection.tsx +99 -0
  182. package/src/CompetitionSeason/components/EnterSeasonPrompt.tsx +135 -0
  183. package/src/CompetitionSeason/components/SeasonHeader.tsx +81 -0
  184. package/src/CompetitionSeason/components/SeasonLeaderboard.tsx +205 -0
  185. package/src/CompetitionSeason/components/SeasonSettingsSection.tsx +92 -0
  186. package/src/CompetitionSeason/index.tsx +244 -0
  187. package/src/CompetitionSeasonManager/api/index.ts +127 -0
  188. package/src/CompetitionSeasonManager/components/CompetitionSelector.tsx +2 -0
  189. package/src/CompetitionSeasonManager/components/CompetitionsForm.tsx +113 -0
  190. package/src/CompetitionSeasonManager/components/CreateSeasonForm.tsx +238 -0
  191. package/src/CompetitionSeasonManager/components/SeasonHeader.tsx +75 -0
  192. package/src/CompetitionSeasonManager/components/SeasonInfoForm.tsx +124 -0
  193. package/src/CompetitionSeasonManager/components/SeasonSettingsForm.tsx +185 -0
  194. package/src/CompetitionSeasonManager/index.tsx +151 -0
  195. package/src/Components/Switch.tsx +8 -3
  196. package/src/Engage/api/index.ts +21 -2
  197. package/src/Engage/components/SeasonCard.tsx +42 -0
  198. package/src/Engage/index.tsx +44 -7
  199. package/src/index.tsx +4 -1
  200. package/src/types.d.ts +48 -5
  201. package/lib/commonjs/Competition/components/ManageSeasonForm.js +0 -605
  202. package/lib/commonjs/Competition/components/ManageSeasonForm.js.map +0 -1
  203. package/lib/commonjs/Competition/components/SeasonInfoModal.js +0 -400
  204. package/lib/commonjs/Competition/components/SeasonInfoModal.js.map +0 -1
  205. package/lib/module/Competition/components/ManageSeasonForm.js +0 -596
  206. package/lib/module/Competition/components/ManageSeasonForm.js.map +0 -1
  207. package/lib/module/Competition/components/SeasonInfoModal.js +0 -391
  208. package/lib/module/Competition/components/SeasonInfoModal.js.map +0 -1
  209. package/lib/typescript/src/Competition/components/ManageSeasonForm.d.ts +0 -10
  210. package/lib/typescript/src/Competition/components/ManageSeasonForm.d.ts.map +0 -1
  211. package/lib/typescript/src/Competition/components/SeasonInfoModal.d.ts +0 -14
  212. package/lib/typescript/src/Competition/components/SeasonInfoModal.d.ts.map +0 -1
  213. package/src/Competition/components/ManageSeasonForm.tsx +0 -271
  214. package/src/Competition/components/SeasonInfoModal.tsx +0 -212
@@ -0,0 +1,151 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { View, ScrollView, ActivityIndicator } from 'react-native';
3
+ import SeasonInfoForm from './components/SeasonInfoForm';
4
+ import { ManageSeasonApi, ManageSeasonHelpers } from './api';
5
+ import type { CompetitionPayoutTypeProps, CompetitionProps, CompetitionResultTypeProps, CompetitionSeasonProps, CompetitionTypeProps, MyPlayerProps } from '../types';
6
+ import Colors from '../constants/colors';
7
+ import CompetitionsForm from './components/CompetitionsForm';
8
+ import SeasonSettingsForm from './components/SeasonSettingsForm';
9
+ import CreateCompetitionForm from '../CompetitionManager/components/CreateCompetitionForm';
10
+ import SeasonHeader from './components/SeasonHeader';
11
+
12
+ type SeasonManagerProps = {
13
+ competition_season_id:string,
14
+ player_id?:string
15
+ }
16
+
17
+ const SeasonManager = ({ competition_season_id }:SeasonManagerProps) => {
18
+ const [ show_create_competition, setShowCreateCompetition ] = useState(false);
19
+ const [ module_size, setModuleSize ] = useState({ width: 0, height: 0 });
20
+ const [ season_data, setData ] = useState<{
21
+ loading: boolean,
22
+ action_loading:boolean,
23
+ player?:MyPlayerProps,
24
+ competition_season?:CompetitionSeasonProps,
25
+ competition_types:CompetitionTypeProps[],
26
+ competition_result_types:CompetitionResultTypeProps[],
27
+ competition_payout_types:CompetitionPayoutTypeProps[],
28
+ competitions:CompetitionProps[]
29
+ }>({
30
+ loading:false,
31
+ action_loading: false,
32
+ competition_payout_types:[],
33
+ competition_result_types: [],
34
+ competition_types:[],
35
+ competitions: []
36
+ })
37
+ const { action_loading, player, competition_types, competition_result_types, competition_season, competitions } = season_data;
38
+
39
+ useEffect(() => {
40
+ ManageSeasonApi.setEnvironment();
41
+ getDataFromServer(competition_season_id);
42
+ },[competition_season_id])
43
+
44
+ const getDataFromServer = async(id:string) => {
45
+ setData({ ...season_data, loading: true });
46
+ const cs = await ManageSeasonApi.getSeasonById(id);
47
+ const comps = await ManageSeasonApi.getCompetitionsBySeasonId(id);
48
+ const opts = await ManageSeasonApi.getCompetitionOptions();
49
+ const me = await ManageSeasonApi.getMyDetails();
50
+ setData({
51
+ ...season_data,
52
+ competition_season: cs,
53
+ competitions: comps,
54
+ player:me,
55
+ competition_payout_types: opts.competition_payout_types,
56
+ competition_result_types: opts.competition_result_types,
57
+ competition_types: opts.competition_types
58
+ })
59
+ }
60
+
61
+
62
+ if(!competition_season){
63
+ return (
64
+ <View style={{ flex:1 }}>
65
+ <ActivityIndicator size={'large'} color={Colors.brand.midnight} style={{ padding:20, alignSelf:'center' }} />
66
+ </View>
67
+ )
68
+ }
69
+
70
+ const errors = ManageSeasonHelpers.isSeasonValid(competition_season)
71
+
72
+
73
+ return (
74
+ <View style={{ flex:1 }}>
75
+ <ScrollView style={{ flex:1 }} onLayout={(ev) => {
76
+ const { width, height } = ev.nativeEvent.layout;
77
+ setModuleSize({ width, height })
78
+ }}>
79
+ <SeasonHeader
80
+ competition_season={competition_season}
81
+ width={module_size.width}
82
+ action_loading={action_loading}
83
+ season_valid={errors.length > 0 ? false : true}
84
+ onActivate={async() => {
85
+ setData({ ...season_data, action_loading: true })
86
+ const new_cs = await ManageSeasonApi.activateSeason(competition_season.competition_season_id);
87
+ setData({
88
+ ...season_data,
89
+ action_loading: false,
90
+ competition_season:new_cs
91
+ })
92
+ }}
93
+ onDelete={async() => {
94
+ setData({ ...season_data, action_loading: true })
95
+ const new_cs = await ManageSeasonApi.deleteSeason(competition_season.competition_season_id);
96
+ setData({
97
+ ...season_data,
98
+ action_loading: false,
99
+ competition_season:new_cs
100
+ })
101
+ }}
102
+ />
103
+ <SeasonInfoForm
104
+ width={module_size.width}
105
+ player={player}
106
+ competition_season={competition_season}
107
+ onSeasonUpdate={async(cs) => {
108
+ setData({ ...season_data, action_loading: true })
109
+ const new_s = await ManageSeasonApi.updateSeason(cs);
110
+ setData({ ...season_data, action_loading: false, competition_season: new_s })
111
+ }}
112
+ />
113
+ <SeasonSettingsForm
114
+ width={module_size.width}
115
+ competition_season={competition_season}
116
+ competition_types={competition_types}
117
+ competition_result_types={competition_result_types}
118
+ onSeasonUpdate={async(cs) => {
119
+ setData({ ...season_data, action_loading: true })
120
+ const new_s = await ManageSeasonApi.updateSeason(cs);
121
+ setData({ ...season_data, action_loading: false, competition_season: new_s })
122
+ }}
123
+ />
124
+ <CompetitionsForm
125
+ onAddCompetition={() => setShowCreateCompetition(true)}
126
+ competitions={competitions}
127
+ competition_season={competition_season}
128
+ competition_result_types={competition_result_types}
129
+ competition_types={competition_types}
130
+ />
131
+ </ScrollView>
132
+ {show_create_competition ?
133
+ <View style={{ position:'absolute', top:0, left:0, right:0, bottom:0, backgroundColor:Colors.shades.black_faded, justifyContent:'flex-end' }}>
134
+ <CreateCompetitionForm
135
+ width={module_size.width}
136
+ competition_season={competition_season}
137
+ onClose={() => setShowCreateCompetition(false)}
138
+ onCreate={(competition) => {
139
+ setData({
140
+ ...season_data,
141
+ competitions: competitions.concat(competition)
142
+ })
143
+ }}
144
+ />
145
+ </View>
146
+ :<></>}
147
+ </View>
148
+ )
149
+ }
150
+
151
+ export default SeasonManager
@@ -6,9 +6,10 @@ import Colors from '../constants/colors';
6
6
  type SwitchProps = {
7
7
  value: boolean,
8
8
  switch_type: 'binary' | 'on_off',
9
+ disabled?:boolean,
9
10
  onChange:(value:boolean) => void
10
11
  }
11
- const Switch = ({ value, switch_type, onChange }:SwitchProps) => {
12
+ const Switch = ({ value, disabled, switch_type, onChange }:SwitchProps) => {
12
13
 
13
14
  const handleChange = () => {
14
15
  if(onChange){
@@ -19,7 +20,9 @@ const Switch = ({ value, switch_type, onChange }:SwitchProps) => {
19
20
  return (
20
21
  <View style={{ flexDirection:'row', alignItems:'flex-start' }}>
21
22
  {switch_type == 'on_off' ?
22
- <TouchableOpacity style={{flexDirection:'row', justifyContent:'space-between', alignItems:'center', backgroundColor:value?Colors.highlights.highlight400:Colors.brand.slate, padding:3, borderRadius:12, width:48,height:24}} onPress={() => handleChange()}>
23
+ <TouchableOpacity
24
+ disabled={disabled}
25
+ style={{flexDirection:'row', justifyContent:'space-between', alignItems:'center', backgroundColor:value?Colors.highlights.highlight400:Colors.brand.slate, padding:3, borderRadius:12, width:48,height:24}} onPress={() => handleChange()}>
23
26
  { value ?
24
27
  <>
25
28
  <View />
@@ -33,7 +36,9 @@ const Switch = ({ value, switch_type, onChange }:SwitchProps) => {
33
36
  }
34
37
  </TouchableOpacity>
35
38
  :
36
- <TouchableOpacity style={{flexDirection:'row', justifyContent:'space-between', alignItems:'center', backgroundColor:Colors.shades.white, padding:3, borderRadius:12, width:48,height:24}} onPress={() => handleChange()}>
39
+ <TouchableOpacity
40
+ disabled={disabled}
41
+ style={{flexDirection:'row', justifyContent:'space-between', alignItems:'center', backgroundColor:Colors.shades.white, padding:3, borderRadius:12, width:48,height:24}} onPress={() => handleChange()}>
37
42
  { value ?
38
43
  <>
39
44
  <View />
@@ -1,6 +1,6 @@
1
1
  import axios from 'axios';
2
2
  import { APIOverrides } from "../../ApiOverrides";
3
- import type { BracketCompetitionProps, BracketProps, CompanyProps, CompetitionPayoutTypeProps, CompetitionProps, CompetitionResultTypeProps, CompetitionTypeProps, EventProps, LeagueProps, PublicPlayerProps, SquaresCompetitionProps } from '../../types';
3
+ import type { BracketCompetitionProps, BracketProps, CompanyProps, CompetitionPayoutTypeProps, CompetitionProps, CompetitionResultTypeProps, CompetitionSeasonProps, CompetitionTypeProps, EventProps, LeagueProps, PublicPlayerProps, SquaresCompetitionProps } from '../../types';
4
4
 
5
5
  let AUTH_SVC_API = ''
6
6
  let TP_SVC_API = ''
@@ -24,6 +24,16 @@ const EngageApi = {
24
24
  return []
25
25
  }
26
26
  },
27
+ getActivePublicSeasons: async():Promise<CompetitionSeasonProps[]> => {
28
+ try {
29
+ const resp = await axios.get(`${TP_SVC_API}/v2/competitions/seasons/public`)
30
+ console.log(resp.data)
31
+ return resp.data.competition_seasons
32
+ } catch (e) {
33
+ console.log(e)
34
+ return []
35
+ }
36
+ },
27
37
  getActivePublicSquares: async():Promise<SquaresCompetitionProps[]> => {
28
38
  try {
29
39
  const resp = await axios.get(`${TP_SVC_API}/v1/squares/public`)
@@ -120,5 +130,14 @@ const EngageHelpers = {
120
130
  getBracketIdsFromBracketComps: (bc:BracketCompetitionProps[]) => {
121
131
  const ids = bc.map(c => c.bracket_id)
122
132
  return [ ...new Set(ids.map(id => id)) ]
123
- }
133
+ },
134
+ getSeasonPayoutAmounts: (competition_season:CompetitionSeasonProps) => {
135
+ let total_payout = competition_season.ticket_revenue
136
+ if(competition_season.promo_amt){ total_payout = total_payout + parseFloat(competition_season.promo_amt as string) }
137
+ if(competition_season.guaranteed_payout && competition_season.guaranteed_payout > total_payout){ total_payout = competition_season.guaranteed_payout }
138
+
139
+ let season_payout = parseFloat(competition_season.payout_allocation as string) * total_payout
140
+ let competition_payout = total_payout - season_payout
141
+ return { season_payout, competition_payout }
142
+ },
124
143
  }
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ import { View, Image, TouchableOpacity } from 'react-native';
3
+ import type { CompetitionSeasonProps } from '../../types';
4
+ import { view_styles } from '../../constants/styles';
5
+ import { Text } from '../../Components';
6
+ import Colors from '../../constants/colors';
7
+ import moment from 'moment-mini';
8
+
9
+ type SeasonCardProps = {
10
+ competition_season:CompetitionSeasonProps,
11
+ width: number,
12
+ onSelectSeason: (cs:CompetitionSeasonProps) => void
13
+ }
14
+ const MAX_IMAGE_WIDTH = 175
15
+
16
+ const SeasonCard = ({ competition_season, width, onSelectSeason }:SeasonCardProps) => {
17
+ const image_width = width > MAX_IMAGE_WIDTH ? MAX_IMAGE_WIDTH : width
18
+
19
+ return (
20
+ <TouchableOpacity style={{ ...view_styles.section, width:image_width, backgroundColor:Colors.brand.mint, borderRadius:8 }} onPress={() => onSelectSeason(competition_season)}>
21
+ <View style={{ padding:10, flexDirection:'row', alignItems:'center' }}>
22
+ <View style={{ flex:1 }}>
23
+ <Text theme='header'>SEASON</Text>
24
+ </View>
25
+ <Text theme='header'>${parseFloat(competition_season.ticket_price as string).toFixed(2)}</Text>
26
+ </View>
27
+ <View style={{ backgroundColor:Colors.shades.shade100 }}>
28
+ <Image
29
+ source={{ uri: competition_season.image?.url }}
30
+ style={{ height:image_width, width:image_width, borderRadius:8 }}
31
+ resizeMode='cover'
32
+ />
33
+ <View style={{ position:'absolute', backgroundColor:Colors.shades.white, bottom:0, left:0, right:0, padding:10, borderBottomRightRadius:8, borderBottomLeftRadius:8 }}>
34
+ <Text theme='header_2'>{competition_season.season_name}</Text>
35
+ <Text style={{ marginTop:3 }} theme='body_2'>Starts {moment(competition_season.scheduled_datetime).format('MMM DD hh:mm a')}</Text>
36
+ </View>
37
+ </View>
38
+ </TouchableOpacity>
39
+ )
40
+ }
41
+
42
+ export default SeasonCard
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect, useState } from 'react';
2
2
  import { View, ActivityIndicator, FlatList } from 'react-native';
3
- import type { BracketCompetitionProps, BracketProps, CompanyProps, CompetitionPayoutTypeProps, CompetitionProps, CompetitionResultTypeProps, CompetitionTypeProps, EventProps, LeagueProps, PublicPlayerProps, SquaresCompetitionProps } from '../types';
3
+ import type { BracketCompetitionProps, BracketProps, CompanyProps, CompetitionPayoutTypeProps, CompetitionProps, CompetitionResultTypeProps, CompetitionSeasonProps, CompetitionTypeProps, EventProps, LeagueProps, PublicPlayerProps, SquaresCompetitionProps } from '../types';
4
4
  import Colors from '../constants/colors';
5
5
  import { EngageApi, EngageHelpers } from './api';
6
6
  import CompetitionCard from './components/CompetitionCard';
@@ -10,16 +10,19 @@ import SquaresCompetitionCard from './components/SquaresCompetitionCard';
10
10
  import BracketCompetitionCard from './components/BracketCompetitionCard';
11
11
  import moment from 'moment-mini';
12
12
  import SocketManager from '../Socket';
13
+ import SeasonCard from './components/SeasonCard';
13
14
 
14
15
 
15
16
  type EngageModuleProps = {
16
17
  player_id?:string,
17
18
  onSelectCompetition:(c:CompetitionProps) => void,
18
19
  onSelectBracketCompetition:(bc:BracketCompetitionProps) => void,
19
- onSelectSquaresCompetition:(sc:SquaresCompetitionProps) => void
20
+ onSelectSquaresCompetition:(sc:SquaresCompetitionProps) => void,
21
+ onSelectCompetitionSeason:(cs:CompetitionSeasonProps) => void
20
22
  }
21
23
 
22
- const EngageModule = ({ onSelectBracketCompetition, onSelectCompetition, onSelectSquaresCompetition }:EngageModuleProps) => {
24
+ const EngageModule = ({ onSelectBracketCompetition, onSelectCompetition, onSelectSquaresCompetition, onSelectCompetitionSeason }:EngageModuleProps) => {
25
+ const [ module_size, setModuleSize ] = useState({ width:0, height:0 });
23
26
  const [ socket_state, setSocketState ] = useState<{
24
27
  connected:boolean,
25
28
  reload_needed?:boolean
@@ -30,6 +33,7 @@ const EngageModule = ({ onSelectBracketCompetition, onSelectCompetition, onSelec
30
33
  const [ module_data, setModuleData ] = useState<{
31
34
  loading:boolean,
32
35
  competitions:CompetitionProps[],
36
+ competition_seasons:CompetitionSeasonProps[],
33
37
  competition_types:CompetitionTypeProps[],
34
38
  competition_result_types:CompetitionResultTypeProps[],
35
39
  competition_payouts:CompetitionPayoutTypeProps[],
@@ -43,6 +47,7 @@ const EngageModule = ({ onSelectBracketCompetition, onSelectCompetition, onSelec
43
47
  }>({
44
48
  loading:false,
45
49
  competitions: [],
50
+ competition_seasons:[],
46
51
  companies:[],
47
52
  leagues:[],
48
53
  events:[],
@@ -54,7 +59,8 @@ const EngageModule = ({ onSelectBracketCompetition, onSelectCompetition, onSelec
54
59
  bracket_competitions:[],
55
60
  players:[]
56
61
  });
57
- const { loading, competitions, competition_result_types, squares_competitions, brackets, leagues, bracket_competitions, events, competition_types, companies, players } = module_data;
62
+ const { loading, competitions, competition_seasons, competition_result_types, squares_competitions, brackets, leagues, bracket_competitions, events, competition_types, companies, players } = module_data;
63
+
58
64
 
59
65
  useEffect(() => {
60
66
  EngageApi.setEnvironment();
@@ -75,6 +81,7 @@ const EngageModule = ({ onSelectBracketCompetition, onSelectCompetition, onSelec
75
81
  })
76
82
  const lgs = await EngageApi.getLeagues();
77
83
  const comps = await EngageApi.getActivePublicCompetitions();
84
+ const seasons = await EngageApi.getActivePublicSeasons();
78
85
  const brackets = await EngageApi.getActivePublicBrackets();
79
86
  const squares = await EngageApi.getActivePublicSquares();
80
87
  const company_ids = EngageHelpers.getCompanyIdsFromEngage(comps, squares, brackets);
@@ -91,6 +98,7 @@ const EngageModule = ({ onSelectBracketCompetition, onSelectCompetition, onSelec
91
98
  ...module_data,
92
99
  loading:false,
93
100
  competitions:comps,
101
+ competition_seasons: seasons,
94
102
  bracket_competitions:brackets,
95
103
  competition_types: opts.competition_types,
96
104
  competition_result_types: opts.competition_result_types,
@@ -143,7 +151,17 @@ const EngageModule = ({ onSelectBracketCompetition, onSelectCompetition, onSelec
143
151
  </View>
144
152
  )
145
153
  }
146
-
154
+ const renderSeasons = (data: { item:CompetitionSeasonProps, index:number }) => {
155
+ return (
156
+ <View>
157
+ <SeasonCard
158
+ competition_season={data.item}
159
+ width={module_size.width / 2.5}
160
+ onSelectSeason={(cs) => onSelectCompetitionSeason(cs)}
161
+ />
162
+ </View>
163
+ )
164
+ }
147
165
 
148
166
  const renderCompetitions = (data: { item:CompetitionProps, index:number }) => {
149
167
  const admin = players.find(p => p.player_id == data.item.admin_id);
@@ -176,7 +194,10 @@ const EngageModule = ({ onSelectBracketCompetition, onSelectCompetition, onSelec
176
194
  }
177
195
 
178
196
  return (
179
- <View style={{ flex:1, backgroundColor:Colors.shades.white }}>
197
+ <View style={{ flex:1, backgroundColor:Colors.shades.white }} onLayout={(ev) => {
198
+ const { height, width } = ev.nativeEvent.layout;
199
+ setModuleSize({ width, height })
200
+ }}>
180
201
  <View style={{ ...view_styles.body_row, margin:10, backgroundColor:Colors.shades.white, borderRadius:22, borderWidth:4, borderColor:Colors.shades.shade100}}>
181
202
  <Button
182
203
  title='COMPETITIONS'
@@ -223,7 +244,23 @@ const EngageModule = ({ onSelectBracketCompetition, onSelectCompetition, onSelec
223
244
  />
224
245
  </View>
225
246
  {active_tab == 'competitions' ?
226
- <View style={{ ...view_styles.section_body, padding:0 }}>
247
+ <View style={{ ...view_styles.section_body, justifyContent:'flex-start', padding:0 }}>
248
+ {competition_seasons.length > 0 ?
249
+ <View>
250
+ <View style={{ ...view_styles.section_header, backgroundColor:Colors.shades.shade100, borderRadius:0, marginBottom:10 }}>
251
+ <View style={{ flex:1 }}>
252
+ <Text theme='header'>Public Seasons</Text>
253
+ <Text style={{ marginTop:3 }} theme='body'>Seasons are multi-competition contests. Payouts are split between each competition and the season long winners.</Text>
254
+ </View>
255
+ </View>
256
+ <FlatList
257
+ data={competition_seasons}
258
+ horizontal
259
+ keyExtractor={(item) => item.competition_season_id.toString()}
260
+ renderItem={renderSeasons}
261
+ />
262
+ </View>
263
+ :<></>}
227
264
  <View style={{ marginBottom:15, marginTop:10 }}>
228
265
  <View style={{ ...view_styles.section_header, backgroundColor:Colors.shades.shade100, borderRadius:0 }}>
229
266
  <View style={{ flex:1 }}>
package/src/index.tsx CHANGED
@@ -22,7 +22,8 @@ import CompetitionManager from "./CompetitionManager";
22
22
  import CreateCompetitionForm from "./CompetitionManager/components/CreateCompetitionForm";
23
23
  import AdminCompetitionList from "./CompetitionManager/components/AdminCompetitionList";
24
24
  import EngageModule from "./Engage";
25
-
25
+ import SeasonManager from "./CompetitionSeasonManager";
26
+ import SeasonModule from "./CompetitionSeason";
26
27
 
27
28
  export {
28
29
  Authenticator,
@@ -44,7 +45,9 @@ export {
44
45
  PollCampaignApi,
45
46
  PollApi,
46
47
  CompetitionModule,
48
+ SeasonManager,
47
49
  CreateCompetitionForm,
50
+ SeasonModule,
48
51
  AdminCompetitionList,
49
52
  AdServer,
50
53
  AdProvider,
package/src/types.d.ts CHANGED
@@ -1185,25 +1185,68 @@ export interface CompetitionResultProps {
1185
1185
  export interface CompetitionSeasonProps {
1186
1186
  competition_season_id:string;
1187
1187
  season_name: string;
1188
- season_description:string;
1188
+ season_description: string;
1189
1189
  image?:{ url:string };
1190
+ ticket_price:number | string;
1191
+ ticket_revenue: number;
1190
1192
  payout_amt: number;
1191
- sponsor_id?:string;
1192
- competition_result_type_id:string;
1193
+ promo_amt?:number | string;
1194
+ max_picks: number | string;
1195
+ initial_balance:number | string;
1196
+ invite_only:boolean,
1197
+ company_id?:string,
1198
+ balance_rollover:boolean;
1193
1199
  admin_id:string;
1200
+ unallocated_funds:number;
1194
1201
  template?:boolean;
1202
+ competition_result_type_id:string;
1203
+ competition_type_id:string;
1204
+ sponsor_id?:string;
1205
+ entered?:boolean;
1206
+ expected_competition_count:number | string;
1207
+ pacer_id?:string;
1195
1208
  following_season_id?:string;
1196
- payout_allocation:number;
1209
+ payout_allocation:number | string;
1197
1210
  single_buy_in:boolean; //If true - then once you enter, you are automatically entered into all remaining competitions in season. If false - you need to re-enter each week
1198
1211
  allow_late_buy_in:boolean; //If true - then you will allow users to buy in at later dates
1199
1212
  scheduled_datetime:any;
1200
1213
  league_id?:string,
1201
- status: 'active' | 'inactive' | 'pending';
1214
+ status: 'active' | 'inactive' | 'closed'|'pending';
1202
1215
  market_type: 'FOR_MONEY' | 'FREE';
1216
+ guaranteed_payout?:number,
1217
+ tickets_sold:number,
1218
+ tickets_available:number,
1203
1219
  create_datetime:any;
1204
1220
  last_update_datetime:any;
1205
1221
  }
1206
1222
 
1223
+
1224
+ export interface CompetitionSeasonPlayerProps {
1225
+ competition_season_player_id:string,
1226
+ competition_season_id:string,
1227
+ player_id:string,
1228
+ status: 'active'|'inactive',
1229
+ wins: number,
1230
+ losses:number,
1231
+ draws: number,
1232
+ wager_based_balance:number,
1233
+ earnings:number,
1234
+ create_datetime:any,
1235
+ last_update_datetime: any
1236
+ }
1237
+
1238
+ export interface CompetitionSeasonResultProps {
1239
+ competition_season_result_id:string,
1240
+ competition_season_id:string,
1241
+ place:number,
1242
+ status:string,
1243
+ winnings:number,
1244
+ player_id:string,
1245
+ processed:boolean,
1246
+ create_datetime:any,
1247
+ last_update_datetime:any
1248
+ }
1249
+
1207
1250
  export interface CompetitionTypeProps {
1208
1251
  competition_type_id:string,
1209
1252
  type: string,