You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AwayProcessor.kt 983B

1234567891011121314151617181920212223242526
  1. package com.dmdirc.ktirc.messages.processors
  2. import com.dmdirc.ktirc.events.UserAway
  3. import com.dmdirc.ktirc.messages.RPL_NOWAWAY
  4. import com.dmdirc.ktirc.messages.RPL_UNAWAY
  5. import com.dmdirc.ktirc.model.IrcMessage
  6. import com.dmdirc.ktirc.model.User
  7. import com.dmdirc.ktirc.model.asUser
  8. internal class AwayProcessor : MessageProcessor {
  9. override val commands = arrayOf("AWAY", RPL_UNAWAY, RPL_NOWAWAY)
  10. override fun process(message: IrcMessage) = sequence {
  11. when (message.command) {
  12. "AWAY" -> message.prefix?.let { yield(UserAway(message.metadata, it.asUser(), message.awayMessage)) }
  13. RPL_NOWAWAY -> yield(UserAway(message.metadata, User(String(message.params[0])), ""))
  14. RPL_UNAWAY -> yield(UserAway(message.metadata, User(String(message.params[0])), null))
  15. }
  16. }.toList()
  17. private val IrcMessage.awayMessage: String?
  18. get() = if (params.isEmpty()) null else String(params[0])
  19. }