返回 AiToEarn
kwai.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 { KwaiAnalyticsProvider } from './kwai-analytics.provider'
8 import { KwaiAuthProvider } from './kwai-auth.provider'
9 import { KwaiPublishProvider } from './kwai-publish.provider'
10 import { KwaiWorkProvider } from './kwai-work.provider'
11 import { KwaiConfig } from './kwai.config'
12 import { KWAI_METADATA } from './kwai.constants'
13 import { KwaiService } from './kwai.service'
14
15 @Module({})
16 export class KwaiModule {
17 static forRoot(config: PlatformConfigWithStatus | undefined): DynamicModule {
18 if (!isVisiblePlatformConfig(config)) {
19 return { module: KwaiModule }
20 }
21
22 const metadata = { ...KWAI_METADATA, logoUrl: config.logoUrl }
23
24 if (!isAvailablePlatformConfig(config)) {
25 return {
26 module: KwaiModule,
27 imports: [PlatformRegistryModule],
28 providers: [
29 {
30 provide: 'KWAI_INTEGRATION',
31 inject: [PlatformIntegrationRegistry],
32 useFactory: (registry: PlatformIntegrationRegistry) => {
33 registry.register({
34 platform: KWAI_METADATA.platform,
35 status: config.status,
36 metadata,
37 runtime: {},
38 })
39 },
40 },
41 ],
42 }
43 }
44
45 const availableConfig = config as KwaiConfig
46
47 return {
48 module: KwaiModule,
49 imports: [PlatformRegistryModule],
50 providers: [
51 { provide: KwaiConfig, useValue: availableConfig },
52 KwaiService,
53 KwaiAuthProvider,
54 KwaiPublishProvider,
55 KwaiWorkProvider,
56 KwaiAnalyticsProvider,
57 {
58 provide: 'KWAI_INTEGRATION',
59 inject: [PlatformIntegrationRegistry, KwaiAuthProvider, KwaiPublishProvider, KwaiWorkProvider, KwaiAnalyticsProvider],
60 useFactory: (
61 registry: PlatformIntegrationRegistry,
62 auth: KwaiAuthProvider,
63 publish: KwaiPublishProvider,
64 work: KwaiWorkProvider,
65 analytics: KwaiAnalyticsProvider,
66 ) => {
67 registry.register({
68 platform: KWAI_METADATA.platform,
69 status: availableConfig.status,
70 metadata,
71 runtime: {},
72 auth,
73 publish,
74 work,
75 analytics,
76 })
77 },
78 },
79 ],
80 exports: [
81 KwaiService,
82 KwaiAuthProvider,
83 KwaiPublishProvider,
84 KwaiWorkProvider,
85 KwaiAnalyticsProvider,
86 ],
87 }
88 }
89 }
90
90 lines TYPESCRIPT