[hotfix] make listener and messageHandler non-nullable; update related logic.

This commit is contained in:
dalbodeule
2025-06-24 16:11:42 +09:00
parent 5683edaa5e
commit c5c115f6e6

View File

@@ -206,8 +206,8 @@ class UserHandler(
) { ) {
lateinit var client: ChzzkClient lateinit var client: ChzzkClient
lateinit var chatChannelId: String lateinit var chatChannelId: String
var listener: ChzzkUserSession? = null lateinit var listener: ChzzkUserSession
var messageHandler: MessageHandler? = null lateinit var messageHandler: MessageHandler
private val dispatcher: CoroutinesEventBus by inject(CoroutinesEventBus::class.java) private val dispatcher: CoroutinesEventBus by inject(CoroutinesEventBus::class.java)
private var _isActive: Boolean private var _isActive: Boolean
@@ -233,7 +233,7 @@ class UserHandler(
client.loginAsync().await() client.loginAsync().await()
listener = ChzzkSessionBuilder(client).buildUserSession() listener = ChzzkSessionBuilder(client).buildUserSession()
listener?.createAndConnectAsync()?.await() listener.createAndConnectAsync()?.await()
delay(1000L) delay(1000L)
@@ -255,23 +255,20 @@ class UserHandler(
) )
messageHandler = MessageHandler(this@UserHandler) messageHandler = MessageHandler(this@UserHandler)
listener?.on(SessionChatMessageEvent::class.java) { listener.on(SessionChatMessageEvent::class.java) {
messageHandler?.handle(it.message, user) messageHandler.handle(it.message, user)
} }
} }
internal suspend fun disable() { internal suspend fun disable() {
listener?.unsubscribeAsync(ChzzkSessionSubscriptionType.CHAT)?.await() listener.unsubscribeAsync(ChzzkSessionSubscriptionType.CHAT)?.await()
listener?.disconnectAsync()?.await() listener.disconnectAsync()?.await()
listener = null
messageHandler = null
_isActive = false _isActive = false
} }
internal fun reloadCommand() { internal fun reloadCommand() {
messageHandler?.reloadCommand() messageHandler.reloadCommand()
} }
internal fun reloadUser(user: User) { internal fun reloadUser(user: User) {
@@ -325,7 +322,7 @@ class UserHandler(
} else { } else {
logger.info("${user.username} is offline.") logger.info("${user.username} is offline.")
streamStartTime = null streamStartTime = null
listener?.disconnectAsync()?.join() listener.disconnectAsync()?.join()
_isActive = false _isActive = false
CoroutineScope(Dispatchers.Default).launch { CoroutineScope(Dispatchers.Default).launch {