7
7
#include " ../utilities.hpp"
8
8
#include " ./meta_group.hpp"
9
9
#include " oxenc/bt_producer.h"
10
+ #include " session/config/groups/members.hpp"
10
11
#include " session/config/user_groups.hpp"
11
12
12
13
namespace session ::nodeapi {
@@ -25,43 +26,57 @@ struct toJs_impl<member> {
25
26
obj[" pubkeyHex" ] = toJs (env, info.session_id );
26
27
obj[" name" ] = toJs (env, info.name );
27
28
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" };
52
75
}
53
76
77
+ // we display the "crown" on top of the member's avatar when this field is true
54
78
obj[" nominatedAdmin" ] = toJs (env, info.admin );
55
79
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
- }
65
80
return obj;
66
81
}
67
82
};
0 commit comments