Skip to content

Commit 126cd0f

Browse files
authored
Merge pull request session-foundation#21 from Bilb/break-down-set-user-info
fix: break down get/set userInfo functions
2 parents af646ac + 68a5827 commit 126cd0f

File tree

4 files changed

+88
-51
lines changed

4 files changed

+88
-51
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"main": "index.js",
33
"name": "libsession_util_nodejs",
44
"description": "Wrappers for the Session Util Library",
5-
"version": "0.3.22",
5+
"version": "0.3.23",
66
"license": "GPL-3.0",
77
"author": {
88
"name": "Oxen Project",

src/user_config.cpp

Lines changed: 56 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,13 @@ void UserConfigWrapper::Init(Napi::Env env, Napi::Object exports) {
1414
exports,
1515
"UserConfigWrapperNode",
1616
{
17-
InstanceMethod("getUserInfo", &UserConfigWrapper::getUserInfo),
18-
InstanceMethod("setUserInfo", &UserConfigWrapper::setUserInfo),
17+
InstanceMethod("getPriority", &UserConfigWrapper::getPriority),
18+
InstanceMethod("getName", &UserConfigWrapper::getName),
19+
InstanceMethod("getProfilePic", &UserConfigWrapper::getProfilePic),
20+
InstanceMethod("setPriority", &UserConfigWrapper::setPriority),
21+
InstanceMethod("setName", &UserConfigWrapper::setName),
22+
InstanceMethod("setNameTruncated", &UserConfigWrapper::setNameTruncated),
23+
InstanceMethod("setProfilePic", &UserConfigWrapper::setProfilePic),
1924
InstanceMethod(
2025
"getEnableBlindedMsgRequest",
2126
&UserConfigWrapper::getEnableBlindedMsgRequest),
@@ -31,56 +36,75 @@ UserConfigWrapper::UserConfigWrapper(const Napi::CallbackInfo& info) :
3136
ConfigBaseImpl{construct<config::UserProfile>(info, "UserConfig")},
3237
Napi::ObjectWrap<UserConfigWrapper>{info} {}
3338

34-
Napi::Value UserConfigWrapper::getUserInfo(const Napi::CallbackInfo& info) {
39+
40+
Napi::Value UserConfigWrapper::getPriority(const Napi::CallbackInfo& info) {
3541
return wrapResult(info, [&] {
3642
auto env = info.Env();
37-
auto user_info_obj = Napi::Object::New(env);
43+
return config.get_nts_priority();
44+
});
45+
}
3846

39-
auto name = config.get_name();
40-
auto priority = config.get_nts_priority();
47+
Napi::Value UserConfigWrapper::getName(const Napi::CallbackInfo& info) {
48+
return wrapResult(info, [&] {
49+
auto env = info.Env();
50+
return config.get_name();
51+
});
52+
}
4153

42-
user_info_obj["name"] = toJs(env, name);
43-
user_info_obj["priority"] = toJs(env, priority);
54+
Napi::Value UserConfigWrapper::getProfilePic(const Napi::CallbackInfo& info) {
55+
return wrapResult(info, [&] {
56+
auto env = info.Env();
57+
return object_from_profile_pic(env, config.get_profile_pic());
58+
});
59+
}
4460

45-
auto profile_pic_obj = object_from_profile_pic(env, config.get_profile_pic());
46-
if (profile_pic_obj) {
47-
user_info_obj["url"] = profile_pic_obj.Get("url");
48-
user_info_obj["key"] = profile_pic_obj.Get("key");
49-
} else {
50-
user_info_obj["url"] = env.Null();
51-
user_info_obj["key"] = env.Null();
52-
}
61+
void UserConfigWrapper::setPriority(const Napi::CallbackInfo& info) {
62+
return wrapExceptions(info, [&] {
63+
auto env = info.Env();
64+
assertInfoLength(info, 1);
65+
auto priority = info[0];
66+
assertIsNumber(priority);
5367

54-
return user_info_obj;
68+
auto new_priority = toPriority(priority, config.get_nts_priority());
69+
config.set_nts_priority(new_priority);
5570
});
5671
}
5772

58-
Napi::Value UserConfigWrapper::setUserInfo(const Napi::CallbackInfo& info) {
59-
return wrapResult(info, [&] {
60-
assertInfoLength(info, 3);
61-
73+
void UserConfigWrapper::setName(const Napi::CallbackInfo& info) {
74+
return wrapExceptions(info, [&] {
75+
auto env = info.Env();
76+
assertInfoLength(info, 1);
6277
auto name = info[0];
63-
auto priority = info[1];
64-
auto profile_pic_obj = info[2];
78+
assertIsString(name);
6579

66-
assertIsStringOrNull(name);
67-
assertIsNumber(priority);
68-
std::string new_name;
80+
auto new_name = name.As<Napi::String>().Utf8Value();
81+
// this will throw if the name is too long
82+
config.set_name(new_name);
83+
});
84+
}
6985

70-
if (name.IsString())
71-
new_name = name.As<Napi::String>().Utf8Value();
86+
void UserConfigWrapper::setNameTruncated(const Napi::CallbackInfo& info) {
87+
return wrapExceptions(info, [&] {
88+
auto env = info.Env();
89+
assertInfoLength(info, 1);
90+
auto name = info[0];
91+
assertIsString(name);
7292

93+
auto new_name = name.As<Napi::String>().Utf8Value();
94+
// this will truncate silently if the name is too long
7395
config.set_name_truncated(new_name);
96+
});
97+
}
7498

75-
auto new_priority = toPriority(priority, config.get_nts_priority());
76-
config.set_nts_priority(new_priority);
99+
void UserConfigWrapper::setProfilePic(const Napi::CallbackInfo& info) {
100+
return wrapExceptions(info, [&] {
101+
assertInfoLength(info, 1);
102+
auto profile_pic_obj = info[0];
77103

78104
if (!profile_pic_obj.IsNull() && !profile_pic_obj.IsUndefined())
79105
assertIsObject(profile_pic_obj);
80106

81107
config.set_profile_pic(profile_pic_from_object(profile_pic_obj));
82-
83-
return config.get_name();
84108
});
85109
}
86110

src/user_config.hpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,13 @@ class UserConfigWrapper : public ConfigBaseImpl, public Napi::ObjectWrap<UserCon
1717
private:
1818
config::UserProfile& config{get_config<config::UserProfile>()};
1919

20-
Napi::Value getUserInfo(const Napi::CallbackInfo& info);
21-
Napi::Value setUserInfo(const Napi::CallbackInfo& info);
20+
Napi::Value getPriority(const Napi::CallbackInfo& info);
21+
Napi::Value getName(const Napi::CallbackInfo& info);
22+
Napi::Value getProfilePic(const Napi::CallbackInfo& info);
23+
void setPriority(const Napi::CallbackInfo& info);
24+
void setName(const Napi::CallbackInfo& info);
25+
void setNameTruncated(const Napi::CallbackInfo& info);
26+
void setProfilePic(const Napi::CallbackInfo& info);
2227

2328
Napi::Value getEnableBlindedMsgRequest(const Napi::CallbackInfo& info);
2429
void setEnableBlindedMsgRequest(const Napi::CallbackInfo& info);

user/userconfig.d.ts

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/// <reference path="../shared.d.ts" />
2+
13
declare module 'libsession_util_nodejs' {
24
/**
35
*
@@ -9,18 +11,14 @@ declare module 'libsession_util_nodejs' {
911
init: (secretKey: Uint8Array, dump: Uint8Array | null) => void;
1012
/** This function is used to free wrappers from memory only */
1113
free: () => void;
12-
getUserInfo: () => {
13-
name: string;
14-
priority: number;
15-
url: string;
16-
key: Uint8Array;
17-
};
18-
/** if name > CONTACT_MAX_NAME_LENGTH it will be truncated */
19-
setUserInfo: (
20-
name: string,
21-
priority: number,
22-
profilePic: { url: string; key: Uint8Array } | null
23-
) => string;
14+
getPriority: () => number;
15+
getName: () => string | null;
16+
getProfilePic: () => ProfilePicture;
17+
setPriority: (priority: number) => void;
18+
setName: (name: string) => void;
19+
setNameTruncated: (name: string) => void;
20+
setProfilePic: (pic: ProfilePicture) => void;
21+
2422
setEnableBlindedMsgRequest: (msgRequest: boolean) => void;
2523
getEnableBlindedMsgRequest: () => boolean | undefined;
2624
setNoteToSelfExpiry: (expirySeconds: number) => void;
@@ -37,8 +35,13 @@ declare module 'libsession_util_nodejs' {
3735
*/
3836
export class UserConfigWrapperNode extends BaseConfigWrapperNode {
3937
constructor(secretKey: Uint8Array, dump: Uint8Array | null);
40-
public getUserInfo: UserConfigWrapper['getUserInfo'];
41-
public setUserInfo: UserConfigWrapper['setUserInfo'];
38+
public getPriority: UserConfigWrapper['getPriority'];
39+
public getName: UserConfigWrapper['getName'];
40+
public getProfilePic: UserConfigWrapper['getProfilePic'];
41+
public setPriority: UserConfigWrapper['setPriority'];
42+
public setName: UserConfigWrapper['setName'];
43+
public setNameTruncated: UserConfigWrapper['setNameTruncated'];
44+
public setProfilePic: UserConfigWrapper['setProfilePic'];
4245
public getEnableBlindedMsgRequest: UserConfigWrapper['getEnableBlindedMsgRequest'];
4346
public setEnableBlindedMsgRequest: UserConfigWrapper['setEnableBlindedMsgRequest'];
4447
public getNoteToSelfExpiry: UserConfigWrapper['getNoteToSelfExpiry'];
@@ -53,8 +56,13 @@ declare module 'libsession_util_nodejs' {
5356
export type UserConfigActionsType =
5457
| ['init', Uint8Array, Uint8Array | null]
5558
| MakeActionCall<UserConfigWrapper, 'free'>
56-
| MakeActionCall<UserConfigWrapper, 'getUserInfo'>
57-
| MakeActionCall<UserConfigWrapper, 'setUserInfo'>
59+
| MakeActionCall<UserConfigWrapper, 'getPriority'>
60+
| MakeActionCall<UserConfigWrapper, 'getName'>
61+
| MakeActionCall<UserConfigWrapper, 'getProfilePic'>
62+
| MakeActionCall<UserConfigWrapper, 'setPriority'>
63+
| MakeActionCall<UserConfigWrapper, 'setName'>
64+
| MakeActionCall<UserConfigWrapper, 'setNameTruncated'>
65+
| MakeActionCall<UserConfigWrapper, 'setProfilePic'>
5866
| MakeActionCall<UserConfigWrapper, 'getEnableBlindedMsgRequest'>
5967
| MakeActionCall<UserConfigWrapper, 'setEnableBlindedMsgRequest'>
6068
| MakeActionCall<UserConfigWrapper, 'getNoteToSelfExpiry'>

0 commit comments

Comments
 (0)