Browse Source

Accept unprefixed message-tags

Closes #13
tags/v0.10.0
Chris Smith 5 years ago
parent
commit
54f35009c3

+ 2
- 2
src/main/kotlin/com/dmdirc/ktirc/events/handlers/CapabilitiesHandler.kt View File

39
                 client.sendCapabilityEnd()
39
                 client.sendCapabilityEnd()
40
             } else {
40
             } else {
41
                 negotiationState = CapabilitiesNegotiationState.AWAITING_ACK
41
                 negotiationState = CapabilitiesNegotiationState.AWAITING_ACK
42
-                advertisedCapabilities.keys.map { it.name }.let {
42
+                advertisedCapabilities.keys.map { it.names[0] }.let {
43
                     log.info { "Requesting capabilities: ${it.toList()}" }
43
                     log.info { "Requesting capabilities: ${it.toList()}" }
44
                     client.sendCapabilityRequest(it)
44
                     client.sendCapabilityRequest(it)
45
                 }
45
                 }
50
     private fun handleCapabilitiesAcknowledged(client: IrcClient, capabilities: Map<Capability, String>) {
50
     private fun handleCapabilitiesAcknowledged(client: IrcClient, capabilities: Map<Capability, String>) {
51
         // TODO: Check if everything we wanted is enabled
51
         // TODO: Check if everything we wanted is enabled
52
         with(client.serverState.capabilities) {
52
         with(client.serverState.capabilities) {
53
-            log.info { "Acknowledged capabilities: ${capabilities.keys.map { it.name }.toList()}" }
53
+            log.info { "Acknowledged capabilities: ${capabilities.keys.map { it::class.simpleName }.toList()}" }
54
             enabledCapabilities.putAll(capabilities)
54
             enabledCapabilities.putAll(capabilities)
55
 
55
 
56
             if (client.serverState.sasl.mechanisms.isNotEmpty()) {
56
             if (client.serverState.sasl.mechanisms.isNotEmpty()) {

+ 7
- 4
src/main/kotlin/com/dmdirc/ktirc/model/CapabilitiesState.kt View File

54
  * IRCv3 capabilities supported by the client.
54
  * IRCv3 capabilities supported by the client.
55
  */
55
  */
56
 @Suppress("unused")
56
 @Suppress("unused")
57
-sealed class Capability(val name: String) {
57
+sealed class Capability(vararg val names:  String) {
58
     // Capabilities that introduce extra commands:
58
     // Capabilities that introduce extra commands:
59
     /** Allows authentication using SASL via the AUTHENTICATE command. */
59
     /** Allows authentication using SASL via the AUTHENTICATE command. */
60
     object SaslAuthentication : Capability("sasl")
60
     object SaslAuthentication : Capability("sasl")
61
 
61
 
62
     // Capabilities that enable more information in message tags:
62
     // Capabilities that enable more information in message tags:
63
-    /** Draft version of message tags, enables client-only tags. */
64
-    object DraftMessageTags33 : Capability("draft/message-tags-0.2") // TODO: Add processor for TAGMSG
63
+    /** Generic support for message tags, including client-only tags. */
64
+    object DraftMessageTags33 : Capability("message-tags", "draft/message-tags-0.2") // TODO: Add processor for TAGMSG
65
 
65
 
66
     /** Messages are tagged with the server time they originated at. */
66
     /** Messages are tagged with the server time they originated at. */
67
     object ServerTimeMessageTag : Capability("server-time")
67
     object ServerTimeMessageTag : Capability("server-time")
102
 }
102
 }
103
 
103
 
104
 internal val capabilities: Map<String, Capability> by lazy {
104
 internal val capabilities: Map<String, Capability> by lazy {
105
-    Capability::class.nestedClasses.map { it.objectInstance as Capability }.associateBy { it.name }
105
+    Capability::class.nestedClasses
106
+            .map { it.objectInstance as Capability }
107
+            .flatMap { it.names.map { name -> name to it }  }
108
+            .toMap()
106
 }
109
 }

Loading…
Cancel
Save