mirror of
https://github.com/jeffusion/gitea-ai-assistant.git
synced 2026-03-27 10:05:50 +00:00
refactor(notification): replace static factory class with function exports
This commit is contained in:
@@ -8,7 +8,10 @@ export type {
|
||||
} from './types.js';
|
||||
|
||||
export { BaseNotificationService } from './base-notification-service.js';
|
||||
export { NotificationFactory } from './notification-factory.js';
|
||||
export {
|
||||
createNotificationService,
|
||||
createNotificationServices,
|
||||
} from './notification-factory.js';
|
||||
export { NotificationManager, createNotificationManager } from './notification-manager.js';
|
||||
export { FeishuNotificationService } from './providers/feishu-notification-service.js';
|
||||
export { WeComNotificationService } from './providers/wecom-notification-service.js';
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
import type {
|
||||
INotificationService,
|
||||
NotificationServiceConfig,
|
||||
} from './types.js';
|
||||
import { FeishuNotificationService } from './providers/feishu-notification-service.js';
|
||||
import { WeComNotificationService } from './providers/wecom-notification-service.js';
|
||||
import type { INotificationService, NotificationServiceConfig } from './types.js';
|
||||
|
||||
export class NotificationFactory {
|
||||
static createService(config: NotificationServiceConfig): INotificationService {
|
||||
export function createNotificationService(config: NotificationServiceConfig): INotificationService {
|
||||
switch (config.provider) {
|
||||
case 'feishu':
|
||||
return new FeishuNotificationService(config);
|
||||
@@ -17,9 +13,8 @@ export class NotificationFactory {
|
||||
}
|
||||
}
|
||||
|
||||
static createServices(configs: NotificationServiceConfig[]): INotificationService[] {
|
||||
return configs
|
||||
.filter((c) => c.enabled && c.webhookUrl)
|
||||
.map((c) => this.createService(c));
|
||||
}
|
||||
export function createNotificationServices(
|
||||
configs: NotificationServiceConfig[]
|
||||
): INotificationService[] {
|
||||
return configs.filter((c) => c.enabled && c.webhookUrl).map((c) => createNotificationService(c));
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { logger } from '../../utils/logger.js';
|
||||
import { createNotificationServices } from './notification-factory.js';
|
||||
import type {
|
||||
INotificationService,
|
||||
NotificationContext,
|
||||
NotificationMessage,
|
||||
NotificationProvider,
|
||||
} from './types.js';
|
||||
import { NotificationFactory } from './notification-factory.js';
|
||||
import { logger } from '../../utils/logger.js';
|
||||
|
||||
export class NotificationManager {
|
||||
private services: INotificationService[] = [];
|
||||
@@ -100,6 +100,6 @@ export class NotificationManager {
|
||||
export function createNotificationManager(
|
||||
configs: import('./types.js').NotificationServiceConfig[]
|
||||
): NotificationManager {
|
||||
const services = NotificationFactory.createServices(configs);
|
||||
const services = createNotificationServices(configs);
|
||||
return new NotificationManager(services);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user