Expand publishing and virtual product workflows
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
(() => {
|
||||
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()
|
||||
}
|
||||
})()
|
||||
Reference in New Issue
Block a user