(() => { 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() } })()