jsloader.js 2.62 KB
axios.get('/loader.json').then(function(result) {
  var jsPromise = []
  var jsPromiseName = []
  var cssPromise = []
  var cssPromiseName = []
  var finishedTask = 0
  var nothingTask = 0
  window.sessionStorage.clear()
  window.sessionStorage.setItem('jsloader_version', result.data.version)
  if (result.data.version === 'debug' || result.data.version !== window.localStorage.getItem('jsloader_version')) {
    var user_name = window.localStorage.getItem('user_name')
    var permission = window.localStorage.getItem('permission')
    var password = window.localStorage.getItem('password')
    window.localStorage.clear()
    if (user_name !== null) window.localStorage.setItem('user_name', user_name)
    if (permission !== null) window.localStorage.setItem('permission', permission)
    if (password !== null) window.localStorage.setItem('password', password)
  }
  window.sessionStorage.setItem('template_', JSON.stringify(result.data.template))
  for (index in result.data.js) {
    if (window.localStorage.getItem('js_' + index) === null) {
      jsPromise.push(axios.get(result.data.js[index]))
      jsPromiseName.push(index)
    }
  }
  for (index in result.data.css) {
      if (window.localStorage.getItem('css_' + index) === null) {
        cssPromise.push(axios.get(result.data.css[index]))
        cssPromiseName.push(index)
      }
  }
  Promise.all(cssPromise).then(values => {
    for (i in values) {
      window.localStorage.setItem('css_' + cssPromiseName[i], values[i].data)
    }
    for (ind in result.data.css) {
      var child = document.createElement('style')
      child.innerHTML = window.localStorage.getItem('css_' + ind)
      document.head.appendChild(child)
    }
    if (values.length > 0) {
      finishedTask = finishedTask + 1
    } else {
      nothingTask = nothingTask + 1
    }
  })
  Promise.all(jsPromise).then(values => {
    for (i in values) {
      window.localStorage.setItem('js_' + jsPromiseName[i], values[i].data)
    }
    for (ind in result.data.js) {
      var child = document.createElement('script')
      child.text = window.localStorage.getItem('js_' + ind)
      document.body.appendChild(child)
    }
    if (values.length > 0) {
      finishedTask = finishedTask + 1
    } else {
      nothingTask = nothingTask + 1
    }
  })
  new Promise(async function (resolve) {
    while (finishedTask < 2) {
      await new Promise(resolve => { setTimeout(resolve,1000) })
      if (nothingTask === 2) break
    }
    window.localStorage.setItem('jsloader_version', window.sessionStorage.getItem('jsloader_version'))
    if (finishedTask === 2) {
      window.location.reload()
    }
    resolve()
  }).then(function(){})
})