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

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

@@ -54,14 +54,14 @@ enum class CapabilitiesNegotiationState {
54 54
  * IRCv3 capabilities supported by the client.
55 55
  */
56 56
 @Suppress("unused")
57
-sealed class Capability(val name: String) {
57
+sealed class Capability(vararg val names:  String) {
58 58
     // Capabilities that introduce extra commands:
59 59
     /** Allows authentication using SASL via the AUTHENTICATE command. */
60 60
     object SaslAuthentication : Capability("sasl")
61 61
 
62 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 66
     /** Messages are tagged with the server time they originated at. */
67 67
     object ServerTimeMessageTag : Capability("server-time")
@@ -102,5 +102,8 @@ sealed class Capability(val name: String) {
102 102
 }
103 103
 
104 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