Files
RuoYi-Vue/browser-extension/multi-platform-publisher-1.1.17/content/admin-bridge.js

85 lines
2.9 KiB
JavaScript

(() => {
const SOURCE_ADMIN = 'yidaima-admin'
const SOURCE_EXTENSION = 'yidaima-publisher-extension'
const VERSION = chrome.runtime.getManifest().version
function isPublishPage() {
return location.pathname.indexOf('/office/publish') >= 0
}
function announceReady() {
if (!isPublishPage()) return
window.dispatchEvent(new CustomEvent('YIDAIMA_EXTENSION_READY', {
detail: { source: SOURCE_EXTENSION, version: VERSION }
}))
}
window.addEventListener('YIDAIMA_EXTENSION_PING', event => {
if (!isPublishPage() || !event.detail || event.detail.source !== SOURCE_ADMIN) return
chrome.runtime.sendMessage({ type: 'ADMIN_PING' }, response => {
if (chrome.runtime.lastError || !response || !response.ok) return
announceReady()
})
})
window.addEventListener('YIDAIMA_START_PUBLISH', event => {
const detail = event.detail
if (!isPublishPage() || !detail || detail.source !== SOURCE_ADMIN) return
const payload = {
taskId: detail.taskId,
token: detail.token,
platform: detail.platform,
apiBaseUrl: detail.apiBaseUrl
}
chrome.runtime.sendMessage({ type: 'ADMIN_START_PUBLISH', payload }, response => {
const error = chrome.runtime.lastError
window.dispatchEvent(new CustomEvent('YIDAIMA_PUBLISH_ACCEPTED', {
detail: {
source: SOURCE_EXTENSION,
taskId: payload.taskId,
ok: !error && Boolean(response && response.ok),
message: error ? error.message : (response && response.message)
}
}))
})
})
window.addEventListener('YIDAIMA_START_PUBLISH_BATCH', event => {
const detail = event.detail
if (!isPublishPage() || !detail || detail.source !== SOURCE_ADMIN || !Array.isArray(detail.tasks)) return
const payload = {
batchId: detail.batchId,
apiBaseUrl: detail.apiBaseUrl,
tasks: detail.tasks.map(task => ({
taskId: task.taskId,
token: task.token,
platform: task.platform
}))
}
chrome.runtime.sendMessage({ type: 'ADMIN_START_PUBLISH_BATCH', payload }, response => {
const error = chrome.runtime.lastError
window.dispatchEvent(new CustomEvent('YIDAIMA_PUBLISH_ACCEPTED', {
detail: {
source: SOURCE_EXTENSION,
batchId: payload.batchId,
ok: !error && Boolean(response && response.ok),
message: error ? error.message : (response && response.message)
}
}))
})
})
chrome.runtime.onMessage.addListener(message => {
if (!message || message.type !== 'ADMIN_PUBLISH_STATUS' || !isPublishPage()) return
window.dispatchEvent(new CustomEvent('YIDAIMA_PUBLISH_STATUS', {
detail: { source: SOURCE_EXTENSION, ...message.payload }
}))
})
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', announceReady, { once: true })
} else {
announceReady()
}
})()