Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

CapabilitiesState.kt 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package com.dmdirc.ktirc.model
  2. class CapabilitiesState {
  3. var negotiationState: CapabilitiesNegotiationState = CapabilitiesNegotiationState.AWAITING_LIST
  4. val advertisedCapabilities = HashMap<Capability, String>()
  5. val enabledCapabilities = HashMap<Capability, String>()
  6. }
  7. enum class CapabilitiesNegotiationState {
  8. AWAITING_LIST,
  9. AWAITING_ACK,
  10. FINISHED
  11. }
  12. sealed class Capability(val name: String) {
  13. // Capabilities that enable more information in message tags:
  14. object ServerTimeMessageTag : Capability("server-time") // TODO: Parse this and expose time in events
  15. object UserAccountMessageTag : Capability("account-tag") // TODO: Add accounts to user info
  16. // Capabilities that extend existing commands to supply extra information:
  17. object HostsInNamesReply : Capability("userhost-in-names") // TODO: Parse these hosts
  18. object MultipleUserModePrefixes : Capability("multi-prefix")
  19. object AccountAndRealNameInJoinMessages : Capability("extended-join") // TODO: Parse this
  20. // Capabilities that affect how messages are sent/received:
  21. object EchoMessages : Capability("echo-message")
  22. // Capabilities that notify us of changes to other clients:
  23. object AccountChangeMessages : Capability("account-notify")
  24. object AwayStateMessages : Capability("away-notify")
  25. object HostChangeMessages : Capability("chghost")
  26. }
  27. val capabilities: Map<String, Capability> by lazy {
  28. Capability::class.nestedClasses.map { it.objectInstance as Capability }.associateBy { it.name }
  29. }