您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

UserState.kt 837B

123456789101112131415161718192021222324252627
  1. package com.dmdirc.ktirc.model
  2. import com.dmdirc.ktirc.io.CaseMapping
  3. class UserState(caseMappingProvider: () -> CaseMapping) {
  4. private val users = UserMap(caseMappingProvider)
  5. operator fun get(nickname: String) = users[nickname]
  6. operator fun plusAssign(details: User) { users += KnownUser(details) }
  7. operator fun minusAssign(details: User) { users -= details.nickname }
  8. fun update(details: User, oldNick: String = details.nickname) {
  9. users[oldNick]?.details?.updateFrom(details)
  10. }
  11. }
  12. class KnownUser(val details: User) {
  13. val channels = mutableListOf<String>()
  14. operator fun plusAssign(channel: String) { channels += channel }
  15. operator fun minusAssign(channel: String) { channels -= channel }
  16. operator fun contains(channel: String) = channel in channels
  17. }