refactor: break up vault services (#2364)
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import { GetVaultUsers } from './GetVaultUsers'
|
||||
import { TrustedContactInterface } from '@standardnotes/models'
|
||||
import { isNotUndefined } from '@standardnotes/utils'
|
||||
import { FindContact } from '../../Contacts/UseCase/FindContact'
|
||||
import { Result, UseCaseInterface } from '@standardnotes/domain-core'
|
||||
|
||||
export class GetVaultContacts implements UseCaseInterface<TrustedContactInterface[]> {
|
||||
constructor(private findContact: FindContact, private getVaultUsers: GetVaultUsers) {}
|
||||
|
||||
async execute(sharedVaultUuid: string): Promise<Result<TrustedContactInterface[]>> {
|
||||
const users = await this.getVaultUsers.execute({ sharedVaultUuid })
|
||||
if (!users) {
|
||||
return Result.fail('Failed to get vault users')
|
||||
}
|
||||
|
||||
const contacts = users
|
||||
.map((user) => this.findContact.execute({ userUuid: user.user_uuid }))
|
||||
.map((result) => (result.isFailed() ? undefined : result.getValue()))
|
||||
.filter(isNotUndefined)
|
||||
|
||||
return Result.ok(contacts)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user