chore: dont allow adding yourself as a contact

This commit is contained in:
Aman Harwara
2023-08-09 14:42:57 +05:30
parent 03083be626
commit 4fd9402940
2 changed files with 22 additions and 8 deletions

View File

@@ -1,7 +1,11 @@
import { DeleteContact } from './UseCase/DeleteContact'
import { MutatorClientInterface } from './../Mutator/MutatorClientInterface'
import { PureCryptoInterface } from '@standardnotes/sncrypto-common'
import { SharedVaultInviteServerHash, SharedVaultUserServerHash } from '@standardnotes/responses'
import {
ClientDisplayableError,
SharedVaultInviteServerHash,
SharedVaultUserServerHash,
} from '@standardnotes/responses'
import { TrustedContactInterface, TrustedContactMutator, DecryptedItemInterface } from '@standardnotes/models'
import { AbstractService } from '../Service/AbstractService'
import { SyncServiceInterface } from '../Sync/SyncServiceInterface'
@@ -110,6 +114,9 @@ export class ContactService extends AbstractService<ContactServiceEvent> impleme
name?: string,
): Promise<TrustedContactInterface | undefined> {
const { userUuid, publicKey, signingPublicKey } = this.parseCollaborationID(collaborationID)
if (userUuid === this.user.getUserUuid()) {
throw new ClientDisplayableError('You cannot add yourself as a trusted contact')
}
return this.createOrEditTrustedContact({
name: name ?? '',
contactUuid: userUuid,

View File

@@ -2,7 +2,7 @@ import { FunctionComponent, useCallback, useEffect, useMemo, useState } from 're
import Modal, { ModalAction } from '@/Components/Modal/Modal'
import DecoratedInput from '@/Components/Input/DecoratedInput'
import { useApplication } from '@/Components/ApplicationProvider'
import { InviteRecord, TrustedContactInterface } from '@standardnotes/snjs'
import { ClientDisplayableError, InviteRecord, TrustedContactInterface } from '@standardnotes/snjs'
type Props = {
fromInvite?: InviteRecord
@@ -46,12 +46,19 @@ const EditContactModal: FunctionComponent<Props> = ({ onCloseDialog, fromInvite,
void application.contacts.editTrustedContactFromCollaborationID(editingContact, { name, collaborationID })
handleDialogClose()
} else {
const contact = await application.contacts.addTrustedContactFromCollaborationID(collaborationID, name)
if (contact) {
onAddContact?.(contact)
handleDialogClose()
} else {
void application.alerts.alert('Unable to create contact. Please try again.')
try {
const contact = await application.contacts.addTrustedContactFromCollaborationID(collaborationID, name)
if (contact) {
onAddContact?.(contact)
handleDialogClose()
} else {
void application.alerts.alert('Unable to create contact. Please try again.')
}
} catch (error) {
if (error instanceof ClientDisplayableError) {
application.alerts.showErrorAlert(error).catch(console.error)
}
console.error(error)
}
}
}, [editingContact, application.contacts, application.alerts, name, collaborationID, handleDialogClose, onAddContact])