Files
trade-message-center/apps/chrome-extension/src/onetalk/main-page/page-script-entry.ts
T
YBF 784bbec2a0 feat: 支持 OneTalk 文本引用回复协议 (#66)
* feat: add OneTalk quote reply support

* chore(task): archive 09-17-onetalk-quote-reply-protocol

* chore: record journal

* docs: format OneTalk DOM card collection plan

* chore: release 0.8.29

* chore: release 0.8.30
2026-09-17 11:56:35 +08:00

64 lines
3.0 KiB
TypeScript

// 启动 OneTalk 页面监听与当前会话同步能力
import { installOneTalkConversationIdCopyControl } from "./dom/conversation-id-copy.ts";
import {
installOneTalkActionStatusTooltip,
readOneTalkActionStatusTooltip,
} from "./dom/action-status-tooltip.ts";
import { ConnectionStatusTooltip } from "./connection-status-tooltip.ts";
import { BindingStatusTooltip } from "./binding-status-tooltip.ts";
import { HistoryBootstrapProgressTooltip } from "./current-conversation-history/bootstrap-progress-tooltip.ts";
import { createSendObservationCorrelator } from "./message-observer/send-observation.ts";
import { createOneTalkQuoteSourceIndex } from "./message-observer/quote-source-index.ts";
import { installOneTalkContactProfileObserver } from "./contact-observer/entry.ts";
import { installOneTalkCollectionObservers } from "./collection/entry.ts";
import { installOneTalkRenderedCardObserver } from "./card-observer/entry.ts";
import { createOneTalkObservedPublisher } from "./collection/observed-publisher.ts";
import { createOneTalkPageCommandHandler } from "./commands/index.ts";
import {
createOneTalkPageBuyerFactsObservedSink,
createOneTalkPageRenderedCardObservedSink,
createOneTalkPageObservedSink,
createOneTalkPageProfileObservedSink,
installOneTalkMainPageBridge,
} from "../page-bridge/main.ts";
/** 启动 main-page 目录下的全部 OneTalk 页面能力。 */
const installOneTalkPageFeatures = (): void => {
installOneTalkActionStatusTooltip(window);
const tooltip = readOneTalkActionStatusTooltip(window);
if (!tooltip) throw new Error("onetalk_action_status_tooltip_unavailable");
const historyBootstrapProgress = new HistoryBootstrapProgressTooltip(tooltip);
const connectionStatus = new ConnectionStatusTooltip(tooltip);
const bindingStatus = new BindingStatusTooltip(tooltip);
installOneTalkConversationIdCopyControl(window);
const sendObservation = createSendObservationCorrelator();
const quoteSources = createOneTalkQuoteSourceIndex();
const profileObserver = installOneTalkContactProfileObserver(
window,
createOneTalkPageProfileObservedSink(window),
);
const observedSink = createOneTalkPageObservedSink(window);
const buyerFactSink = createOneTalkPageBuyerFactsObservedSink(window);
const renderedCardSink = createOneTalkPageRenderedCardObservedSink(window);
const publish = createOneTalkObservedPublisher(observedSink, sendObservation.observe);
const onCommand = createOneTalkPageCommandHandler(window, {
sendObservation,
quoteSources,
observedSink: publish,
profileObserver,
historyBootstrapProgress,
});
installOneTalkMainPageBridge(
window,
onCommand,
undefined,
(disconnected) => connectionStatus.update(disconnected),
(unbound) => bindingStatus.update(unbound),
);
installOneTalkCollectionObservers(window, publish, buyerFactSink, quoteSources);
installOneTalkRenderedCardObserver(window, renderedCardSink);
};
installOneTalkPageFeatures();