Skip to content

Commit f3c3d0c

Browse files
committed
fix: minor issues
1 parent 809b3ee commit f3c3d0c

File tree

6 files changed

+40
-38
lines changed

6 files changed

+40
-38
lines changed

packages/restapi/src/lib/chat/approveRequest.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import {
1313
import * as CryptoJS from 'crypto-js';
1414
import { getGroup } from './getGroup';
1515
import * as AES from '../chat/helpers/aes';
16+
import { getGroupInfo } from './getGroupInfo';
17+
import { getAllGroupMembersPublicKeys } from './getAllGroupMembersPublicKeys';
1618

1719
export interface ApproveRequestOptionsType extends EnvOptionsType {
1820
/**
@@ -88,13 +90,18 @@ export const approveCore = async (
8890
// pgpv2 is used for private grps
8991
let sigType: 'pgp' | 'pgpv2' = 'pgp';
9092
if (isGroup) {
91-
const group = await getGroup({ chatId: senderAddress, env });
93+
const group = await getGroupInfo({ chatId: senderAddress, env });
9294

9395
if (group && !group.isPublic) {
9496
sigType = 'pgpv2';
9597
const secretKey = AES.generateRandomSecret(15);
98+
99+
const groupMembers = await getAllGroupMembersPublicKeys({
100+
chatId: group.chatId,
101+
env,
102+
});
96103
// Encrypt secret key with group members public keys
97-
const publicKeys: string[] = group.members.map(
104+
const publicKeys: string[] = groupMembers.map(
98105
(member) => member.publicKey
99106
);
100107
publicKeys.push(connectedUser.publicKey);

packages/restapi/src/lib/chat/getAllGroupMembersPublicKeys.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
1-
import { getGroupMembers } from './getGroupMembers';
21
import { getChatMemberCount } from './getChatMemberCount';
3-
import { ChatMemberProfile, EnvOptionsType } from '../types';
2+
import { EnvOptionsType } from '../types';
43
import { getGroupMembersPublicKeys } from './getGroupMembersPublicKeys';
54

65
export const getAllGroupMembersPublicKeys = async (options: {
76
chatId: string;
87
env: EnvOptionsType['env'];
9-
}): Promise<ChatMemberProfile[]> => {
8+
}): Promise<{ did: string; publicKey: string }[]> => {
109
const { chatId, env } = options;
1110
const count = await getChatMemberCount({ chatId, env });
1211
const overallCount = count.approvedCount;
1312
const limit = 5000;
1413
const totalPages = Math.ceil(overallCount / limit);
1514
const pageNumbers = Array.from({ length: totalPages }, (_, i) => i + 1);
16-
const groupMembers: ChatMemberProfile[] = [];
15+
const groupMembers: { did: string; publicKey: string }[] = [];
1716

1817
const memberFetchPromises = pageNumbers.map((page) =>
1918
getGroupMembersPublicKeys({ chatId, env, page, limit })

packages/restapi/src/lib/chat/getGroupMembersPublicKeys.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@ import { FetchChatGroupInfoType } from './getGroupMembers';
1010

1111
export const getGroupMembersPublicKeys = async (
1212
options: FetchChatGroupInfoType
13-
): Promise<{
14-
totalMembersCount: ChatMemberCounts;
15-
members: ChatMemberProfile[];
16-
}> => {
13+
): Promise<{ members: [{ did: string; publicKey: string }] }> => {
1714
const { chatId, page = 1, limit = 20, env = Constants.ENV.PROD } = options;
1815

1916
try {

packages/restapi/src/lib/chat/helpers/validator.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,11 @@ export const validateGroupMemberUpdateOptions = (
227227
`Invalid role: ${role}. Allowed roles are ${allowedRoles.join(', ')}.`
228228
);
229229
}
230-
230+
231+
if (upsert[role] && upsert[role].length > 1000) {
232+
throw new Error(`${role} array cannot have more than 1000 addresses.`);
233+
}
234+
231235
// Assuming you have a function `isValidETHAddress` to validate Ethereum addresses
232236
upsert[role].forEach((address) => {
233237
if (!isValidETHAddress(address)) {
@@ -237,8 +241,8 @@ export const validateGroupMemberUpdateOptions = (
237241
});
238242

239243
// Validating remove array
240-
if (remove && remove.length > 100) {
241-
throw new Error('Remove array cannot have more than 100 addresses.');
244+
if (remove && remove.length > 1000) {
245+
throw new Error('Remove array cannot have more than 1000 addresses.');
242246
}
243247
remove.forEach((address) => {
244248
if (!isValidETHAddress(address)) {

packages/restapi/src/lib/chat/updateGroupMembers.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { EnvOptionsType, GroupInfoDTO, SignerType } from '../types';
1414
import { getGroupInfo } from './getGroupInfo';
1515
import { getGroupMemberStatus } from './getGroupMemberStatus';
1616
import * as AES from '../chat/helpers/aes';
17-
import { getAllGroupMembers } from './getAllGroupMembers';
17+
import { getAllGroupMembersPublicKeys } from './getAllGroupMembersPublicKeys';
1818

1919
export interface GroupMemberUpdateOptions extends EnvOptionsType {
2020
chatId: string;
@@ -79,18 +79,15 @@ export const updateGroupMembers = async (
7979
env,
8080
});
8181

82-
const groupMembers = await getAllGroupMembers({ chatId, env });
82+
const groupMembers = await getAllGroupMembersPublicKeys({ chatId, env });
8383

8484
const removeParticipantSet = new Set(
8585
convertedRemove.map((participant) => participant.toLowerCase())
8686
);
8787
let sameMembers = true;
8888

8989
groupMembers.map((element) => {
90-
if (
91-
element.intent &&
92-
removeParticipantSet.has(element.address.toLowerCase())
93-
) {
90+
if (removeParticipantSet.has(element.did.toLowerCase())) {
9491
sameMembers = false;
9592
}
9693
});
@@ -101,11 +98,8 @@ export const updateGroupMembers = async (
10198
const publicKeys: string[] = [];
10299
// This will now only take keys of non-removed members
103100
groupMembers.map((element) => {
104-
if (
105-
element.intent &&
106-
!removeParticipantSet.has(element.address.toLowerCase())
107-
) {
108-
publicKeys.push(element.userInfo.publicKey as string);
101+
if (!removeParticipantSet.has(element.did.toLowerCase())) {
102+
publicKeys.push(element.publicKey as string);
109103
}
110104
});
111105

packages/restapi/tests/lib/benchmark/privateGroup.test.ts

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const _env = Constants.ENV.LOCAL;
99
* THIS TEST GROUP IS FOR BENCHMARKING SEND MESSAGE FOR PRIVATE GROUP
1010
* These tests will be skipped
1111
*/
12-
describe('Private Groups', () => {
12+
describe.skip('Private Groups', () => {
1313
let account: string;
1414
let account2: string;
1515
let userAlice: PushAPI;
@@ -180,7 +180,7 @@ describe('Private Groups', () => {
180180
* STEP 3 - AUTOJOIN
181181
* This is imp for generating session keys so , do skip this test
182182
*/
183-
describe.skip('Private Group AutoJoin', () => {
183+
describe('Private Group AutoJoin', () => {
184184
it('10 Members', async () => {
185185
const chatId =
186186
'9e8bea378b4e4860956c177146786c2e96a0db8aa7c4156299181b3e56290a57';
@@ -341,18 +341,21 @@ describe('Private Groups', () => {
341341
console.log('Duration in ms : ', duration);
342342
});
343343
it('5000 Members', async () => {
344-
await createGroupAndSendMessages(userAlice, 5000);
345-
});
346-
it('10000 Members', async () => {
347-
await createGroupAndSendMessages(userAlice, 10000);
348-
});
349-
it('15000 Members', async () => {
350-
await createGroupAndSendMessages(userAlice, 15000);
344+
const chatId =
345+
'33c9295913786a8c446ceca46af8ee29a3a7144ba63071c24e5f05a5407bccdf';
346+
const startTime = new Date();
347+
await userAlice.chat.send(chatId, {
348+
content: 'Sending Message to Private Grp',
349+
type: 'Text',
350+
});
351+
const endTime = new Date();
352+
const duration = endTime.getTime() - startTime.getTime();
353+
console.log('Duration in ms : ', duration);
351354
});
352355
});
353356

354-
describe('Update Group with Pending members', () => {
355-
it.only('10 Members', async () => {
357+
describe.skip('Update Group with Pending members', () => {
358+
it('10 Members', async () => {
356359
const chatId =
357360
'd8892a41ccbb7d0c627d1e3976f3a0bd64540d1d535b1a339680f2ce5b0fbcf0';
358361
await updateGroupWithPendingMembers(userAlice, chatId, 500);
@@ -470,7 +473,6 @@ const createGroupWithPendingMembers = async (
470473
return createdGroup.chatId;
471474
};
472475

473-
474476
/**
475477
* CREATE GROUP WITH GIVEN MEMBERS COUNT PENDING MEMBERS
476478
* @dev - Added members are pending members
@@ -484,7 +486,7 @@ const updateGroupWithPendingMembers = async (
484486
* STEP 1: Generate ENOUGH USERS
485487
*/
486488
console.log('Generating Users');
487-
const users = await generateUsers(memberCount);
489+
const users = await generateUsers(memberCount);
488490

489491
/**
490492
* STEP 2: Add Members to Group
@@ -553,7 +555,6 @@ const generateUsers = async (memberCount: number): Promise<string[]> => {
553555
return users; // 'users' is an array of strings representing accounts
554556
};
555557

556-
557558
/**
558559
* CREATE GROUP WITH GIVEN MEMBERS COUNT NON-PENDING MEMBERS
559560
* @dev - Added members are pending members

0 commit comments

Comments
 (0)