@@ -14,7 +14,7 @@ public enum ModeratorPermission
14
14
/// <summary>
15
15
/// No permissions.
16
16
/// </summary>
17
- None = 0x00 ,
17
+ None = 0x00 ,
18
18
/// <summary>
19
19
/// access permissions.
20
20
/// </summary>
@@ -26,23 +26,35 @@ public enum ModeratorPermission
26
26
/// <summary>
27
27
/// Flair management.
28
28
/// </summary>
29
- Flair = 0x04 ,
29
+ Flair = 0x04 ,
30
30
/// <summary>
31
31
/// Modmail.
32
32
/// </summary>
33
- Mail = 0x08 ,
33
+ Mail = 0x08 ,
34
34
/// <summary>
35
35
/// Moderate posts.
36
36
/// </summary>
37
- Posts = 0x10 ,
37
+ Posts = 0x10 ,
38
38
/// <summary>
39
39
/// Edit / view protected wiki paes.
40
40
/// </summary>
41
- Wiki = 0x20 ,
41
+ Wiki = 0x20 ,
42
+ /// <summary>
43
+ /// Configure chat groups
44
+ /// </summary>
45
+ ChatConfig = 0x40 ,
46
+ /// <summary>
47
+ /// Moderate users in subreddit chatrooms
48
+ /// </summary>
49
+ ChatOperator = 0x80 ,
50
+ /// <summary>
51
+ /// Has the "all" permission / super user status in sub
52
+ /// </summary>
53
+ SuperUser = 0x1000000 | All , //give some padding for other permissions
42
54
/// <summary>
43
55
/// All permissions.
44
56
/// </summary>
45
- All = Access | Config | Flair | Mail | Posts | Wiki
57
+ All = Access | Config | Flair | Mail | Posts | Wiki | ChatConfig | ChatOperator
46
58
}
47
59
48
60
internal class ModeratorPermissionConverter : JsonConverter
@@ -54,12 +66,58 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s
54
66
55
67
public override object ReadJson ( JsonReader reader , Type objectType , object existingValue , JsonSerializer serializer )
56
68
{
57
- var data = string . Join ( "," , JArray . Load ( reader ) . Select ( t => t . ToString ( ) ) ) ;
58
- ModeratorPermission result ;
59
- var valid = Enum . TryParse ( data , true , out result ) ;
60
-
61
- if ( ! valid )
62
- result = ModeratorPermission . None ;
69
+ var perms = JArray . Load ( reader ) . Select ( t => t . ToString ( ) ) ;
70
+ ModeratorPermission result = ModeratorPermission . None ;
71
+ foreach ( var perm in perms )
72
+ {
73
+ switch ( perm . ToLower ( ) )
74
+ {
75
+ case "all" :
76
+ {
77
+ return ModeratorPermission . SuperUser ;
78
+ }
79
+ case "access" :
80
+ {
81
+ result = result | ModeratorPermission . Access ;
82
+ break ;
83
+ }
84
+ case "config" :
85
+ {
86
+ result = result | ModeratorPermission . Config ;
87
+ break ;
88
+ }
89
+ case "flair" :
90
+ {
91
+ result = result | ModeratorPermission . Flair ;
92
+ break ;
93
+ }
94
+ case "mail" :
95
+ {
96
+ result = result | ModeratorPermission . Mail ;
97
+ break ;
98
+ }
99
+ case "posts" :
100
+ {
101
+ result = result | ModeratorPermission . Posts ;
102
+ break ;
103
+ }
104
+ case "wiki" :
105
+ {
106
+ result = result | ModeratorPermission . Wiki ;
107
+ break ;
108
+ }
109
+ case "chat_config" :
110
+ {
111
+ result = result | ModeratorPermission . ChatConfig ;
112
+ break ;
113
+ }
114
+ case "chat_operator" :
115
+ {
116
+ result = result | ModeratorPermission . ChatOperator ;
117
+ break ;
118
+ }
119
+ }
120
+ }
63
121
64
122
return result ;
65
123
}
@@ -68,7 +126,7 @@ public override bool CanConvert(Type objectType)
68
126
{
69
127
// NOTE: Not sure if this is what is supposed to be returned
70
128
// This method wasn't called in my (Sharparam) tests so unsure what it does
71
- return objectType == typeof ( ModeratorPermission ) ;
129
+ return objectType == typeof ( ModeratorPermission ) ;
72
130
}
73
131
}
74
132
}
0 commit comments