From: Chris Duncan Date: Mon, 21 Jul 2025 06:29:42 +0000 (-0700) Subject: Update rolodex add method. X-Git-Tag: v0.10.5~55^2~49 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=26b5980579ef0efec0220aa820448cb75e7b4d83;p=libnemo.git Update rolodex add method. --- diff --git a/src/lib/rolodex.ts b/src/lib/rolodex.ts index 73df66f..c33b1c9 100644 --- a/src/lib/rolodex.ts +++ b/src/lib/rolodex.ts @@ -46,8 +46,8 @@ export class Rolodex { .replaceAll('\\', '\\u005c') const account = Account.import(address) - const nameResult = await this.getName(account.address) - if (nameResult == null) { + const existingName = await this.getName(account.address) + if (existingName == null) { const { result } = await SafeWorker.assign({ method: 'store', store: 'Rolodex', @@ -55,22 +55,38 @@ export class Rolodex { [address]: utf8.toBytes(name).buffer }) return result - } - - const addresses = await this.getAddresses(name) - if (addresses.length > 0) { - addresses.push(account.address) - const addressesJson = JSON.stringify(addresses) - const { result } = await SafeWorker.assign({ + } else if (existingName !== name) { + const { result: isDestroyed } = await SafeWorker.assign({ + method: 'destroy', + store: 'Rolodex', + name: address + }) + if (!isDestroyed) { + throw new Error('Failed to replace existing rolodex entry') + } + const { result: isUpdated } = await SafeWorker.assign({ method: 'store', store: 'Rolodex', password: '', - [name]: utf8.toBytes(addressesJson).buffer + [address]: utf8.toBytes(name).buffer }) - return result + return isUpdated + } else { + const addresses = await this.getAddresses(name) + if (addresses.some(a => a === account.address)) { + return true + } else { + addresses.push(account.address) + const addressesJson = JSON.stringify(addresses) + const { result } = await SafeWorker.assign({ + method: 'store', + store: 'Rolodex', + password: '', + [name]: utf8.toBytes(addressesJson).buffer + }) + return result + } } - - return false } /**