const FLAG_OPEN_IN_DESKTOP = 'flagOpenInDesktopApp'
const TIMESTAMP_OPEN_IN_DESKTOP = 'timeOpenInDesktopApp'
const TIMEOUT_OPEN_IN_DESKTOP = 24 * 60 * 60 * 1000

export function tryOpenInDesktopApp (protocol: string) {
  if (!window.location.origin) {
    return
  }

  // Once for a new TAB
  if (
    window.sessionStorage &&
    (window.sessionStorage.getItem(FLAG_OPEN_IN_DESKTOP) === 'true' ||
      window.localStorage.getItem(FLAG_OPEN_IN_DESKTOP) === 'true')
  ) {
    return
  }
  window.sessionStorage.setItem(FLAG_OPEN_IN_DESKTOP, 'true')

  // Once in timeout
  if (window.localStorage && window.localStorage.getItem(TIMESTAMP_OPEN_IN_DESKTOP)) {
    const timeStr = window.localStorage.getItem(TIMESTAMP_OPEN_IN_DESKTOP)
    const time = Number(timeStr)
    const now = Date.now()
    if (now - time < TIMEOUT_OPEN_IN_DESKTOP) {
      return
    }
  }
  window.localStorage.setItem(TIMESTAMP_OPEN_IN_DESKTOP, Date.now().toString())

  // Filter only URLs inside a workbench
  const link = window.location.toString()

  if (!link.includes('/workbench/')) {
    return
  }

  const deepLink = link.replace('http://', protocol).replace('https://', protocol)

  const iframe = document.createElement('iframe')
  iframe.style.display = 'none'
  iframe.src = deepLink

  document.body.appendChild(iframe)
}
