Karol Sójko 2 лет назад
Родитель
Сommit
55f8f65c3f

+ 1 - 7
packages/settings/src/Bootstrap/Container.ts

@@ -21,7 +21,6 @@ import { Env } from './Env'
 import TYPES from './Types'
 import { AppDataSource } from './DataSource'
 import { InversifyExpressApiGatewayAuthMiddleware } from '../Infra/InversifyExpress/InversifyExpressApiGatewayAuthMiddleware'
-import { MuteAllEmails } from '../Domain/UseCase/MuteAllEmails/MuteAllEmails'
 import { Repository } from 'typeorm'
 import { TypeORMSetting } from '../Infra/TypeORM/TypeORMSetting'
 import { SettingRepositoryInterface } from '../Domain/Setting/SettingRepositoryInterface'
@@ -109,14 +108,9 @@ export class ContainerConfigLoader {
       )
 
     // use cases
-    container
-      .bind<MuteAllEmails>(TYPES.MuteAllEmails)
-      .toConstantValue(new MuteAllEmails(container.get(TYPES.SettingRepository)))
 
     // Controller
-    container
-      .bind<SettingsController>(TYPES.SettingsController)
-      .toConstantValue(new SettingsController(container.get(TYPES.MuteAllEmails)))
+    container.bind<SettingsController>(TYPES.SettingsController).toConstantValue(new SettingsController())
 
     // Handlers
 

+ 0 - 1
packages/settings/src/Bootstrap/Types.ts

@@ -18,7 +18,6 @@ const TYPES = {
   NEW_RELIC_ENABLED: Symbol.for('NEW_RELIC_ENABLED'),
   VERSION: Symbol.for('VERSION'),
   // use cases
-  MuteAllEmails: Symbol.for('MuteAllEmails'),
   // Controller
   SettingsController: Symbol.for('SettingsController'),
   // Handlers

+ 1 - 28
packages/settings/src/Controller/SettingsController.ts

@@ -1,30 +1,3 @@
-import { HttpResponse, HttpStatusCode } from '@standardnotes/api'
-
-import { MuteAllEmails } from '../Domain/UseCase/MuteAllEmails/MuteAllEmails'
-import { MuteAllEmailsRequestParams } from '../Infra/Http/MuteAllEmailsRequestParams'
-
 export class SettingsController {
-  constructor(private doMuteAllEmails: MuteAllEmails) {}
-
-  async muteAllEmails(params: MuteAllEmailsRequestParams): Promise<HttpResponse> {
-    const result = await this.doMuteAllEmails.execute({
-      unsubscribeToken: params.unsubscribeToken,
-    })
-
-    if (result.isFailed()) {
-      return {
-        status: HttpStatusCode.BadRequest,
-        data: {
-          error: {
-            message: 'Could not mute emails.',
-          },
-        },
-      }
-    }
-
-    return {
-      status: HttpStatusCode.Success,
-      data: { success: true },
-    }
-  }
+  constructor() {}
 }

+ 22 - 0
packages/settings/src/Domain/UseCase/GetSettings/GetSettings.ts

@@ -0,0 +1,22 @@
+import { inject, injectable } from 'inversify'
+
+import TYPES from '../../../Bootstrap/Types'
+import { SettingRepositoryInterface } from '../../Setting/SettingRepositoryInterface'
+import { UseCaseInterface, Uuid } from '@standardnotes/domain-core'
+import { Setting } from '../../Setting/Setting'
+
+@injectable()
+export class GetSettings implements UseCaseInterface<Setting[]> {
+  constructor(
+    @inject(TYPES.SettingRepository) private settingRepository: SettingRepositoryInterface,
+    @inject(TYPES.Crypter) private crypter: CrypterInterface,
+  ) {}
+
+  async execute(dto: GetSettingsDto): Promise<GetSettingsResponse> {
+    const userUuidOrError = Uuid.create(dto.userUuid)
+    if (userUuidOrError.isFailed()) {
+
+    }
+    let settings = await this.settingRepository.findAllByUserUuid(userUuid)
+  }
+}

+ 0 - 42
packages/settings/src/Domain/UseCase/MuteAllEmails/MuteAllEmails.spec.ts

@@ -1,42 +0,0 @@
-import { Uuid } from '@standardnotes/domain-core'
-
-import { Setting } from '../../Setting/Setting'
-import { SettingRepositoryInterface } from '../../Setting/SettingRepositoryInterface'
-import { MuteAllEmails } from './MuteAllEmails'
-
-describe('MuteAllEmails', () => {
-  let settingRepository: SettingRepositoryInterface
-
-  const createUseCase = () => new MuteAllEmails(settingRepository)
-
-  beforeEach(() => {
-    settingRepository = {} as jest.Mocked<SettingRepositoryInterface>
-    settingRepository.setValueOnMultipleSettings = jest.fn()
-    settingRepository.findOneByNameAndValue = jest.fn().mockReturnValue({
-      props: { userUuid: Uuid.create('84c0f8e8-544a-4c7e-9adf-26209303bc1d').getValue() },
-    } as jest.Mocked<Setting>)
-  })
-
-  it('should mute all email settings for a given user', async () => {
-    const result = await createUseCase().execute({ unsubscribeToken: 'foobar' })
-
-    expect(result.isFailed()).toBeFalsy()
-    expect(settingRepository.setValueOnMultipleSettings).toHaveBeenCalled()
-  })
-
-  it('should not mute all email settings if user was not found', async () => {
-    settingRepository.findOneByNameAndValue = jest.fn().mockReturnValue(null)
-    const result = await createUseCase().execute({ unsubscribeToken: 'foobar' })
-
-    expect(result.isFailed()).toBeTruthy()
-    expect(settingRepository.setValueOnMultipleSettings).not.toHaveBeenCalled()
-  })
-
-  it('should not mute all email settings if unsubscribe token is not provided', async () => {
-    settingRepository.findOneByNameAndValue = jest.fn().mockReturnValue(null)
-    const result = await createUseCase().execute({ unsubscribeToken: null as unknown as string })
-
-    expect(result.isFailed()).toBeTruthy()
-    expect(settingRepository.setValueOnMultipleSettings).not.toHaveBeenCalled()
-  })
-})

+ 0 - 30
packages/settings/src/Domain/UseCase/MuteAllEmails/MuteAllEmails.ts

@@ -1,30 +0,0 @@
-import { Result, SettingName, UseCaseInterface } from '@standardnotes/domain-core'
-
-import { SettingRepositoryInterface } from '../../Setting/SettingRepositoryInterface'
-import { MuteAllEmailsDTO } from './MuteAllEmailsDTO'
-
-export class MuteAllEmails implements UseCaseInterface<string> {
-  constructor(private settingRepository: SettingRepositoryInterface) {}
-
-  async execute(dto: MuteAllEmailsDTO): Promise<Result<string>> {
-    if (!dto.unsubscribeToken) {
-      return Result.fail('No unsubscribe token provider')
-    }
-
-    const unsubscribeTokenSetting = await this.settingRepository.findOneByNameAndValue(
-      SettingName.create(SettingName.NAMES.EmailUnsubscribeToken).getValue(),
-      dto.unsubscribeToken,
-    )
-    if (unsubscribeTokenSetting === null) {
-      return Result.fail(`Could not find user with given unsubscribe token: ${dto.unsubscribeToken}`)
-    }
-
-    await this.settingRepository.setValueOnMultipleSettings(
-      [SettingName.NAMES.MuteMarketingEmails],
-      unsubscribeTokenSetting.props.userUuid,
-      'muted',
-    )
-
-    return Result.ok('Muted all emails.')
-  }
-}

+ 0 - 3
packages/settings/src/Domain/UseCase/MuteAllEmails/MuteAllEmailsDTO.ts

@@ -1,3 +0,0 @@
-export interface MuteAllEmailsDTO {
-  unsubscribeToken: string
-}

+ 1 - 11
packages/settings/src/Infra/InversifyExpress/InversifyExpressSettingsController.ts

@@ -1,5 +1,4 @@
-import { Request } from 'express'
-import { BaseHttpController, controller, httpPost, results } from 'inversify-express-utils'
+import { BaseHttpController, controller } from 'inversify-express-utils'
 import { inject } from 'inversify'
 
 import TYPES from '../../Bootstrap/Types'
@@ -10,13 +9,4 @@ export class InversifyExpressSettingsController extends BaseHttpController {
   constructor(@inject(TYPES.SettingsController) private settingsController: SettingsController) {
     super()
   }
-
-  @httpPost('/mute-emails/:unsubscribeToken')
-  public async muteAllEmails(request: Request): Promise<results.JsonResult> {
-    const result = await this.settingsController.muteAllEmails({
-      unsubscribeToken: request.params.unsubscribeToken,
-    })
-
-    return this.json(result.data, result.status)
-  }
 }