85 lines
2.9 KiB
JavaScript
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()
|
|
}
|
|
})()
|