Skip to content

Commit 760fffc

Browse files
committed
feat: add keysAdmin and memberConstruct&Set
1 parent 52bd57f commit 760fffc

File tree

6 files changed

+38
-5
lines changed

6 files changed

+38
-5
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@
1818
"cmake-js": "7.2.1",
1919
"node-addon-api": "^6.1.0"
2020
},
21-
"typings": "index.d.ts"
21+
"typings": "index.d.ts",
22+
"packageManager": "[email protected]"
2223
}

src/groups/meta_group_wrapper.cpp

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ void MetaGroupWrapper::Init(Napi::Env env, Napi::Object exports) {
3737
// members exposed functions
3838
InstanceMethod("memberGet", &MetaGroupWrapper::memberGet),
3939
InstanceMethod("memberGetOrConstruct", &MetaGroupWrapper::memberGetOrConstruct),
40+
InstanceMethod(
41+
"memberConstructAndSet", &MetaGroupWrapper::memberConstructAndSet),
42+
4043
InstanceMethod("memberGetAll", &MetaGroupWrapper::memberGetAll),
4144
InstanceMethod(
4245
"memberGetAllPendingRemovals",
@@ -417,6 +420,17 @@ Napi::Value MetaGroupWrapper::memberGetOrConstruct(const Napi::CallbackInfo& inf
417420
});
418421
}
419422

423+
void MetaGroupWrapper::memberConstructAndSet(const Napi::CallbackInfo& info) {
424+
wrapExceptions(info, [&] {
425+
assertInfoLength(info, 1);
426+
assertIsString(info[0]);
427+
428+
auto pubkeyHex = toCppString(info[0], __PRETTY_FUNCTION__);
429+
auto created = meta_group->members->get_or_construct(pubkeyHex);
430+
meta_group->members->set(created);
431+
});
432+
}
433+
420434
void MetaGroupWrapper::memberSetName(const Napi::CallbackInfo& info) {
421435
wrapExceptions(info, [&] {
422436
assertIsString(info[0]);
@@ -477,17 +491,17 @@ void MetaGroupWrapper::memberSetPromoted(const Napi::CallbackInfo& info) {
477491
}
478492

479493
void MetaGroupWrapper::memberSetAdmin(const Napi::CallbackInfo& info) {
480-
481494
wrapExceptions(info, [&] {
482495
assertInfoLength(info, 1);
483496
assertIsString(info[0]);
484497
auto pubkeyHex = toCppString(info[0], __PRETTY_FUNCTION__);
485498
// Note: this step might add an admin which was removed back once he accepts the promotion,
486499
// but there is not much we can do about it
487500
auto m = this->meta_group->members->get(pubkeyHex);
488-
m->admin = true;
489-
490-
this->meta_group->members->set(*m);
501+
if (m) {
502+
m->admin = true;
503+
this->meta_group->members->set(*m);
504+
}
491505
});
492506
}
493507

@@ -689,6 +703,14 @@ Napi::Value MetaGroupWrapper::loadAdminKeys(const Napi::CallbackInfo& info) {
689703
});
690704
}
691705

706+
707+
Napi::Value MetaGroupWrapper::keysAdmin(const Napi::CallbackInfo& info) {
708+
return wrapResult(info, [&] {
709+
assertInfoLength(info, 0);
710+
return this->meta_group->keys->admin();
711+
});
712+
}
713+
692714
Napi::Value MetaGroupWrapper::generateSupplementKeys(const Napi::CallbackInfo& info) {
693715
return wrapResult(info, [&] {
694716
assertInfoLength(info, 1);

src/groups/meta_group_wrapper.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ class MetaGroupWrapper : public Napi::ObjectWrap<MetaGroupWrapper> {
7373
Napi::Value memberGetAllPendingRemovals(const Napi::CallbackInfo& info);
7474
Napi::Value memberGet(const Napi::CallbackInfo& info);
7575
Napi::Value memberGetOrConstruct(const Napi::CallbackInfo& info);
76+
void memberConstructAndSet(const Napi::CallbackInfo& info);
77+
7678
void memberSetName(const Napi::CallbackInfo& info);
7779
void memberSetInvited(const Napi::CallbackInfo& info);
7880
void memberSetAccepted(const Napi::CallbackInfo& info);
@@ -98,6 +100,7 @@ class MetaGroupWrapper : public Napi::ObjectWrap<MetaGroupWrapper> {
98100
Napi::Value swarmSubaccountSign(const Napi::CallbackInfo& info);
99101
Napi::Value swarmVerifySubAccount(const Napi::CallbackInfo& info);
100102
Napi::Value loadAdminKeys(const Napi::CallbackInfo& info);
103+
Napi::Value keysAdmin(const Napi::CallbackInfo& info);
101104
};
102105

103106
} // namespace session::nodeapi

types/groups/groupkeys.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ declare module 'libsession_util_nodejs' {
77
keyRekey: () => Uint8Array;
88
keyGetAll: () => Array<Uint8Array>;
99
loadKeyMessage: (hash: string, data: Uint8Array, timestampMs: number) => boolean;
10+
keysAdmin: () => boolean;
1011
keyGetCurrentGen: () => number;
1112

1213
currentHashes: () => Array<string>;

types/groups/groupmembers.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ declare module 'libsession_util_nodejs' {
3131
// GroupMember related methods
3232
memberGet: (pubkeyHex: PubkeyType) => GroupMemberGet | null;
3333
memberGetOrConstruct: (pubkeyHex: PubkeyType) => GroupMemberGet;
34+
memberConstructAndSet: (pubkeyHex: PubkeyType) => void;
35+
3436
memberGetAll: () => Array<GroupMemberGet>;
3537
memberGetAllPendingRemovals: () => Array<GroupMemberGet>;
3638

types/groups/metagroup.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ declare module 'libsession_util_nodejs' {
7676
// members
7777
public memberGet: MetaGroupWrapper['memberGet'];
7878
public memberGetOrConstruct: MetaGroupWrapper['memberGetOrConstruct'];
79+
public memberConstructAndSet: MetaGroupWrapper['memberConstructAndSet'];
7980
public memberGetAll: MetaGroupWrapper['memberGetAll'];
8081
public memberGetAllPendingRemovals: MetaGroupWrapper['memberGetAllPendingRemovals'];
8182
public memberSetAccepted: MetaGroupWrapper['memberSetAccepted'];
@@ -92,6 +93,7 @@ declare module 'libsession_util_nodejs' {
9293
public keysNeedsRekey: MetaGroupWrapper['keysNeedsRekey'];
9394
public keyRekey: MetaGroupWrapper['keyRekey'];
9495
public loadKeyMessage: MetaGroupWrapper['loadKeyMessage'];
96+
public keysAdmin: MetaGroupWrapper['keysAdmin'];
9597
public keyGetCurrentGen: MetaGroupWrapper['keyGetCurrentGen'];
9698
public encryptMessages: MetaGroupWrapper['encryptMessages'];
9799
public decryptMessage: MetaGroupWrapper['decryptMessage'];
@@ -119,6 +121,7 @@ declare module 'libsession_util_nodejs' {
119121
// member actions
120122
| MakeActionCall<MetaGroupWrapper, 'memberGet'>
121123
| MakeActionCall<MetaGroupWrapper, 'memberGetOrConstruct'>
124+
| MakeActionCall<MetaGroupWrapper, 'memberConstructAndSet'>
122125
| MakeActionCall<MetaGroupWrapper, 'memberGetAll'>
123126
| MakeActionCall<MetaGroupWrapper, 'memberGetAllPendingRemovals'>
124127
| MakeActionCall<MetaGroupWrapper, 'memberSetAccepted'>
@@ -135,6 +138,7 @@ declare module 'libsession_util_nodejs' {
135138
| MakeActionCall<MetaGroupWrapper, 'keyRekey'>
136139
| MakeActionCall<MetaGroupWrapper, 'keyGetAll'>
137140
| MakeActionCall<MetaGroupWrapper, 'loadKeyMessage'>
141+
| MakeActionCall<MetaGroupWrapper, 'keysAdmin'>
138142
| MakeActionCall<MetaGroupWrapper, 'keyGetCurrentGen'>
139143
| MakeActionCall<MetaGroupWrapper, 'currentHashes'>
140144
| MakeActionCall<MetaGroupWrapper, 'encryptMessages'>

0 commit comments

Comments
 (0)