42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
|
|
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
|
|
import { GoogleEmailAliasManagerService } from 'src/modules/connected-account/email-alias-manager/drivers/google/google-email-alias-manager.service';
|
|
import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository';
|
|
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
|
|
|
|
@Injectable()
|
|
export class EmailAliasManagerService {
|
|
constructor(
|
|
@InjectObjectMetadataRepository(ConnectedAccountWorkspaceEntity)
|
|
private readonly connectedAccountRepository: ConnectedAccountRepository,
|
|
private readonly googleEmailAliasManagerService: GoogleEmailAliasManagerService,
|
|
) {}
|
|
|
|
public async refreshHandleAliases(
|
|
connectedAccount: ConnectedAccountWorkspaceEntity,
|
|
workspaceId: string,
|
|
) {
|
|
let handleAliases: string[];
|
|
|
|
switch (connectedAccount.provider) {
|
|
case 'google':
|
|
handleAliases =
|
|
await this.googleEmailAliasManagerService.getHandleAliases(
|
|
connectedAccount,
|
|
);
|
|
break;
|
|
default:
|
|
throw new Error(
|
|
`Email alias manager for provider ${connectedAccount.provider} is not implemented`,
|
|
);
|
|
}
|
|
|
|
await this.connectedAccountRepository.updateHandleAliases(
|
|
handleAliases,
|
|
connectedAccount.id,
|
|
workspaceId,
|
|
);
|
|
}
|
|
}
|