UNPKG

version-rocket

Version:

Tools to check version monitoring (updates) for web application. web 应用版本监测(更新)工具

88 lines (87 loc) 3.5 kB
import versionBg from './../assets/version-bg.png'; import './version-tip-dialog.css'; import { setVersionTipTheme } from './versionTipTheme'; import { unCheckVersion } from '../index'; const defaultParams = { title: 'Update', description: 'is available', buttonText: 'Refresh', }; export const versionTipDialog = (params) => { const dialogElement = document.querySelector('#version-rocket'); if (dialogElement) return; const template = ` <div id="version-rocket"> <div class="version-area"> ${params.primaryColor || params.rocketColor ? `<div class="version-img">${setVersionTipTheme(params.primaryColor, params.rocketColor)}</div>` : `<img class="version-img" src="${params.imageUrl || versionBg}" alt="version" />`} <div class="version-content"> <div class="version-title"> ${params.title || defaultParams.title} </div> <div class="version-subtitle"> ${params.description || (params.newVersion ? `V ${params.newVersion} ${defaultParams.description}` : `A new version ${defaultParams.description}`)} </div> <div style="${params.primaryColor ? `background-color: ${params.primaryColor};` : ''} ${params.buttonStyle || ''}" class="refresh-button"> ${params.buttonText || defaultParams.buttonText} </div> ${params.cancelButtonText ? `<div class="cancel-button"> ${params.cancelButtonText} </div>` : ''} </div> </div> </div>`; let rootNode = document.createElement('div'); rootNode.innerHTML = template; document.body.appendChild(rootNode); // refresh const refreshBtnNode = document.querySelector('#version-rocket .refresh-button'); refreshBtnNode.onclick = () => { if (typeof (params === null || params === void 0 ? void 0 : params.onRefresh) === 'function') { params.onRefresh({ newVersion: params.newVersion, needRefresh: params.needRefresh || false, }); } else { window.location.reload(); } }; // cancel const cancelBtnNode = document.querySelector('#version-rocket .cancel-button'); if (!cancelBtnNode) return; cancelBtnNode.onclick = () => { if (typeof (params === null || params === void 0 ? void 0 : params.onCancel) === 'function') { params.onCancel({ newVersion: params.newVersion, needRefresh: params.needRefresh || false, }); return; } const cancelMode = (params === null || params === void 0 ? void 0 : params.cancelMode) || 'ignore-current-version'; switch (cancelMode) { case 'ignore-current-version': localStorage.setItem('version-rocket:cancelled', params.newVersion || ''); break; case 'ignore-today': localStorage.setItem('version-rocket:cancelled', new Date().toLocaleDateString()); break; case 'ignore-current-window': sessionStorage.setItem('version-rocket:cancelled', 'true'); break; default: break; } unCheckVersion({ closeDialog: true, closeWorker: false }); }; };