@bsv/message-box-client 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/MessageBoxClient.js +57 -0
- package/dist/cjs/src/MessageBoxClient.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/MessageBoxClient.js +56 -0
- package/dist/esm/src/MessageBoxClient.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/MessageBoxClient.d.ts +1 -0
- package/dist/types/src/MessageBoxClient.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +1 -1
- package/package.json +1 -1
- package/src/MessageBoxClient.ts +64 -0
package/package.json
CHANGED
package/src/MessageBoxClient.ts
CHANGED
|
@@ -1388,6 +1388,70 @@ export class MessageBoxClient {
|
|
|
1388
1388
|
return messages
|
|
1389
1389
|
}
|
|
1390
1390
|
|
|
1391
|
+
async listMessagesLite ({ messageBox, host }: ListMessagesParams): Promise<PeerMessage[]> {
|
|
1392
|
+
const res = await this.authFetch.fetch(`${host as string}/listMessages`, {
|
|
1393
|
+
method: 'POST',
|
|
1394
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1395
|
+
body: JSON.stringify({ messageBox })
|
|
1396
|
+
})
|
|
1397
|
+
const data = await res.json()
|
|
1398
|
+
if (data.status === 'error') throw new Error(data.description ?? 'Unknown server error')
|
|
1399
|
+
const messages = data.messages as PeerMessage[]
|
|
1400
|
+
const tryParse = (raw: string): any => {
|
|
1401
|
+
try {
|
|
1402
|
+
return JSON.parse(raw)
|
|
1403
|
+
} catch {
|
|
1404
|
+
return raw
|
|
1405
|
+
}
|
|
1406
|
+
}
|
|
1407
|
+
for (const message of messages) {
|
|
1408
|
+
try {
|
|
1409
|
+
const parsedBody: unknown =
|
|
1410
|
+
typeof message.body === 'string' ? tryParse(message.body) : message.body
|
|
1411
|
+
let messageContent: any = parsedBody
|
|
1412
|
+
if (
|
|
1413
|
+
parsedBody != null &&
|
|
1414
|
+
typeof parsedBody === 'object' &&
|
|
1415
|
+
'message' in parsedBody
|
|
1416
|
+
) {
|
|
1417
|
+
// Handle wrapped message format (with payment data)
|
|
1418
|
+
const wrappedMessage = (parsedBody as any).message
|
|
1419
|
+
messageContent = typeof wrappedMessage === 'string'
|
|
1420
|
+
? tryParse(wrappedMessage)
|
|
1421
|
+
: wrappedMessage
|
|
1422
|
+
}
|
|
1423
|
+
// Handle message decryption
|
|
1424
|
+
if (
|
|
1425
|
+
messageContent != null &&
|
|
1426
|
+
typeof messageContent === 'object' &&
|
|
1427
|
+
typeof messageContent.encryptedMessage === 'string'
|
|
1428
|
+
) {
|
|
1429
|
+
const decrypted = await this.walletClient.decrypt({
|
|
1430
|
+
protocolID: [1, 'messagebox'],
|
|
1431
|
+
keyID: '1',
|
|
1432
|
+
counterparty: message.sender,
|
|
1433
|
+
ciphertext: Utils.toArray(
|
|
1434
|
+
messageContent.encryptedMessage,
|
|
1435
|
+
'base64'
|
|
1436
|
+
)
|
|
1437
|
+
})
|
|
1438
|
+
const decryptedText = Utils.toUTF8(decrypted.plaintext)
|
|
1439
|
+
message.body = tryParse(decryptedText)
|
|
1440
|
+
} else {
|
|
1441
|
+
// For non-encrypted messages, use the processed content
|
|
1442
|
+
message.body = messageContent ?? parsedBody
|
|
1443
|
+
}
|
|
1444
|
+
} catch (err) {
|
|
1445
|
+
Logger.error(
|
|
1446
|
+
'[MB CLIENT ERROR] Failed to parse or decrypt message in list:',
|
|
1447
|
+
err
|
|
1448
|
+
)
|
|
1449
|
+
message.body = '[Error: Failed to decrypt or parse message]'
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1452
|
+
return messages
|
|
1453
|
+
}
|
|
1454
|
+
|
|
1391
1455
|
/**
|
|
1392
1456
|
* @method acknowledgeMessage
|
|
1393
1457
|
* @async
|