feat: add protobuf changes for new groups

pull/2873/head
Audric Ackermann 2 years ago
parent db98cc2812
commit f23c52557b

@ -44,9 +44,9 @@ message SharedConfigMessage {
CONTACTS = 2;
CONVO_INFO_VOLATILE = 3;
USER_GROUPS = 4;
// CLOSED_GROUP_INFO = 5;
// CLOSED_GROUP_MEMBERS = 6;
// ENCRYPTION_KEYS = 7;
GROUP_INFO = 5;
GROUP_MEMBERS = 6;
GROUP_KEYS = 7;
}
required Kind kind = 1;
@ -85,41 +85,90 @@ message DataExtractionNotification {
optional uint64 timestamp = 2;
}
// message GroupInviteMessage {
// required string name = 1;
// required bytes memberPrivateKey = 2;
// }
// this will replace our closedGroupControlMessage but we will need to keep both for some time
// message GroupMessage {
// optional GroupAdminMessage adminMessage = 31;
// optional GroupMemberLeftMessage memberLeftMessage = 32;
// optional GroupInviteMessage inviteMessage = 33;
// optional GroupPromoteMessage promoteMessage = 34;
// }
// message GroupPromoteMessage {
// required bytes privateKey = 1; // this is the group admins key
// }
// message GroupAdminMessage {
// enum Type {
// DELETE_GROUP = 1; // members, groupSignature
// DELETE_GROUP_ALL_MEMBERS = 2; // groupSignature
// DELETE_MESSAGES_ALL_MEMBERS = 3; // groupSignature
// DELETE_ATTACHMENTS_ALL_MEMBERS = 4; // groupSignature
// }
//
// // @required
// required Type type = 1;
// repeated bytes members = 2;
message GroupUpdateInviteMessage {
// @required
// required bytes groupSignature = 3; // used by every members to make sure incoming admin action can be trusted
// }
required bytes groupIdentityPublicKey = 1;
// @required
required string name = 2;
// @required
required bytes memberSubkey = 3;
// @required
required bytes memberTag = 4;
optional bytes profileKey = 5;
optional LokiProfile profile = 6;
}
message GroupUpdateDeleteMessage {
// @required
required bytes groupIdentityPublicKey = 1;
// @required
required bytes encryptedMemberSubkey = 2;
}
message GroupUpdateInfoChangeMessage {
enum Type {
NAME = 1;
AVATAR = 2;
DISAPPEARING_MESSAGES = 3;
}
// @required
required Type type = 1;
optional string updatedName = 2;
optional uint32 updatedExpiration = 3;
}
message GroupUpdateMemberChangeMessage {
enum Type {
ADDED = 1;
REMOVED = 2;
PROMOTED = 3;
}
// @required
required Type type = 1;
repeated bytes memberPublicKeys = 2;
}
message GroupUpdatePromoteMessage {
// @required
required bytes memberPublicKey = 1;
// @required
required bytes encryptedGroupIdentityPrivateKey = 2;
}
message GroupUpdateMemberLeftMessage {
// the pubkey of the member left is included as part of the closed group encryption logic (senderIdentity on desktop)
}
message GroupUpdateInviteResponseMessage {
// @required
required bool isApproved = 1; // Whether the request was approved
optional bytes profileKey = 2;
optional LokiProfile profile = 3;
}
message GroupUpdatePromotionResponseMessage {
// @required
required bytes encryptedMemberPublicKey = 1;
}
message GroupUpdateDeleteMemberContentMessage {
repeated bytes memberPublicKeys = 2;
}
message GroupUpdateMessage {
optional GroupUpdateInviteMessage inviteMessage = 31;
optional GroupUpdateDeleteMessage deleteMessage = 32;
optional GroupUpdateInfoChangeMessage infoChangeMessage = 33;
optional GroupUpdateMemberChangeMessage memberChangeMessage = 34;
optional GroupUpdatePromoteMessage promoteMessage = 35;
optional GroupUpdateMemberLeftMessage memberLeftMessage = 36;
optional GroupUpdateInviteResponseMessage inviteResponse = 37;
optional GroupUpdatePromotionResponseMessage promotionResponse = 38;
optional GroupUpdateDeleteMemberContentMessage deleteMemberContent = 39;
}
// message GroupMemberLeftMessage {
// the pubkey of the member who left is already in the senderIdentity
// }
message DataMessage {
@ -225,8 +274,7 @@ message DataMessage {
optional ClosedGroupControlMessage closedGroupControlMessage = 104;
optional string syncTarget = 105;
optional bool blocksCommunityMessageRequests = 106;
// optional GroupMessage groupMessage = 120;
}
optional GroupUpdateMessage groupUpdateMessage = 120;}
message CallMessage {

@ -13,6 +13,7 @@ import {
ProfilePicture,
UserConfigWrapperActionsCalls,
UserGroupsWrapperActionsCalls,
UserGroupsSet,
} from 'libsession_util_nodejs';
import { join } from 'path';
@ -264,6 +265,21 @@ export const UserGroupsWrapperActions: UserGroupsWrapperActionsCalls = {
callLibSessionWorker(['UserGroupsConfig', 'getGroup', pubkeyHex]) as Promise<
ReturnType<UserGroupsWrapperActionsCalls['getGroup']>
>,
getAllGroups: async () =>
callLibSessionWorker(['UserGroupsConfig', 'getAllGroups']) as Promise<
ReturnType<UserGroupsWrapperActionsCalls['getAllGroups']>
>,
setGroup: async (info: UserGroupsSet) =>
callLibSessionWorker(['UserGroupsConfig', 'setGroup', info]) as Promise<
ReturnType<UserGroupsWrapperActionsCalls['setGroup']>
>,
eraseGroup: async (pubkeyHex: GroupPubkeyType) =>
callLibSessionWorker(['UserGroupsConfig', 'eraseGroup', pubkeyHex]) as Promise<
ReturnType<UserGroupsWrapperActionsCalls['eraseGroup']>
>,
};
export const ConvoInfoVolatileWrapperActions: ConvoInfoVolatileWrapperActionsCalls = {

Loading…
Cancel
Save