返回 AiToEarn
tiktok.module.ts
1 import type { DynamicModule } from '@nestjs/common'
2 import type { PlatformConfigWithStatus } from '../platforms.config'
3 import { Module } from '@nestjs/common'
4 import { isAvailablePlatformConfig, isVisiblePlatformConfig } from '../platforms.config'
5 import { PlatformIntegrationRegistry } from '../platforms.registry'
6 import { PlatformRegistryModule } from '../platforms.registry.module'
7 import { TikTokAnalyticsProvider } from './tiktok-analytics.provider'
8 import { TikTokAuthProvider } from './tiktok-auth.provider'
9 import { TikTokPublishProvider } from './tiktok-publish.provider'
10 import { TikTokWebhookProvider } from './tiktok-webhook.provider'
11 import { TikTokWorkProvider } from './tiktok-work.provider'
12 import { TiktokConfig } from './tiktok.config'
13 import { TIKTOK_METADATA } from './tiktok.constants'
14 import { TikTokService } from './tiktok.service'
15
16 @Module({})
17 export class TiktokModule {
18 static forRoot(config: PlatformConfigWithStatus | undefined): DynamicModule {
19 if (!isVisiblePlatformConfig(config)) {
20 return { module: TiktokModule }
21 }
22
23 const metadata = { ...TIKTOK_METADATA, logoUrl: config.logoUrl }
24
25 if (!isAvailablePlatformConfig(config)) {
26 return {
27 module: TiktokModule,
28 imports: [PlatformRegistryModule],
29 providers: [
30 {
31 provide: 'TIKTOK_INTEGRATION',
32 inject: [PlatformIntegrationRegistry],
33 useFactory: (registry: PlatformIntegrationRegistry) => {
34 registry.register({
35 platform: TIKTOK_METADATA.platform,
36 status: config.status,
37 metadata,
38 runtime: {},
39 })
40 },
41 },
42 ],
43 }
44 }
45
46 const availableConfig = config as TiktokConfig
47
48 return {
49 module: TiktokModule,
50 imports: [PlatformRegistryModule],
51 providers: [
52 { provide: TiktokConfig, useValue: availableConfig },
53 TikTokService,
54 TikTokAuthProvider,
55 TikTokPublishProvider,
56 TikTokAnalyticsProvider,
57 TikTokWorkProvider,
58 TikTokWebhookProvider,
59 {
60 provide: 'TIKTOK_INTEGRATION',
61 inject: [
62 PlatformIntegrationRegistry,
63 TikTokAuthProvider,
64 TikTokPublishProvider,
65 TikTokAnalyticsProvider,
66 TikTokWorkProvider,
67 TikTokWebhookProvider,
68 ],
69 useFactory: (
70 registry: PlatformIntegrationRegistry,
71 auth: TikTokAuthProvider,
72 publish: TikTokPublishProvider,
73 analytics: TikTokAnalyticsProvider,
74 work: TikTokWorkProvider,
75 webhook: TikTokWebhookProvider,
76 ) => {
77 registry.register({
78 platform: TIKTOK_METADATA.platform,
79 status: availableConfig.status,
80 metadata,
81 runtime: {},
82 auth,
83 publish,
84 analytics,
85 work,
86 webhook,
87 })
88 },
89 },
90 ],
91 exports: [
92 TikTokService,
93 TikTokAuthProvider,
94 TikTokPublishProvider,
95 TikTokAnalyticsProvider,
96 TikTokWorkProvider,
97 TikTokWebhookProvider,
98 ],
99 }
100 }
101 }
102
102 lines TYPESCRIPT