fix(messagelogger): clear on logout

This commit is contained in:
rhunk
2023-05-19 12:31:34 +02:00
parent cca6ce9ee3
commit f8898118ee
3 changed files with 19 additions and 1 deletions

View File

@@ -220,6 +220,14 @@ class BridgeClient(
)
}
fun clearMessageLogger() {
sendMessage(
BridgeMessageType.MESSAGE_LOGGER_REQUEST,
MessageLoggerRequest(MessageLoggerRequest.Action.CLEAR, 0),
MessageLoggerResult::class
)
}
fun fetchTranslations(): LocaleResult {
sendMessage(
BridgeMessageType.LOCALE_REQUEST,

View File

@@ -36,6 +36,10 @@ class DatabaseAccess(private val context: ModContext) : Manager {
)!!
}
fun hasArroyo(): Boolean {
return arroyoDatabase.exists()
}
private fun <T> safeDatabaseOperation(
database: SQLiteDatabase,
query: (SQLiteDatabase) -> T?

View File

@@ -10,12 +10,18 @@ import me.rhunk.snapenhance.features.FeatureLoadParams
import me.rhunk.snapenhance.hook.HookStage
import me.rhunk.snapenhance.hook.Hooker
class MessageLogger : Feature("MessageLogger", loadParams = FeatureLoadParams.INIT_SYNC) {
class MessageLogger : Feature("MessageLogger", loadParams = FeatureLoadParams.INIT_SYNC or FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
private val messageCache = mutableMapOf<Long, String>()
private val removedMessages = linkedSetOf<Long>()
fun isMessageRemoved(messageId: Long) = removedMessages.contains(messageId)
override fun onActivityCreate() {
if (!context.database.hasArroyo()) {
context.bridgeClient.clearMessageLogger()
}
}
//FIXME: message disappears when the conversation is set to delete on view
override fun init() {
Hooker.hookConstructor(context.classCache.message, HookStage.AFTER, {