import {ElMessage, ElMessageBox} from 'element-plus'

let lastSrcs;

const scriptReg = /\<script.*src=["'](?<src>[^"']+)/gm;

// 获取最新的 script src
async function extractNewScripts() {
  const html = await fetch("/?_timestamp=" + Date.now()).then((res) =>
    res.text()
  );
  scriptReg.lastIndex = 0;
  let result = [];
  let match;
  while ((match = scriptReg.exec(html))) {
    result.push(match.groups.src);
    
  }
  return result;
}
// 判断是否需要更新
async function needUpdate() {
  const newScripts = await extractNewScripts();
  if (!lastSrcs) {
    lastSrcs = newScripts;
    return false;
  }
  let result = false;
  if (newScripts.length !== lastSrcs.length) {
    result = true;
  } else {
    for (let i = 0; i < newScripts.length; i++) {
      if (newScripts[i] !== lastSrcs[i]) {
        result = true;
        break;
      }
    }
  }
  lastSrcs = newScripts;
  return result;
}
// 间隔五分钟
const DURATION = 1000 * 6 ;
function autoRefresh() {
  setTimeout(async () => {
    const willUpdate = await needUpdate();
    if (willUpdate) {
    ElMessageBox.confirm('点击确定刷新页面,取消则继续使用旧版本', '提示!', {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning'
          }).then(async () => {
      location.reload();
          })
    }
    autoRefresh();
  }, DURATION);
}

autoRefresh();