@everymatrix/casino-tournaments-controller 0.0.195 → 0.0.199

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@everymatrix/casino-tournaments-controller",
3
- "version": "0.0.195",
3
+ "version": "0.0.199",
4
4
  "main": "dist/casino-tournaments-controller.js",
5
5
  "svelte": "src/index.ts",
6
6
  "scripts": {
@@ -29,11 +29,11 @@
29
29
  "typescript": "^3.9.3"
30
30
  },
31
31
  "dependencies": {
32
- "@everymatrix/casino-tournaments-details": "^0.0.195",
33
- "@everymatrix/casino-tournaments-filter-controller": "^0.0.195",
34
- "@everymatrix/casino-tournaments-list-controller": "^0.0.195",
35
- "@everymatrix/casino-tournaments-page-controller": "^0.0.195",
36
- "@everymatrix/casino-tournaments-thumbnail-controller": "^0.0.195",
32
+ "@everymatrix/casino-tournaments-details": "^0.0.199",
33
+ "@everymatrix/casino-tournaments-filter-controller": "^0.0.199",
34
+ "@everymatrix/casino-tournaments-list-controller": "^0.0.199",
35
+ "@everymatrix/casino-tournaments-page-controller": "^0.0.199",
36
+ "@everymatrix/casino-tournaments-thumbnail-controller": "^0.0.199",
37
37
  "cross-env": "^7.0.3",
38
38
  "sirv-cli": "^1.0.0",
39
39
  "svelte": "^3.0.0"
@@ -41,5 +41,5 @@
41
41
  "publishConfig": {
42
42
  "access": "public"
43
43
  },
44
- "gitHead": "12c5cb5e4f2310b2fa559d0a1c99f4cf29de70c8"
44
+ "gitHead": "92884caad124fb581a2825d771ad76a424b2c98c"
45
45
  }
@@ -5,6 +5,7 @@
5
5
  import { getDevice } from 'rvhelper';
6
6
  import { _, addNewMessages, setLocale, setupI18n } from './i18n';
7
7
  import { TournamentsControllerTranslations } from './translations';
8
+ import { EventSourcePolyfill } from 'event-source-polyfill';
8
9
 
9
10
  import '@everymatrix/casino-tournaments-filter-controller';
10
11
  import '@everymatrix/casino-tournaments-list-controller';
@@ -37,6 +38,7 @@
37
38
  let userAgent:string = window.navigator.userAgent;
38
39
  let isLoading:boolean = true;
39
40
  let filtersLoaded:boolean = false;
41
+ let startingTournamentUpdater:boolean = false;
40
42
 
41
43
  let filtersArray = 'All,Scheduled,Ongoing,Finished';
42
44
  let tournamentsNumber:number = 0;
@@ -47,6 +49,8 @@
47
49
  let activeFilters:Array<string> = [];
48
50
 
49
51
  let lastMonthDate:any = new Date();
52
+ let tournamentsSearchParams:string;
53
+ let tournamentsUpdateEventSource:EventSourcePolyfill;
50
54
 
51
55
  lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
52
56
  lastMonthDate = lastMonthDate.toISOString().substring(0, 10);
@@ -97,6 +101,7 @@
97
101
  tournamentsUrl.searchParams.append('sortOrder', 'desc');
98
102
  tournamentsUrl.searchParams.append('language', lang);
99
103
 
104
+
100
105
  if (activeFilters.length > 0 && activeFilters[0] != 'All') {
101
106
  let state = activeFilters.map((item:any) => matchStatus(item)).join("|");
102
107
 
@@ -104,7 +109,6 @@
104
109
  } else {
105
110
  tournamentsUrl.searchParams.append('filter', `StartTimeAfter=${lastMonthDate}`);
106
111
  }
107
-
108
112
  reqHeaders.append('platform', getDevice(userAgent));
109
113
  reqHeaders.append('sortType', sortByStatus);
110
114
 
@@ -122,6 +126,7 @@
122
126
  .then((res:any) => res.json())
123
127
  .then((res:any) => {
124
128
  tournamentsNumber = 0;
129
+ tournamentsSearchParams = tournamentsUrl.searchParams.toString();
125
130
 
126
131
  setTimeout(() => {
127
132
  tournamentsNumber = res.total;
@@ -131,13 +136,55 @@
131
136
  } else {
132
137
  allTournamentsShown = false;
133
138
  }
134
-
139
+ if(!startingTournamentUpdater){
140
+ startupTouramentDataChangeListener();
141
+ }
135
142
  window.postMessage({ type: 'TournamentList', tournamentList: res.items }, window.location.href);
136
-
137
143
  isLoading = false;
138
144
  }, 50);
139
145
  });
140
146
  }
147
+ const tournamentsUpdateMessageHandler = (message: any)=>{
148
+ let messageData = message.data;
149
+ if(messageData){
150
+ try{
151
+ let updateTourData = JSON.parse(messageData);
152
+ if(!updateTourData || !updateTourData.Item){
153
+ return;
154
+ }
155
+ let updateInfo = updateTourData.Item;
156
+ if(updateTourData.MessageType == "TournamentUpdate"){
157
+ window.postMessage({type: 'UpdateTournamentView', tournamentData: updateInfo}, window.location.href);
158
+ }
159
+
160
+ if(updateTourData.MessageType == 'TournamentDelete'){
161
+ window.postMessage({type: 'UpdateTournamentListView', tournamentId: updateTourData.id}, window.location.href);
162
+ }
163
+ }catch(err){
164
+ console.error(err);
165
+ }
166
+ }
167
+ }
168
+ const startupTouramentDataChangeListener = ()=>{
169
+ startingTournamentUpdater = true;
170
+ setTimeout(()=>{
171
+ startingTournamentUpdater = false;//to make sure only one eventsource work at the same time when query parameter changed
172
+ }, 1000)
173
+ if(tournamentsUpdateEventSource){
174
+ tournamentsUpdateEventSource.removeEventListener('message', tournamentsUpdateMessageHandler);
175
+ tournamentsUpdateEventSource.close();
176
+ }
177
+ let endpointURL:String = `${endpoint}/tournaments/updates?HeartBeat=false&${tournamentsSearchParams}`;
178
+ tournamentsUpdateEventSource = new EventSourcePolyfill(endpointURL, {
179
+ headers: {
180
+ 'accept': 'text/event-stream',
181
+ 'X-SessionID': session
182
+ }
183
+ });
184
+ if(typeof(tournamentsUpdateEventSource) != "undefined"){
185
+ tournamentsUpdateEventSource.addEventListener('message', tournamentsUpdateMessageHandler);
186
+ }
187
+ }
141
188
 
142
189
  const showMoreAction = () => {
143
190
  tournamentsShownNumber += parseInt(showmorestep, 10);
@@ -201,9 +248,9 @@
201
248
 
202
249
  onMount(() => {
203
250
  window.addEventListener('message', messageHandler, false);
204
-
205
251
  return () => {
206
252
  window.removeEventListener('message', messageHandler);
253
+ tournamentsUpdateEventSource.removeEventListener('message', tournamentsUpdateMessageHandler);
207
254
  }
208
255
  });
209
256