From 0f1bddcb24c26bcbc8a3f5049e614a47730b502a Mon Sep 17 00:00:00 2001
From: sandtechnology <20417547+sandtechnology@users.noreply.github.com>
Date: Sat, 25 Mar 2023 22:08:20 +0800
Subject: [PATCH] [core] Fix token not saving after refresh token (#2590)

---
 .../kotlin/network/components/KeyRefreshProcessor.kt           | 3 +++
 .../protocol/packet/chat/receive/OnlinePush.SidExpired.kt      | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/mirai-core/src/commonMain/kotlin/network/components/KeyRefreshProcessor.kt b/mirai-core/src/commonMain/kotlin/network/components/KeyRefreshProcessor.kt
index ed9b5eee2..34c662a52 100644
--- a/mirai-core/src/commonMain/kotlin/network/components/KeyRefreshProcessor.kt
+++ b/mirai-core/src/commonMain/kotlin/network/components/KeyRefreshProcessor.kt
@@ -67,5 +67,8 @@ internal class KeyRefreshProcessorImpl(
 
     override suspend fun refreshKeysNow(handler: NetworkHandler) {
         handler.sendAndExpect(WtLogin15(handler.context[SsoProcessor].client))
+        handler.context[SsoProcessor].client.bot.apply {
+            components[AccountSecretsManager].saveSecrets(account, AccountSecretsImpl(client))
+        }
     }
 }
\ No newline at end of file
diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.SidExpired.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.SidExpired.kt
index dddb39118..848ed912e 100644
--- a/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.SidExpired.kt
+++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.SidExpired.kt
@@ -12,6 +12,8 @@ package net.mamoe.mirai.internal.network.protocol.packet.chat.receive
 import io.ktor.utils.io.core.*
 import net.mamoe.mirai.internal.QQAndroidBot
 import net.mamoe.mirai.internal.network.Packet
+import net.mamoe.mirai.internal.network.components.AccountSecretsImpl
+import net.mamoe.mirai.internal.network.components.AccountSecretsManager
 import net.mamoe.mirai.internal.network.protocol.packet.IncomingPacketFactory
 import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
 import net.mamoe.mirai.internal.network.protocol.packet.buildResponseUniPacket
@@ -23,6 +25,7 @@ internal object OnlinePushSidExpired :
     override suspend fun QQAndroidBot.handle(packet: Packet?, sequenceId: Int): OutgoingPacket {
         return buildResponseUniPacket(client, sequenceId = sequenceId).also {
             bot.network.sendAndExpect(WtLogin10(client, mainSigMap = 1052896, remark = "10:refresh-token"))
+            bot.components[AccountSecretsManager].saveSecrets(bot.account, AccountSecretsImpl(client))
         }
     }