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 { DeleteContact } from './UseCase/DeleteContact'
import { MutatorClientInterface } from './../Mutator/MutatorClientInterface' import { MutatorClientInterface } from './../Mutator/MutatorClientInterface'
import { PureCryptoInterface } from '@standardnotes/sncrypto-common' 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 { TrustedContactInterface, TrustedContactMutator, DecryptedItemInterface } from '@standardnotes/models'
import { AbstractService } from '../Service/AbstractService' import { AbstractService } from '../Service/AbstractService'
import { SyncServiceInterface } from '../Sync/SyncServiceInterface' import { SyncServiceInterface } from '../Sync/SyncServiceInterface'
@@ -110,6 +114,9 @@ export class ContactService extends AbstractService<ContactServiceEvent> impleme
name?: string, name?: string,
): Promise<TrustedContactInterface | undefined> { ): Promise<TrustedContactInterface | undefined> {
const { userUuid, publicKey, signingPublicKey } = this.parseCollaborationID(collaborationID) 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({ return this.createOrEditTrustedContact({
name: name ?? '', name: name ?? '',
contactUuid: userUuid, contactUuid: userUuid,

View File

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