77#include " ../utilities.hpp"
88#include " ./meta_group.hpp"
99#include " oxenc/bt_producer.h"
10+ #include " session/config/groups/members.hpp"
1011#include " session/config/user_groups.hpp"
1112
1213namespace session ::nodeapi {
@@ -25,43 +26,57 @@ struct toJs_impl<member> {
2526 obj[" pubkeyHex" ] = toJs (env, info.session_id );
2627 obj[" name" ] = toJs (env, info.name );
2728 obj[" profilePicture" ] = toJs (env, info.profile_picture );
28- obj[" removedStatus" ] = toJs (env, info.removed_status );
29-
30- // promoted() is true as soon as the member is scheduled to be promoted
31- // Note: this should be part of `libsession-util`, not `libsession-util-nodejs`
32- if (info.promoted () && !info.promotion_pending ()) {
33- obj[" memberStatus" ] = toJs (env, " PROMOTION_ACCEPTED" );
34- } else if (info.promotion_failed ()) {
35- obj[" memberStatus" ] = toJs (env, " PROMOTION_FAILED" );
36- } else if (info.promotion_pending ()) {
37- obj[" memberStatus" ] = toJs (env, " PROMOTION_SENT" );
38- } else if (info.admin ) {
39- obj[" memberStatus" ] = toJs (env, " PROMOTION_NOT_SENT" );
40- } else if (info.invite_status == 0 ) {
41- obj[" memberStatus" ] = toJs (env, " INVITE_ACCEPTED" );
42- } else if (info.invite_not_sent ()) {
43- obj[" memberStatus" ] = toJs (env, " INVITE_NOT_SENT" );
44- } else if (info.invite_failed ()) {
45- obj[" memberStatus" ] = toJs (env, " INVITE_FAILED" );
46- } else if (info.invite_pending ()) {
47- // Note: INVITE_NOT_SENT is 3, which makes invite_pending() return true, so be sure to
48- // check for invite_not_sent() above.
49- obj[" memberStatus" ] = toJs (env, " INVITE_SENT" );
50- } else {
51- obj[" memberStatus" ] = toJs (env, " UNKNOWN" );
29+
30+ auto status = info.status ();
31+
32+ switch (status) {
33+ // invite statuses
34+ case member::Status::invite_unknown:
35+ obj[" memberStatus" ] = toJs (env, " INVITE_UNKNOWN" );
36+ break ;
37+ case member::Status::invite_not_sent:
38+ obj[" memberStatus" ] = toJs (env, " INVITE_NOT_SENT" );
39+ break ;
40+ case member::Status::invite_failed:
41+ obj[" memberStatus" ] = toJs (env, " INVITE_FAILED" );
42+ break ;
43+ case member::Status::invite_sent: obj[" memberStatus" ] = toJs (env, " INVITE_SENT" ); break ;
44+ case member::Status::invite_accepted:
45+ obj[" memberStatus" ] = toJs (env, " INVITE_ACCEPTED" );
46+ break ;
47+
48+ // promotion statuses
49+ case member::Status::promotion_unknown:
50+ obj[" memberStatus" ] = toJs (env, " PROMOTION_UNKNOWN" );
51+ break ;
52+ case member::Status::promotion_not_sent:
53+ obj[" memberStatus" ] = toJs (env, " PROMOTION_NOT_SENT" );
54+ break ;
55+ case member::Status::promotion_failed:
56+ obj[" memberStatus" ] = toJs (env, " PROMOTION_FAILED" );
57+ break ;
58+ case member::Status::promotion_sent:
59+ obj[" memberStatus" ] = toJs (env, " PROMOTION_SENT" );
60+ break ;
61+ case member::Status::promotion_accepted:
62+ obj[" memberStatus" ] = toJs (env, " PROMOTION_ACCEPTED" );
63+ break ;
64+
65+ // removed statuses
66+ case member::Status::removed_unknown:
67+ obj[" memberStatus" ] = toJs (env, " REMOVED_UNKNOWN" );
68+ break ;
69+ case member::Status::removed: obj[" memberStatus" ] = toJs (env, " REMOVED_MEMBER" ); break ;
70+ case member::Status::removed_including_messages:
71+ obj[" memberStatus" ] = toJs (env, " REMOVED_MEMBER_AND_MESSAGES" );
72+ break ;
73+
74+ default : throw std::runtime_error{" Invalid member status got as an enum" };
5275 }
5376
77+ // we display the "crown" on top of the member's avatar when this field is true
5478 obj[" nominatedAdmin" ] = toJs (env, info.admin );
5579
56- if (!info.is_removed ()) {
57- obj[" removedStatus" ] = toJs (env, " NOT_REMOVED" );
58- } else {
59- if (info.should_remove_messages ()) {
60- obj[" removedStatus" ] = toJs (env, " REMOVED_MEMBER_AND_MESSAGES" );
61- } else {
62- obj[" removedStatus" ] = toJs (env, " REMOVED_MEMBER" );
63- }
64- }
6580 return obj;
6681 }
6782};
0 commit comments