@@ -105,21 +105,7 @@ public final class Channel: Codable {
105105 self . extraData = nil
106106 }
107107
108- config = Config ( name: " " ,
109- automodBehavior: " " ,
110- automodEnabled: " " ,
111- reactionsEnabled: false ,
112- typingEventsEnabled: false ,
113- readEventsEnabled: false ,
114- connectEventsEnabled: false ,
115- repliesEnabled: false ,
116- searchEnabled: false ,
117- mutesEnabled: false ,
118- messageRetention: " " ,
119- maxMessageLength: 0 ,
120- commands: [ ] ,
121- created: Date ( ) ,
122- updated: Date ( ) )
108+ config = Config ( )
123109 }
124110
125111 required public init ( from decoder: Decoder ) throws {
@@ -173,9 +159,6 @@ public extension Channel {
173159 /// A channel config.
174160 struct Config : Decodable {
175161 private enum CodingKeys : String , CodingKey {
176- case name
177- case automodBehavior = " automod_behavior "
178- case automodEnabled = " automod "
179162 case reactionsEnabled = " reactions "
180163 case typingEventsEnabled = " typing_events "
181164 case readEventsEnabled = " read_events "
@@ -191,9 +174,6 @@ public extension Channel {
191174 }
192175
193176
194- let name : String
195- let automodBehavior : String
196- let automodEnabled : String
197177 /// If users are allowed to add reactions to messages. Enabled by default.
198178 public let reactionsEnabled : Bool
199179 /// Controls if typing indicators are shown. Enabled by default.
@@ -208,6 +188,8 @@ public extension Channel {
208188 public let searchEnabled : Bool
209189 /// Determines if users are able to mute other users. Enabled by default.
210190 public let mutesEnabled : Bool
191+ /// Determines if users are able to flag messages. Enabled by default.
192+ public let flagsEnabled : Bool
211193 /// A number of days or infinite. Infinite by default.
212194 public let messageRetention : String
213195 /// The max message length. 5000 by default.
@@ -218,6 +200,39 @@ public extension Channel {
218200 public let created : Date
219201 /// A channel updated date.
220202 public let updated : Date
203+
204+ public init ( from decoder: Decoder ) throws {
205+ let container = try decoder. container ( keyedBy: CodingKeys . self)
206+ reactionsEnabled = try container. decode ( Bool . self, forKey: . reactionsEnabled)
207+ typingEventsEnabled = try container. decode ( Bool . self, forKey: . typingEventsEnabled)
208+ readEventsEnabled = try container. decode ( Bool . self, forKey: . readEventsEnabled)
209+ connectEventsEnabled = try container. decode ( Bool . self, forKey: . connectEventsEnabled)
210+ repliesEnabled = try container. decode ( Bool . self, forKey: . repliesEnabled)
211+ searchEnabled = try container. decode ( Bool . self, forKey: . searchEnabled)
212+ mutesEnabled = try container. decode ( Bool . self, forKey: . mutesEnabled)
213+ messageRetention = try container. decode ( String . self, forKey: . messageRetention)
214+ maxMessageLength = try container. decode ( Int . self, forKey: . maxMessageLength)
215+ commands = try container. decodeIfPresent ( [ Command ] . self, forKey: . commands) ?? [ ]
216+ flagsEnabled = commands. first ( where: { $0. name. contains ( " flag " ) } ) != nil
217+ created = try container. decode ( Date . self, forKey: . created)
218+ updated = try container. decode ( Date . self, forKey: . updated)
219+ }
220+
221+ init ( ) {
222+ reactionsEnabled = false
223+ typingEventsEnabled = false
224+ readEventsEnabled = false
225+ connectEventsEnabled = false
226+ repliesEnabled = false
227+ searchEnabled = false
228+ mutesEnabled = false
229+ flagsEnabled = false
230+ messageRetention = " "
231+ maxMessageLength = 0
232+ commands = [ ]
233+ created = Date ( )
234+ updated = Date ( )
235+ }
221236 }
222237
223238 /// A command in a message, e.g. /giphy.
0 commit comments