mirror of
https://github.com/oxen-io/session-desktop.git
synced 2023-12-14 02:12:57 +01:00
Added comments
This commit is contained in:
parent
090f0e2c38
commit
3b8b9f7306
|
@ -4,6 +4,10 @@ import { libloki, libsignal, Signal, textsecure } from '../../window';
|
|||
import { UserUtil } from '../../util';
|
||||
import { CipherTextObject } from '../../../libtextsecure/libsignal-protocol';
|
||||
|
||||
/**
|
||||
* Add padding to a message buffer
|
||||
* @param messageBuffer The buffer to add padding to.
|
||||
*/
|
||||
export function padPlainTextBuffer(messageBuffer: Uint8Array): Uint8Array {
|
||||
const plaintext = new Uint8Array(
|
||||
getPaddedMessageLength(messageBuffer.byteLength + 1) - 1
|
||||
|
|
|
@ -10,11 +10,19 @@ import pRetry from 'p-retry';
|
|||
|
||||
// ================ Regular ================
|
||||
|
||||
/**
|
||||
* Check if we can send to service nodes.
|
||||
*/
|
||||
export function canSendToSnode(): boolean {
|
||||
// Seems like lokiMessageAPI is not always guaranteed to be initialized
|
||||
return Boolean(lokiMessageAPI);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a message via service nodes.
|
||||
* @param message The message to send.
|
||||
* @param retries The amount of times to retry sending.
|
||||
*/
|
||||
export async function send(
|
||||
{ device, plainTextBuffer, encryption, timestamp, ttl }: RawMessage,
|
||||
retries: number = 3
|
||||
|
@ -31,7 +39,9 @@ export async function send(
|
|||
const envelope = await buildEnvelope(envelopeType, timestamp, cipherText);
|
||||
const data = wrapEnvelope(envelope);
|
||||
|
||||
// pRetry doesn't count the first call as a retry
|
||||
// pRetry counts retries after making the first call.
|
||||
// So a retry couunt of 3 means you make a request then if it fails you make another request 3 times until it succeeds.
|
||||
// This means a total of 4 requests are being sent, where as for us when we want 3 retries we only want 3 requests sent.
|
||||
return pRetry(
|
||||
async () => lokiMessageAPI.sendMessage(device, data, timestamp, ttl),
|
||||
{
|
||||
|
@ -80,9 +90,18 @@ function wrapEnvelope(envelope: SignalService.Envelope): Uint8Array {
|
|||
|
||||
// ================ Open Group ================
|
||||
|
||||
/**
|
||||
* Send a message to an open group.
|
||||
* @param message The open group message.
|
||||
*/
|
||||
export async function sendToOpenGroup(
|
||||
message: OpenGroupMessage
|
||||
): Promise<boolean> {
|
||||
/*
|
||||
Note: Retrying wasn't added to this but it can be added in the future if needed.
|
||||
The only problem is that `channelAPI.sendMessage` returns true/false and doesn't throw any error so we can never be sure why sending failed.
|
||||
This should be fixed and we shouldn't rely on returning true/false, rather return nothing (success) or throw an error (failure)
|
||||
*/
|
||||
const { group, quote, attachments, preview, body } = message;
|
||||
const channelAPI = await lokiPublicChatAPI.findOrCreateChannel(
|
||||
group.server,
|
||||
|
@ -91,7 +110,6 @@ export async function sendToOpenGroup(
|
|||
);
|
||||
|
||||
// Don't think returning true/false on `sendMessage` is a good way
|
||||
// We should either: return nothing (success) or throw an error (failure)
|
||||
return channelAPI.sendMessage({
|
||||
quote,
|
||||
attachments: attachments || [],
|
||||
|
|
Loading…
Reference in a new issue