Bladeren bron

Serialize window.screen

rigwild 6 jaren geleden
bovenliggende
commit
6baa993528
2 gewijzigde bestanden met toevoegingen van 8 en 2 verwijderingen
  1. 3 0
      src/functions.js
  2. 5 2
      src/store/actions.js

+ 3 - 0
src/functions.js

@@ -69,3 +69,6 @@ export const shuffleArray = array => {
  */
 export const buildConfig = (defaultConfig = {}, scenesConfig = {}) =>
   sceneName => Object.assign(defaultConfig, scenesConfig[sceneName])
+
+// Serialize non-serializable objects (like window.screen)
+export const serialize = obj => Object.keys(Object.getPrototypeOf(obj)).reduce((acc, x) => ((acc[x] = obj[x]), acc), {})

+ 5 - 2
src/store/actions.js

@@ -1,6 +1,6 @@
 import Vue from 'vue'
 import router from '../router'
-import { API_ROUTES, buildURI, buildWsURI, delay } from '../functions'
+import { API_ROUTES, buildURI, buildWsURI, delay, serialize } from '../functions'
 
 export default {
   setGdprValidated({ state, commit }) {
@@ -64,6 +64,9 @@ export default {
   },
 
   async collectUserData({ state, getters }) {
+    let screen = serialize(window.screen)
+    screen.orientation = serialize(window.screen.orientation)
+
     return fetch(getters.getHostURI + API_ROUTES.dataCollect(), {
       method: 'POST',
       headers: {
@@ -71,7 +74,7 @@ export default {
       },
       body: JSON.stringify({
         uuid: state.uuid,
-        viewport: Object.keys(Object.getPrototypeOf(window.screen)).reduce((acc, x) => ((acc[x] = window.screen[x]), acc), {})
+        screen
       })
     })
   },