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.indexOf('/workbench/') === -1) {
    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);
}