import debounce from 'lodash/debounce'
import { toast } from './toast'

const OFFLINE_DELAY = 1000

const notifyOffline = debounce(() => {
  toast.say('You seem to be offline. You can still read toots while offline.')
}, OFFLINE_DELAY)

let oldTheme
let meta = process.browser && document.querySelector('meta[name="theme-color"]')

const observe = online => {
  if (!localStorage.store_currentInstance) {
    return // only show notification for logged-in users
  }
  document.body.classList.toggle('offline', !online)
  if (online) {
    meta.content = oldTheme || window.__themeColors['default']
  } else {
    let offlineThemeColor = window.__themeColors.offline
    if (meta.content !== offlineThemeColor)
    oldTheme = meta.content
    meta.content = offlineThemeColor
    notifyOffline()
  }
}

if (!navigator.onLine) {
  observe(false)
}

window.addEventListener('offline', () => observe(false));
window.addEventListener('online', () => observe(true));