|
5 | 5 | <meta name="robots" content="noindex, nofollow">
|
6 | 6 | <title>Desktop Metrics logger with Google Analytics</title>
|
7 | 7 | <script>
|
8 |
| - let gaReady = false; |
9 |
| - function installGoogleAnalytics(analyticsID) { |
10 |
| - if(!analyticsID || gaReady){ |
| 8 | + const SAVED_GOOGLE_ANALYTICS_DESKTOP_KEY = "SAVED_GOOGLE_ANALYTICS_DESKTOP_KEY"; |
| 9 | + let gaReady = false, loadedGoogleAnalyticsID; |
| 10 | + |
| 11 | + const url = window.location.href; |
| 12 | + const urlParams = new URLSearchParams(window.location.search); |
| 13 | + const reloadedOnce = urlParams.get('reloadedOnce'); |
| 14 | + function installGoogleAnalytics() { |
| 15 | + if(gaReady){ |
11 | 16 | return ;
|
12 | 17 | }
|
| 18 | + const analyticsID = localStorage.getItem(SAVED_GOOGLE_ANALYTICS_DESKTOP_KEY); |
| 19 | + if(!analyticsID) { |
| 20 | + console.error("No analytics id found to init ga, waiting for phcode to send ids to init..."); |
| 21 | + return; |
| 22 | + } |
| 23 | + loadedGoogleAnalyticsID = analyticsID; |
13 | 24 | // ga primer scripts
|
14 | 25 | window.dataLayer = window.dataLayer || [];
|
15 | 26 | window.gtag = function() {
|
|
29 | 40 | gaReady = true;
|
30 | 41 | }
|
31 | 42 |
|
| 43 | + installGoogleAnalytics(); |
| 44 | + |
| 45 | + function reloadOnce() { |
| 46 | + // we have to do this as ga seems to miss points in real time analytics dashboard if ga is not inited |
| 47 | + // at page load time. So we reload once to make metrics show up in ga real time dashboard. |
| 48 | + let currentUrl = new URL(window.location); |
| 49 | + if (!currentUrl.searchParams.has('reloadedOnce')) { |
| 50 | + currentUrl.searchParams.set('reloadedOnce', 'true'); |
| 51 | + window.location.href = currentUrl.href; |
| 52 | + } |
| 53 | + } |
| 54 | + |
| 55 | + |
32 | 56 | async function processRequest(event) {
|
33 | 57 | const payload = event.payload;
|
34 |
| - if(!gaReady) { |
35 |
| - installGoogleAnalytics(payload.analyticsID); |
| 58 | + if(payload.analyticsID && loadedGoogleAnalyticsID !== payload.analyticsID) { |
| 59 | + localStorage.setItem(SAVED_GOOGLE_ANALYTICS_DESKTOP_KEY, payload.analyticsID); |
| 60 | + installGoogleAnalytics(); |
36 | 61 | }
|
37 | 62 |
|
38 | 63 | for(let eventPayload of payload.events) {
|
|
42 | 67 | 'value': eventPayload.count
|
43 | 68 | });
|
44 | 69 | }
|
| 70 | + if(!reloadedOnce) { |
| 71 | + setTimeout(reloadOnce, 1000); |
| 72 | + } |
45 | 73 | }
|
46 | 74 | window.__TAURI__.event.listen("health", processRequest);
|
47 | 75 | setInterval(async ()=>{
|
|
0 commit comments