@@ -7,7 +7,7 @@ import { sleep, waitForFinality, Wallet_ } from '../utils';
77import { ENCRYPTION_OVERHEAD_BYTES } from '../utils/ecdh-encryption' ;
88import { CyclicByteBuffer } from '../utils/cyclic-bytebuffer' ;
99import ByteBuffer from 'bytebuffer' ;
10- import { TextSerdeFactory } from './text-serde' ;
10+ import { EncryptionProps , TextSerdeFactory } from './text-serde' ;
1111
1212// TODO: Switch from types to classes
1313
@@ -254,9 +254,9 @@ export async function getDialectProgramAddress(
254254
255255function parseMessages (
256256 { messages : rawMessagesBuffer , members, encrypted } : RawDialect ,
257- user ?: anchor . web3 . Keypair ,
257+ encryptionProps ?: EncryptionProps ,
258258) {
259- if ( encrypted && ! user ) {
259+ if ( encrypted && ! encryptionProps ) {
260260 return [ ] ;
261261 }
262262 const messagesBuffer = new CyclicByteBuffer (
@@ -270,7 +270,7 @@ function parseMessages(
270270 encrypted,
271271 members,
272272 } ,
273- user ,
273+ encryptionProps ,
274274 ) ;
275275 const allMessages : Message [ ] = messagesBuffer . items ( ) . map ( ( { buffer } ) => {
276276 const byteBuffer = new ByteBuffer ( buffer . length ) . append ( buffer ) . flip ( ) ;
@@ -288,29 +288,29 @@ function parseMessages(
288288 return allMessages . reverse ( ) ;
289289}
290290
291- function parseRawDialect ( rawDialect : RawDialect , user ?: anchor . web3 . Keypair ) {
291+ function parseRawDialect (
292+ rawDialect : RawDialect ,
293+ encryptionProps ?: EncryptionProps ,
294+ ) {
292295 return {
293296 encrypted : rawDialect . encrypted ,
294297 members : rawDialect . members ,
295298 nextMessageIdx : rawDialect . messages . writeOffset ,
296299 lastMessageTimestamp : rawDialect . lastMessageTimestamp * 1000 ,
297- messages : parseMessages ( rawDialect , user ) ,
300+ messages : parseMessages ( rawDialect , encryptionProps ) ,
298301 } ;
299302}
300303
301304export async function getDialect (
302305 program : anchor . Program ,
303306 publicKey : PublicKey ,
304- user ?: anchor . web3 . Keypair | Wallet ,
307+ encryptionProps ?: EncryptionProps ,
305308) : Promise < DialectAccount > {
306309 const rawDialect = ( await program . account . dialectAccount . fetch (
307310 publicKey ,
308311 ) ) as RawDialect ;
309312 const account = await program . provider . connection . getAccountInfo ( publicKey ) ;
310- const dialect = parseRawDialect (
311- rawDialect ,
312- user && 'secretKey' in user ? user : undefined ,
313- ) ;
313+ const dialect = parseRawDialect ( rawDialect , encryptionProps ) ;
314314 return {
315315 ...account ,
316316 publicKey : publicKey ,
@@ -321,14 +321,15 @@ export async function getDialect(
321321export async function getDialects (
322322 program : anchor . Program ,
323323 user : anchor . web3 . Keypair | Wallet ,
324+ encryptionProps ?: EncryptionProps ,
324325) : Promise < DialectAccount [ ] > {
325326 const metadata = await getMetadata ( program , user . publicKey ) ;
326327 const enabledSubscriptions = metadata . subscriptions . filter (
327328 ( it ) => it . enabled ,
328329 ) ;
329330 return Promise . all (
330331 enabledSubscriptions . map ( async ( { pubkey } ) =>
331- getDialect ( program , pubkey , user ) ,
332+ getDialect ( program , pubkey , encryptionProps ) ,
332333 ) ,
333334 ) . then ( ( dialects ) =>
334335 dialects . sort (
@@ -341,13 +342,13 @@ export async function getDialects(
341342export async function getDialectForMembers (
342343 program : anchor . Program ,
343344 members : Member [ ] ,
344- user ?: anchor . web3 . Keypair ,
345+ encryptionProps ?: EncryptionProps ,
345346) : Promise < DialectAccount > {
346347 const sortedMembers = members . sort ( ( a , b ) =>
347348 a . publicKey . toBuffer ( ) . compare ( b . publicKey . toBuffer ( ) ) ,
348349 ) ;
349350 const [ publicKey ] = await getDialectProgramAddress ( program , sortedMembers ) ;
350- return await getDialect ( program , publicKey , user ) ;
351+ return await getDialect ( program , publicKey , encryptionProps ) ;
351352}
352353
353354export async function findDialects (
@@ -395,7 +396,8 @@ export async function createDialect(
395396 program : anchor . Program ,
396397 owner : anchor . web3 . Keypair | Wallet ,
397398 members : Member [ ] ,
398- encrypted = true ,
399+ encrypted = false ,
400+ encryptionProps ?: EncryptionProps ,
399401) : Promise < DialectAccount > {
400402 const sortedMembers = members . sort ( ( a , b ) =>
401403 a . publicKey . toBuffer ( ) . compare ( b . publicKey . toBuffer ( ) ) ,
@@ -425,11 +427,7 @@ export async function createDialect(
425427 } ,
426428 ) ;
427429 await waitForFinality ( program , tx ) ;
428- return await getDialectForMembers (
429- program ,
430- members ,
431- 'secretKey' in owner ? owner : undefined ,
432- ) ;
430+ return await getDialectForMembers ( program , members , encryptionProps ) ;
433431}
434432
435433export async function deleteDialect (
@@ -470,6 +468,7 @@ export async function sendMessage(
470468 { dialect, publicKey } : DialectAccount ,
471469 sender : anchor . web3 . Keypair | Wallet ,
472470 text : string ,
471+ encryptionProps ?: EncryptionProps ,
473472) : Promise < Message > {
474473 const [ dialectPublicKey , nonce ] = await getDialectProgramAddress (
475474 program ,
@@ -480,7 +479,7 @@ export async function sendMessage(
480479 encrypted : dialect . encrypted ,
481480 members : dialect . members ,
482481 } ,
483- sender && 'secretKey' in sender ? sender : undefined ,
482+ encryptionProps ,
484483 ) ;
485484 const serializedText = textSerde . serialize ( text ) ;
486485 await program . rpc . sendMessage (
@@ -498,7 +497,7 @@ export async function sendMessage(
498497 signers : sender && 'secretKey' in sender ? [ sender ] : [ ] ,
499498 } ,
500499 ) ;
501- const d = await getDialect ( program , publicKey , sender ) ;
500+ const d = await getDialect ( program , publicKey , encryptionProps ) ;
502501 return d . dialect . messages [ d . dialect . nextMessageIdx - 1 ] ; // TODO: Support ring
503502}
504503
0 commit comments