@@ -72,6 +72,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
72
72
powerLevelsIncludeNotifications : false ,
73
73
allowKnockingInEventAuth : false ,
74
74
allowRestrictedJoinsInEventAuth : false ,
75
+ requireIntegerPowerLevels : false ,
75
76
},
76
77
RoomVersionV2 : {
77
78
Supported : true ,
@@ -85,6 +86,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
85
86
powerLevelsIncludeNotifications : false ,
86
87
allowKnockingInEventAuth : false ,
87
88
allowRestrictedJoinsInEventAuth : false ,
89
+ requireIntegerPowerLevels : false ,
88
90
},
89
91
RoomVersionV3 : {
90
92
Supported : true ,
@@ -98,6 +100,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
98
100
powerLevelsIncludeNotifications : false ,
99
101
allowKnockingInEventAuth : false ,
100
102
allowRestrictedJoinsInEventAuth : false ,
103
+ requireIntegerPowerLevels : false ,
101
104
},
102
105
RoomVersionV4 : {
103
106
Supported : true ,
@@ -111,6 +114,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
111
114
powerLevelsIncludeNotifications : false ,
112
115
allowKnockingInEventAuth : false ,
113
116
allowRestrictedJoinsInEventAuth : false ,
117
+ requireIntegerPowerLevels : false ,
114
118
},
115
119
RoomVersionV5 : {
116
120
Supported : true ,
@@ -124,6 +128,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
124
128
powerLevelsIncludeNotifications : false ,
125
129
allowKnockingInEventAuth : false ,
126
130
allowRestrictedJoinsInEventAuth : false ,
131
+ requireIntegerPowerLevels : false ,
127
132
},
128
133
RoomVersionV6 : {
129
134
Supported : true ,
@@ -137,6 +142,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
137
142
powerLevelsIncludeNotifications : true ,
138
143
allowKnockingInEventAuth : false ,
139
144
allowRestrictedJoinsInEventAuth : false ,
145
+ requireIntegerPowerLevels : false ,
140
146
},
141
147
RoomVersionV7 : {
142
148
Supported : true ,
@@ -150,6 +156,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
150
156
powerLevelsIncludeNotifications : true ,
151
157
allowKnockingInEventAuth : true ,
152
158
allowRestrictedJoinsInEventAuth : false ,
159
+ requireIntegerPowerLevels : false ,
153
160
},
154
161
RoomVersionV8 : {
155
162
Supported : true ,
@@ -163,6 +170,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
163
170
powerLevelsIncludeNotifications : true ,
164
171
allowKnockingInEventAuth : true ,
165
172
allowRestrictedJoinsInEventAuth : true ,
173
+ requireIntegerPowerLevels : false ,
166
174
},
167
175
RoomVersionV9 : {
168
176
Supported : true ,
@@ -176,6 +184,21 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
176
184
powerLevelsIncludeNotifications : true ,
177
185
allowKnockingInEventAuth : true ,
178
186
allowRestrictedJoinsInEventAuth : true ,
187
+ requireIntegerPowerLevels : false ,
188
+ },
189
+ "org.matrix.msc3667" : { // based on room version 7
190
+ Supported : true ,
191
+ Stable : false ,
192
+ stateResAlgorithm : StateResV2 ,
193
+ eventFormat : EventFormatV2 ,
194
+ eventIDFormat : EventIDFormatV3 ,
195
+ redactionAlgorithm : RedactionAlgorithmV2 ,
196
+ enforceSignatureChecks : true ,
197
+ enforceCanonicalJSON : true ,
198
+ powerLevelsIncludeNotifications : true ,
199
+ allowKnockingInEventAuth : true ,
200
+ allowRestrictedJoinsInEventAuth : false ,
201
+ requireIntegerPowerLevels : true ,
179
202
},
180
203
}
181
204
@@ -231,6 +254,7 @@ type RoomVersionDescription struct {
231
254
powerLevelsIncludeNotifications bool
232
255
allowKnockingInEventAuth bool
233
256
allowRestrictedJoinsInEventAuth bool
257
+ requireIntegerPowerLevels bool
234
258
Supported bool
235
259
Stable bool
236
260
}
@@ -312,6 +336,15 @@ func (v RoomVersion) EnforceCanonicalJSON() (bool, error) {
312
336
return false , UnsupportedRoomVersionError {v }
313
337
}
314
338
339
+ // RequireIntegerPowerLevels returns true if the given room version calls for
340
+ // power levels as integers only, false otherwise.
341
+ func (v RoomVersion ) RequireIntegerPowerLevels () (bool , error ) {
342
+ if r , ok := roomVersionMeta [v ]; ok {
343
+ return r .requireIntegerPowerLevels , nil
344
+ }
345
+ return false , UnsupportedRoomVersionError {v }
346
+ }
347
+
315
348
// UnsupportedRoomVersionError occurs when a call has been made with a room
316
349
// version that is not supported by this version of gomatrixserverlib.
317
350
type UnsupportedRoomVersionError struct {
0 commit comments