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.

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. }