Files
geo/apps/browser-extension/src/adapters/index.ts
T

55 lines
1.7 KiB
TypeScript
Raw Normal View History

import type { StoredPlatformState } from "../platforms";
import type { AdapterContext, PlatformAdapter, PlatformPublishResult } from "./types";
import { baijiahaoAdapter } from "./baijiahao";
import { bilibiliAdapter } from "./bilibili";
import { dongchediAdapter } from "./dongchedi";
import { jianshuAdapter } from "./jianshu";
import { juejinAdapter } from "./juejin";
import { qiehaoAdapter } from "./qiehao";
import { smzdmAdapter } from "./smzdm";
import { sohuhaoAdapter } from "./sohuhao";
import { toutiaohaoAdapter } from "./toutiaohao";
import { wangyihaoAdapter } from "./wangyihao";
import { weixinGzhAdapter } from "./weixin_gzh";
import { zhihuAdapter } from "./zhihu";
import { zolAdapter } from "./zol";
const adapters = new Map<string, PlatformAdapter>(
[
zhihuAdapter,
toutiaohaoAdapter,
baijiahaoAdapter,
sohuhaoAdapter,
qiehaoAdapter,
jianshuAdapter,
bilibiliAdapter,
juejinAdapter,
wangyihaoAdapter,
smzdmAdapter,
weixinGzhAdapter,
zolAdapter,
dongchediAdapter,
].map((adapter) => [adapter.platformId, adapter]),
);
export function getPlatformAdapter(platformId: string): PlatformAdapter | undefined {
return adapters.get(platformId);
}
export async function detectPlatformState(platform: StoredPlatformState): Promise<StoredPlatformState> {
const adapter = getPlatformAdapter(platform.platform_id);
if (!adapter) {
return platform;
}
return adapter.detect(platform);
}
export async function publishViaAdapter(platformId: string, context: AdapterContext): Promise<PlatformPublishResult | null> {
const adapter = getPlatformAdapter(platformId);
if (!adapter) {
return null;
}
return adapter.publish(context);
}