@everymatrix/casino-footer-v2 0.0.357 → 0.0.359

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/index.html CHANGED
@@ -90,9 +90,28 @@
90
90
  </div>
91
91
  <h1 class="header__name"><span>WEBCOMPONENT:</span> casino-footer-v2</h1>
92
92
  </header>
93
+ <casino-footer-v2
94
+ endpoint="https://bahcom-stage.everymatrix.com/apijson/en/footer-raw-data?env=stage"
95
+ userendpoint="https://betathome-de-stage-api.stage.norway.everymatrix.com/v1"
96
+ session="d919449f-5f5a-4c6f-92c2-29fb947c3f33"
97
+ userid="4229869"
98
+ env="local"
99
+ languageselectorenabled="true"
100
+ languagelist="de, en, sl, pl, hr, hu, it, sr, pt"
101
+ languagedisplaytype="name"
102
+ sessiontimerenabled="true"
103
+ panicbuttonenabled="true"
104
+ clockenabled="true"
105
+ clocksecondsenabled="true"
106
+ clockcustomformat="LTS"
107
+ lang="de"
108
+ ></casino-footer-v2>
93
109
 
94
110
  <casino-footer-v2
95
- endpoint="https://bahcom-stage.everymatrix.com/apijson"
111
+ endpoint="https://bahcom-stage.everymatrix.com/apijson/en/footer-raw-data?env=stage"
112
+ userendpoint="https://betathome-de-stage-api.stage.norway.everymatrix.com/v1"
113
+ session="d919449f-5f5a-4c6f-92c2-29fb947c3f33"
114
+ userid="4229869"
96
115
  lang="en"
97
116
  env="stage"
98
117
  clocktext="Time"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@everymatrix/casino-footer-v2",
3
- "version": "0.0.357",
3
+ "version": "0.0.359",
4
4
  "main": "dist/casino-footer-v2.js",
5
5
  "svelte": "src/index.ts",
6
6
  "scripts": {
@@ -36,5 +36,5 @@
36
36
  "publishConfig": {
37
37
  "access": "public"
38
38
  },
39
- "gitHead": "0fde12b49f5b6381585e98c841da6292a9be010d"
39
+ "gitHead": "42c2b777ac00a1d72d7ceb43a0b9029e0b024180"
40
40
  }
@@ -4,6 +4,7 @@
4
4
  import '@everymatrix/casino-footer-section';
5
5
  import '@everymatrix/panic-button';
6
6
 
7
+ import { onMount } from 'svelte';
7
8
  import moment from 'moment';
8
9
  import { checkSession } from 'rvhelper';
9
10
  import { _, addNewMessages, setLocale } from './i18n';
@@ -30,7 +31,7 @@
30
31
  export let userendpoint:string = '';
31
32
  export let panicbuttonenabled:string = 'true';
32
33
  export let sessiontimerenabled = 'true'; // 'true' to enable, anything to disable
33
-
34
+
34
35
  let gameVendorsLinksTitle:string = '';
35
36
  let gameVendorsRepeater:Array<Object> = [];
36
37
  let paymentLinksTitle:string = '';
@@ -68,54 +69,56 @@
68
69
  let languagePackLoaded:boolean = false;
69
70
 
70
71
  let timeString:string = '';
72
+ let clockInterval:any;
73
+ let timerInterval:any;
71
74
 
72
75
  let customStylingContainer:HTMLElement;
73
76
 
74
77
  Object.keys(CasinoFooterTranslations).forEach((item:any) => {
75
78
  addNewMessages(item, CasinoFooterTranslations[item]);
76
79
  });
77
-
80
+
78
81
  // needed for session timer
79
82
  const setSession = ():void => {
80
83
  checkSession(userendpoint, session).then((res:any) => {
81
84
  sessionID = res.Guid;
82
85
  playerID = res.UserID;
83
86
  isLoggedIn = true;
87
+ setSessionTimer(res);
84
88
  }, (err:any) => {
85
89
  isLoggedIn = false;
86
90
  console.error('Error while checking the session - ', err)
87
91
  });
88
92
  }
89
93
 
90
- const setSessionTimer = ():void => {
94
+ const setSessionTimer = (sessionData):void => {
91
95
  // using Date instead of moment because they recommend in their docs to stop using it for new projects
92
- const sessionData = JSON.parse(localStorage.session);
93
- const loginTime = new Date(sessionData.Login);
94
- const timezoneOffsetHours = new Date().getTimezoneOffset() / 60;
95
- let currentTime = new Date();
96
- let milisecondDifference = currentTime.getTime() - loginTime.getTime();
96
+ const loginTime = new Date(sessionData.Login);
97
+ const timezoneOffsetHours = new Date().getTimezoneOffset() / 60;
98
+ let currentTime = new Date();
99
+ let milisecondDifference = currentTime.getTime() - loginTime.getTime();
97
100
 
98
- let hours = Math.floor(milisecondDifference / 3600000) + timezoneOffsetHours;
99
- let minutes = Math.floor(milisecondDifference % 3600000 / 60000);
100
- let seconds = Math.floor(milisecondDifference % 60000 / 1000);
101
+ let hours = Math.floor(milisecondDifference / 3600000) + timezoneOffsetHours;
102
+ let minutes = Math.floor(milisecondDifference % 3600000 / 60000);
103
+ let seconds = Math.floor(milisecondDifference % 60000 / 1000);
101
104
 
102
- setInterval(() => {
103
- hours = Math.floor(milisecondDifference / 3600000) + timezoneOffsetHours;
104
- minutes = Math.floor(milisecondDifference % 3600000 / 60000);
105
- seconds = Math.floor(milisecondDifference % 60000 / 1000);
105
+ timerInterval = setInterval(() => {
106
+ hours = Math.floor(milisecondDifference / 3600000) + timezoneOffsetHours;
107
+ minutes = Math.floor(milisecondDifference % 3600000 / 60000);
108
+ seconds = Math.floor(milisecondDifference % 60000 / 1000);
106
109
 
107
- timeString = `${hours > 9 ? hours : '0' + hours}:${minutes > 9 ? minutes : '0' + minutes}:${seconds > 9 ? seconds : '0' + seconds}`;
110
+ timeString = `${hours > 9 ? hours : '0' + hours}:${minutes > 9 ? minutes : '0' + minutes}:${seconds > 9 ? seconds : '0' + seconds}`;
108
111
 
109
- milisecondDifference += 1000;
110
- },1000);
112
+ milisecondDifference += 1000;
113
+ }, 1000);
111
114
  }
112
115
 
113
116
  const refreshClock = ():void => {
114
- setInterval(() => {
117
+ clockInterval = setInterval(() => {
115
118
  clockDisplay();
116
- }, refreshRate);
119
+ }, refreshRate);
117
120
  }
118
-
121
+
119
122
  const clockDisplay = ():void => {
120
123
  const format = clockcustomformat != 'false' ? clockcustomformat : `hh:mm${clocksecondsenabled === "true" ? ':ss' : ''} (UTC Z)`;
121
124
  time = moment().format(format);
@@ -134,20 +137,20 @@
134
137
  let licenseHeadScriptSrc,
135
138
  licenseScriptBody,
136
139
  licenseEvent;
137
- ({
138
- gameVendorsLinksTitle,
139
- gameVendorsRepeater,
140
- paymentLinksTitle,
141
- paymentMethodsRepeater,
142
- sponsorsLinksTitle,
143
- sponsorsRepeater,
144
- helpLinksTitle,
145
- helpLinksRepeater,
146
- licensesLinksTitle,
147
- licensesRepeater,
148
- socialLinksTitle,
149
- socialLinksRepeater,
150
- copyright,
140
+ ({
141
+ gameVendorsLinksTitle,
142
+ gameVendorsRepeater,
143
+ paymentLinksTitle,
144
+ paymentMethodsRepeater,
145
+ sponsorsLinksTitle,
146
+ sponsorsRepeater,
147
+ helpLinksTitle,
148
+ helpLinksRepeater,
149
+ licensesLinksTitle,
150
+ licensesRepeater,
151
+ socialLinksTitle,
152
+ socialLinksRepeater,
153
+ copyright,
151
154
  licenseDesc,
152
155
  licenseHeadScriptSrc,
153
156
  licenseScriptBody,
@@ -155,29 +158,29 @@
155
158
  language : languages
156
159
  } = receivedFooterData);
157
160
 
158
- if (languages) {
161
+ if (languages) {
159
162
  languagePackLoaded = true;
160
163
  updateLanguageDisplayName();
161
164
  }
162
-
165
+
163
166
  if (licenseHeadScriptSrc?.length > 0) {
164
167
  headScript = true;
165
168
  licenseScriptSrc = licenseHeadScriptSrc;
166
169
  }
167
-
170
+
168
171
  if (licenseScriptBody?.length > 0) {
169
172
  licenseScript = licenseScriptBody;
170
173
  }
171
174
 
172
175
  window.postMessage({ type: licenseEvent }, window.location.href);
173
176
 
174
- window.postMessage({
175
- type: 'FooterData',
176
- gameVendorsRepeater,
177
- paymentMethodsRepeater,
178
- sponsorsRepeater,
179
- helpLinksRepeater,
180
- licensesRepeater,
177
+ window.postMessage({
178
+ type: 'FooterData',
179
+ gameVendorsRepeater,
180
+ paymentMethodsRepeater,
181
+ sponsorsRepeater,
182
+ helpLinksRepeater,
183
+ licensesRepeater,
181
184
  socialLinksRepeater
182
185
  }, window.location.href);
183
186
  }).catch((err:any) => {
@@ -224,12 +227,15 @@
224
227
  const toggleLanguageDrawer = ():void => {
225
228
  languageDrawer.classList.toggle('hidden');
226
229
  }
227
-
228
- const overlayOptionTrigger = (e):void => {
230
+
231
+ const overlayOptionTrigger = (e:any):void => {
229
232
  let option = e.target.closest('.overlayLanguageOption');
233
+
230
234
  selectedLanguage = option.getAttribute('data-lang');
235
+
231
236
  changeLanguage();
232
237
  updateLanguageDisplayName();
238
+
233
239
  languageDrawer.classList.toggle('hidden');
234
240
  };
235
241
 
@@ -238,9 +244,11 @@
238
244
 
239
245
  languages.forEach((l:any, i:number) => {
240
246
  if (l.code == selectedLanguage.toLowerCase()) {
241
- matchFound = true;
242
247
  let langName:string = '';
248
+
249
+ matchFound = true;
243
250
  currentLanguageFlag = l.flag_icon_editable;
251
+
244
252
  switch (languagedisplaytype) {
245
253
  case 'name':
246
254
  langName = l.name;
@@ -254,6 +262,7 @@
254
262
  langName = l.code;
255
263
  break;
256
264
  }
265
+
257
266
  languageDisplayName = langName;
258
267
  }
259
268
  });
@@ -268,14 +277,20 @@
268
277
  languagesArray = languagesArray.map((language:string) => language.toUpperCase());
269
278
  }
270
279
 
280
+ onMount(() => {
281
+ return () => {
282
+ clearInterval(clockInterval);
283
+ clearInterval(timerInterval)
284
+ };
285
+ });
286
+
271
287
  $: lang && setLocale(lang);
272
288
  $: languageslist && setLanguagesArray();
273
- $: session && userid && endpoint && setSession();
274
- $: isLoggedIn && lang && setSessionTimer();
289
+ $: session && userid && userendpoint && setSession();
275
290
  $: endpoint && lang && env && getCmsData();
276
291
  $: clockenabled !== 'false' && clocksecondsenabled && clockcustomformat && clockDisplay();
277
292
  $: clockenabled !== 'false' && clocksecondsenabled && (refreshRate = clocksecondsenabled == "true" ? 1000 : 60000) && refreshClock();
278
- $: lang && (selectedLanguage = lang) && languages && (languages.length > 0) && updateLanguageDisplayName();
293
+ $: lang && (selectedLanguage = lang) && languages && (languages.length > 0) && updateLanguageDisplayName();
279
294
  $: clientstyling && setClientStyling();
280
295
  $: clientstylingurl && setClientStylingURL();
281
296
 
@@ -317,7 +332,7 @@
317
332
  </div>
318
333
  </div>
319
334
  {/if}
320
- <!-- end vendors section -->
335
+ <!-- end vendors section -->
321
336
  <!-- start payments section -->
322
337
  {#if paymentMethodsRepeater}
323
338
  <div class="GridRow">
@@ -330,10 +345,10 @@
330
345
  </div>
331
346
  {/if}
332
347
  <!-- end payments section -->
333
-
348
+
334
349
  <!-- start panic button -->
335
- {#if panicbuttonenabled === "true"}
336
- <panic-button
350
+ {#if panicbuttonenabled === "true" && isLoggedIn}
351
+ <panic-button
337
352
  customtext = "Hold the button for 3 seconds to take 24 hours instant lock"
338
353
  alternativestyling="true"
339
354
  {lang}
@@ -353,7 +368,7 @@
353
368
  <!-- start detailed licenses section -->
354
369
  <div class="LicenseDesc">
355
370
  {#if licenseDesc}
356
- <div class="DetailedLicenses" use:setContent={licenseDesc}></div>
371
+ <div class="DetailedLicenses" use:setContent={licenseDesc}></div>
357
372
  <div class="DetailedCustomLicenses" use:setContent={licenseScript}></div>
358
373
  <div>
359
374
  <!-- start clock section -->
@@ -365,8 +380,8 @@
365
380
  {/if}
366
381
  <!-- end clock section -->
367
382
  <!-- start session timer section -->
368
-
369
- {#if sessiontimerenabled && localStorage.session}
383
+
384
+ {#if sessiontimerenabled}
370
385
  <div class="sessionTimerContainer">
371
386
  <span class="SessionText">{$_('casinoFooter.sessionTimer')} {timeString}</span>
372
387
  </div>
@@ -379,7 +394,7 @@
379
394
  </div>
380
395
  {/if}
381
396
  <!-- end license section -->
382
-
397
+
383
398
  <!-- start sponsors section -->
384
399
  {#if sponsorsRepeater}
385
400
  <div class="GridRow">
@@ -394,7 +409,7 @@
394
409
  </div>
395
410
  {/if}
396
411
  <!-- end sponsors section -->
397
-
412
+
398
413
  <!-- start social section -->
399
414
  {#if socialLinksRepeater}
400
415
  <div class="GridRow">
@@ -405,18 +420,18 @@
405
420
  </div>
406
421
  {/if}
407
422
  <!-- end social section -->
408
-
423
+
409
424
  <!-- start language selector -->
410
- {#if (languageselectorenabled==="true" && languagePackLoaded && selectedLanguage)}
425
+ {#if (languageselectorenabled==="true" && languagePackLoaded && selectedLanguage)}
411
426
  <div class="GridRow">
412
- <div class="languageSelectorContainer">
427
+ <div class="languageSelectorContainer">
413
428
  <!-- traditional dropdown option for screenreader users. Works the same way as the old language selector. Display: none -->
414
- <select bind:value={selectedLanguage} class="Item ItemLanguage" on:change={()=>changeLanguage()}>
415
- {#each languagesArray as operatorLanguage}
416
- <option value={operatorLanguage} selected>{operatorLanguage}</option>
417
- {/each}
418
- </select>
419
-
429
+ <select bind:value={selectedLanguage} class="Item ItemLanguage" on:change={()=>changeLanguage()}>
430
+ {#each languagesArray as operatorLanguage}
431
+ <option value={operatorLanguage} selected>{operatorLanguage}</option>
432
+ {/each}
433
+ </select>
434
+
420
435
  <!-- Custom dropdown in order to be able to display country flags -->
421
436
  <div class="languageSelectorOverlay">
422
437
  <button class="drawerButton" value="{selectedLanguage}" on:click={toggleLanguageDrawer}><img class="languageFlag" src={currentLanguageFlag}>{languageDisplayName}
@@ -433,16 +448,16 @@
433
448
  </div>
434
449
  </div>
435
450
  </div>
436
- </div>
451
+ </div>
437
452
  {/if}
438
453
  <!-- end language selector -->
439
-
454
+
440
455
  {#if copyright}
441
456
  <!-- start copyright section -->
442
457
  <div class="CopyrightAreaRights CopyrightArea" use:setContent={copyright}></div>
443
458
  <!-- end copyright section -->
444
459
  {/if}
445
-
460
+
446
461
  </div>
447
462
  </div>
448
463
  {/if}
@@ -466,7 +481,7 @@
466
481
  position: relative;
467
482
  }
468
483
 
469
- .FooterSide {
484
+ .FooterSide {
470
485
  display: flex;
471
486
  flex-direction: column;
472
487
  position: absolute;
@@ -515,7 +530,7 @@
515
530
  .DetailedLicenses {
516
531
  font-size: 10px;
517
532
  color: var(--emfe-w-color-gray-150, #828282);
518
-
533
+
519
534
  div {
520
535
  text-align: left;
521
536
  white-space: pre-line;
@@ -608,7 +623,7 @@
608
623
  top: 30px;
609
624
  padding: 6px 0;
610
625
  left: 3.9px;
611
-
626
+
612
627
  &.hidden {
613
628
  display: none;
614
629
  }