diff --git a/libsession-util b/libsession-util index 1ed9170..43b1c6c 160000 --- a/libsession-util +++ b/libsession-util @@ -1 +1 @@ -Subproject commit 1ed9170c7329512f78b25cb2bcb7ecaa9a416d39 +Subproject commit 43b1c6c341ee8739a8678c631d0713136dbfd05f diff --git a/package.json b/package.json index 67aa106..e83d40b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "main": "index.js", "name": "libsession_util_nodejs", "description": "Wrappers for the Session Util Library", - "version": "0.4.6", + "version": "0.4.7", "license": "GPL-3.0", "author": { "name": "Oxen Project", diff --git a/src/groups/meta_group_wrapper.cpp b/src/groups/meta_group_wrapper.cpp index 7ea178e..4f2f49f 100644 --- a/src/groups/meta_group_wrapper.cpp +++ b/src/groups/meta_group_wrapper.cpp @@ -47,8 +47,11 @@ void MetaGroupWrapper::Init(Napi::Env env, Napi::Object exports) { &MetaGroupWrapper::membersMarkPendingRemoval), InstanceMethod( "memberSetNameTruncated", &MetaGroupWrapper::memberSetNameTruncated), - InstanceMethod("memberSetInvited", &MetaGroupWrapper::memberSetInvited), - InstanceMethod("memberSetAccepted", &MetaGroupWrapper::memberSetAccepted), + InstanceMethod("memberSetInviteSent", &MetaGroupWrapper::memberSetInviteSent), + InstanceMethod( + "memberSetInviteFailed", &MetaGroupWrapper::memberSetInviteFailed), + InstanceMethod( + "memberSetInviteAccepted", &MetaGroupWrapper::memberSetInviteAccepted), InstanceMethod("memberSetPromoted", &MetaGroupWrapper::memberSetPromoted), InstanceMethod( "memberSetPromotionSent", &MetaGroupWrapper::memberSetPromotionSent), @@ -342,8 +345,9 @@ Napi::Value MetaGroupWrapper::infoSet(const Napi::CallbackInfo& info) { assertIsObject(arg); auto obj = arg.As(); + // we want to not throw if the name is too long, but just truncate it if (auto name = maybeNonemptyString(obj.Get("name"), "MetaGroupWrapper::setInfo name")) - this->meta_group->info->set_name(*name); + this->meta_group->info->set_name_truncated(*name); if (auto created = maybeNonemptyInt( obj.Get("createdAtSeconds"), "MetaGroupWrapper::setInfo set_created")) @@ -454,30 +458,41 @@ void MetaGroupWrapper::memberSetNameTruncated(const Napi::CallbackInfo& info) { }); } -void MetaGroupWrapper::memberSetInvited(const Napi::CallbackInfo& info) { +void MetaGroupWrapper::memberSetInviteFailed(const Napi::CallbackInfo& info) { + wrapExceptions(info, [&] { + assertIsString(info[0]); + auto pubkeyHex = toCppString(info[0], "memberSetInviteFailed"); + + auto m = this->meta_group->members->get(pubkeyHex); + if (m) { + m->set_invite_failed(); + this->meta_group->members->set(*m); + } + }); +} + +void MetaGroupWrapper::memberSetInviteSent(const Napi::CallbackInfo& info) { wrapExceptions(info, [&] { assertIsString(info[0]); - assertIsBoolean(info[1]); - auto pubkeyHex = toCppString(info[0], "memberSetInvited"); - auto failed = toCppBoolean(info[1], "memberSetInvited"); + auto pubkeyHex = toCppString(info[0], "memberSetInviteSent"); auto m = this->meta_group->members->get(pubkeyHex); if (m) { - m->set_invited(failed); + m->set_invite_sent(); this->meta_group->members->set(*m); } }); } -void MetaGroupWrapper::memberSetAccepted(const Napi::CallbackInfo& info) { +void MetaGroupWrapper::memberSetInviteAccepted(const Napi::CallbackInfo& info) { wrapExceptions(info, [&] { assertInfoLength(info, 1); assertIsString(info[0]); - auto pubkeyHex = toCppString(info[0], "memberSetAccepted"); + auto pubkeyHex = toCppString(info[0], "memberSetInviteAccepted"); auto m = this->meta_group->members->get(pubkeyHex); if (m) { - m->set_accepted(); + m->set_invite_accepted(); this->meta_group->members->set(*m); } }); diff --git a/src/groups/meta_group_wrapper.hpp b/src/groups/meta_group_wrapper.hpp index f40c219..07ce9a1 100644 --- a/src/groups/meta_group_wrapper.hpp +++ b/src/groups/meta_group_wrapper.hpp @@ -124,8 +124,9 @@ class MetaGroupWrapper : public Napi::ObjectWrap { Napi::Value memberConstructAndSet(const Napi::CallbackInfo& info); void memberSetNameTruncated(const Napi::CallbackInfo& info); - void memberSetInvited(const Napi::CallbackInfo& info); - void memberSetAccepted(const Napi::CallbackInfo& info); + void memberSetInviteFailed(const Napi::CallbackInfo& info); + void memberSetInviteSent(const Napi::CallbackInfo& info); + void memberSetInviteAccepted(const Napi::CallbackInfo& info); void memberSetPromoted(const Napi::CallbackInfo& info); void memberSetPromotionSent(const Napi::CallbackInfo& info); void memberSetPromotionFailed(const Napi::CallbackInfo& info); diff --git a/src/user_groups_config.cpp b/src/user_groups_config.cpp index 1b29ffc..3d91247 100644 --- a/src/user_groups_config.cpp +++ b/src/user_groups_config.cpp @@ -70,7 +70,7 @@ struct toJs_impl { obj["authData"] = toJs(env, info.auth_data); obj["invitePending"] = toJs(env, info.invited); obj["kicked"] = toJs(env, info.kicked()); - obj["destroyed"] = toJs(env, info.isDestroyed()); + obj["destroyed"] = toJs(env, info.is_destroyed()); return obj; } @@ -346,7 +346,7 @@ Napi::Value UserGroupsWrapper::markGroupKicked(const Napi::CallbackInfo& info) { auto group = config.get_group(groupPk); if (group) { - group->markKicked(); + group->mark_kicked(); config.set(*group); } return config.get_or_construct_group(groupPk); @@ -359,7 +359,7 @@ Napi::Value UserGroupsWrapper::markGroupInvited(const Napi::CallbackInfo& info) auto group = config.get_group(groupPk); if (group) { - group->markInvited(); + group->mark_invited(); config.set(*group); } return config.get_or_construct_group(groupPk); @@ -372,7 +372,7 @@ Napi::Value UserGroupsWrapper::markGroupDestroyed(const Napi::CallbackInfo& info auto group = config.get_group(groupPk); if (group) { - group->markDestroyed(); + group->mark_destroyed(); config.set(*group); } return config.get_or_construct_group(groupPk); diff --git a/types/groups/groupmembers.d.ts b/types/groups/groupmembers.d.ts index 2ebcc7a..9de3dcb 100644 --- a/types/groups/groupmembers.d.ts +++ b/types/groups/groupmembers.d.ts @@ -78,10 +78,18 @@ declare module 'libsession_util_nodejs' { // setters memberSetNameTruncated: (pubkeyHex: PubkeyType, newName: string) => void; - /** A member's invite state defaults to invite-not-sent. Use this function to mark that you've sent one, or at least tried (failed: boolean)*/ - memberSetInvited: (pubkeyHex: PubkeyType, failed: boolean) => void; + /** + * A member's invite state defaults to invite-not-sent. + * Use this function to mark that you've failed to send one successfully. + **/ + memberSetInviteFailed: (pubkeyHex: PubkeyType) => void; + /** + * A member's invite state defaults to invite-not-sent. + * Use this function to mark that you've sent one successfully. + **/ + memberSetInviteSent: (pubkeyHex: PubkeyType) => void; /** User has accepted an invitation and is now a regular member of the group */ - memberSetAccepted: (pubkeyHex: PubkeyType) => void; + memberSetInviteAccepted: (pubkeyHex: PubkeyType) => void; /** Mark the member as waiting a promotion to be sent to them */ memberSetPromoted: (pubkeyHex: PubkeyType) => void; diff --git a/types/groups/metagroup.d.ts b/types/groups/metagroup.d.ts index f812070..a0f081f 100644 --- a/types/groups/metagroup.d.ts +++ b/types/groups/metagroup.d.ts @@ -92,13 +92,14 @@ declare module 'libsession_util_nodejs' { public memberConstructAndSet: MetaGroupWrapper['memberConstructAndSet']; public memberGetAll: MetaGroupWrapper['memberGetAll']; public memberGetAllPendingRemovals: MetaGroupWrapper['memberGetAllPendingRemovals']; - public memberSetAccepted: MetaGroupWrapper['memberSetAccepted']; + public memberSetInviteAccepted: MetaGroupWrapper['memberSetInviteAccepted']; public memberSetNameTruncated: MetaGroupWrapper['memberSetNameTruncated']; public memberSetPromoted: MetaGroupWrapper['memberSetPromoted']; public memberSetPromotionAccepted: MetaGroupWrapper['memberSetPromotionAccepted']; public memberSetPromotionSent: MetaGroupWrapper['memberSetPromotionSent']; public memberSetPromotionFailed: MetaGroupWrapper['memberSetPromotionFailed']; - public memberSetInvited: MetaGroupWrapper['memberSetInvited']; + public memberSetInviteSent: MetaGroupWrapper['memberSetInviteSent']; + public memberSetInviteFailed: MetaGroupWrapper['memberSetInviteFailed']; public memberEraseAndRekey: MetaGroupWrapper['memberEraseAndRekey']; public membersMarkPendingRemoval: MetaGroupWrapper['membersMarkPendingRemoval']; public memberSetProfilePicture: MetaGroupWrapper['memberSetProfilePicture']; @@ -139,13 +140,14 @@ declare module 'libsession_util_nodejs' { | MakeActionCall | MakeActionCall | MakeActionCall - | MakeActionCall + | MakeActionCall | MakeActionCall | MakeActionCall | MakeActionCall | MakeActionCall | MakeActionCall - | MakeActionCall + | MakeActionCall + | MakeActionCall | MakeActionCall | MakeActionCall | MakeActionCall