36 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { fireEvent } from "card-tools/src/event";
 | |
| 
 | |
| export const BrowserModBrowserMixin = (C) => class extends C {
 | |
| 
 | |
|     constructor() {
 | |
|         super();
 | |
|         document.addEventListener("visibilitychange", () => this.sensor_update());
 | |
|         window.addEventListener("location-changed", () => this.sensor_update());
 | |
| 
 | |
|         window.setInterval(() => this.sensor_update(), 10000);
 | |
|     }
 | |
| 
 | |
|     sensor_update() {
 | |
|         window.queueMicrotask( async () => {
 | |
|             const battery = navigator.getBattery ? await navigator.getBattery() : undefined;
 | |
|             this.sendUpdate({browser: {
 | |
|                 path: window.location.pathname,
 | |
|                 visibility: document.visibilityState,
 | |
|                 userAgent: navigator.userAgent,
 | |
|                 currentUser: this._hass &&this._hass.user && this._hass.user.name,
 | |
|                 fullyKiosk: this.isFully,
 | |
|                 width: window.innerWidth,
 | |
|                 height: window.innerHeight,
 | |
|                 battery_level: this.isFully ? window.fully.getBatteryLevel() : battery ? battery.level*100 : undefined,
 | |
|                 charging: this.isFully ? window.fully.isPlugged() : battery ? battery.charging : undefined,
 | |
|             }});
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     do_navigate(path) {
 | |
|         if (!path) return;
 | |
|         history.pushState(null, "", path);
 | |
|         fireEvent("location-changed", {}, document.querySelector("home-assistant"));
 | |
|     }
 | |
| }
 |