spunky / Offline monitor

// ==UserScript==
// @name         Offline monitor
// @namespace    userScript/spunky
// @version      0.8
// @description  Logs offline state
// @author       spunky
// @match        *
// @grant        GM_notification
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    console.log('offline logger started', Date());
    
    const formPrefix = '%c';

    let startTimestamp = null;

    window.addEventListener('offline', () => {
        startTimestamp = Date.now();
        const message = `OFFLINE MONITOR -> OFFLINE ${Date()}`;
        const formatting = 'background: red; color: white; font-size: x-large';
        
        console.log(`${formPrefix}${message}`, formatting);
        GM_notification('OFFLINE> Wifi disconnected', message);
    });
    window.addEventListener('online', () => {
        const duration = Date.now() - startTimestamp;
        const message = `OFFLINE MONITOR -> ONLINE || Offline duration: ${duration / 1000}sec (${duration / 1000 / 60} min)`;
        const formatting = 'background: green; color: white';
        
        console.log(`${formPrefix}${message}`, formatting);
        GM_notification('ONLINE> Wifi connected', message);
    });
})();