diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index eaed61362b..6e81ebaad2 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -315,7 +315,9 @@ dependencies { implementation "com.squareup.okhttp3:okhttp:5.0.0-alpha.10" implementation 'com.neovisionaries:nv-websocket-client:2.14' implementation 'dnsjava:dnsjava:3.4.1' - implementation "org.dizitart:nitrite:3.4.3" + // db + implementation 'org.dizitart:nitrite:4.3.0' + implementation 'org.dizitart:nitrite-mvstore-adapter:4.3.0' implementation "cn.hutool:hutool-core:5.7.13" implementation "cn.hutool:hutool-crypto:5.7.13" diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java index 001c5aac16..91fb3be489 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java @@ -28,12 +28,6 @@ import androidx.annotation.RequiresApi; import androidx.core.content.pm.ShortcutManagerCompat; -import org.apache.commons.lang3.StringUtils; -import org.dizitart.no2.objects.filters.ObjectFilters; -import org.json.JSONArray; -import org.json.JSONException; -import androidx.annotation.IntDef; - import org.json.JSONObject; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.SerializedData; @@ -556,7 +550,7 @@ public static int getLastLocalId() { public static void saveAccounts() { FileLog.e("Save accounts: " + activeAccounts, new Exception()); ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).edit() - .putString("active_accounts", StringUtils.join(activeAccounts, ",")) + .putString("active_accounts", StrUtil.join(",", activeAccounts)) .apply(); } @@ -734,7 +728,7 @@ public static void loadConfig() { } if (!SharedConfig.activeAccounts.isEmpty()) { - preferences.edit().putString("active_accounts", StringUtils.join(activeAccounts, ",")).apply(); + preferences.edit().putString("active_accounts", StrUtil.join(",", activeAccounts)).apply(); } preferences.edit().putBoolean("activeAccountsLoaded", true).apply(); diff --git a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java index 4757300fcc..3e2d740f26 100644 --- a/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java +++ b/TMessagesProj/src/main/java/org/telegram/ui/ProfileActivity.java @@ -127,8 +127,6 @@ import com.jakewharton.processphoenix.ProcessPhoenix; -import org.apache.commons.lang3.StringUtils; - import org.telegram.PhoneFormat.PhoneFormat; import org.telegram.messenger.AccountInstance; import org.telegram.messenger.AndroidUtilities; diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/database/DbPref.kt b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/database/DbPref.kt index 84df8aaaba..7b415dd6de 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/database/DbPref.kt +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/database/DbPref.kt @@ -1,25 +1,31 @@ package tw.nekomimi.nekogram.database import android.content.SharedPreferences -import org.dizitart.no2.* -import org.dizitart.no2.filters.Filters +import org.dizitart.no2.collection.Document +import org.dizitart.no2.collection.FindOptions +import org.dizitart.no2.collection.NitriteCollection +import org.dizitart.no2.collection.UpdateOptions +import org.dizitart.no2.filters.Filter +import org.dizitart.no2.filters.FluentFilter +import org.dizitart.no2.index.IndexOptions +import org.dizitart.no2.index.IndexType import org.telegram.messenger.FileLog import tw.nekomimi.nekogram.utils.UIUtil -class DbPref(val connection: NitriteCollection) : SharedPreferences { +class DbPref(val collection: NitriteCollection) : SharedPreferences { init { - if (!connection.hasIndex("key")) { - connection.createIndex("key", IndexOptions.indexOptions(IndexType.Unique)) + if (!collection.hasIndex("key")) { + collection.createIndex(IndexOptions.indexOptions(IndexType.UNIQUE), "key") } } val listeners = LinkedHashSet() - val isEmpty get() = connection.find(FindOptions.limit(0, 1)).count() == 0 + val isEmpty get() = collection.find(FindOptions.limitBy(1)).count() == 0 private inline fun getAs(key: String, defValue: T): T { - connection.find(Filters.eq("key", key)).apply { + collection.find(FluentFilter.where("key").eq(key)).apply { runCatching { return first().get("value", T::class.java) } @@ -28,7 +34,7 @@ class DbPref(val connection: NitriteCollection) : SharedPreferences { } override fun contains(key: String): Boolean { - return connection.find(Filters.eq("key", key)).count() > 0 + return collection.find(FluentFilter.where("key").eq(key)).count() > 0 } override fun getBoolean(key: String, defValue: Boolean) = getAs(key, defValue) @@ -37,7 +43,7 @@ class DbPref(val connection: NitriteCollection) : SharedPreferences { override fun getAll(): MutableMap { val allValues = HashMap() - connection.find().forEach { + collection.find().forEach { allValues[it.get("key", String::class.java)] = it["value"] } return allValues @@ -113,17 +119,17 @@ class DbPref(val connection: NitriteCollection) : SharedPreferences { override fun commit(): Boolean { try { if (clear) { - connection.remove(Filters.ALL) + collection.remove(Filter.ALL) } else { toRemove.forEach { - connection.remove(Filters.eq("key", it)) + collection.remove(FluentFilter.where("key").eq(it)) } } toApply.forEach { (key, value) -> if (value == null) { - connection.remove(Filters.eq("key", key)) + collection.remove(FluentFilter.where("key").eq(key)) } else { - connection.update(Filters.eq("key", key), Document().apply { + collection.update(FluentFilter.where("key").eq(key), Document.createDocument().apply { put("key", key) put("value", value) }, UpdateOptions.updateOptions(true)) @@ -142,4 +148,4 @@ class DbPref(val connection: NitriteCollection) : SharedPreferences { } -} \ No newline at end of file +} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/database/Nitrites.kt b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/database/Nitrites.kt index 7d97607002..d058872436 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/database/Nitrites.kt +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/database/Nitrites.kt @@ -1,12 +1,14 @@ package tw.nekomimi.nekogram.database import org.dizitart.no2.Nitrite +import org.dizitart.no2.common.module.NitriteModule +import org.dizitart.no2.mvstore.MVStoreModule import org.telegram.messenger.ApplicationLoader import tw.nekomimi.nekogram.utils.FileUtil import java.io.File @JvmOverloads -fun mkDatabase(name: String, delete: Boolean = false): Nitrite { +fun mkDatabase(name: String, delete: Boolean = false, module: NitriteModule? = null): Nitrite { val file = File("${ApplicationLoader.getDataDirFixed()}/databases/$name.db") FileUtil.initDir(file.parentFile!!) @@ -15,12 +17,16 @@ fun mkDatabase(name: String, delete: Boolean = false): Nitrite { } fun create(): Nitrite { - val nitrite = Nitrite.builder() - .filePath(file) - .openOrCreate()!! + val storeModule = MVStoreModule.withConfig() + .filePath(file) + .build() + var nitriteBuilder = Nitrite.builder() + .loadModule(storeModule) + if (module != null) nitriteBuilder = nitriteBuilder.loadModule(module) + val nitrite = nitriteBuilder.openOrCreate() val test = nitrite.openSharedPreference("shared_preferences") - test.connection.close() + test.collection.close() return nitrite } @@ -52,10 +58,10 @@ fun openMainSharedPreference(name: String, delete: Boolean = false): DbPref { mainSharedPreferencesDatabase.openSharedPreference(name) - } catch (e: IllegalStateException) { + } catch (_: IllegalStateException) { openMainSharedPreference(name, true) } -} \ No newline at end of file +} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/ChatCCTarget.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/ChatCCTarget.java deleted file mode 100644 index 90f94d9924..0000000000 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/ChatCCTarget.java +++ /dev/null @@ -1,38 +0,0 @@ -package tw.nekomimi.nekogram.transtale; - -import org.dizitart.no2.Document; -import org.dizitart.no2.mapper.Mappable; -import org.dizitart.no2.mapper.NitriteMapper; -import org.dizitart.no2.objects.Id; -import org.dizitart.no2.objects.Index; - -@Index("chatId") -public class ChatCCTarget implements Mappable { - - @Id - public long chatId; - public String ccTarget; - - public ChatCCTarget() { - } - - public ChatCCTarget(long chatId, String ccTarget) { - this.chatId = chatId; - this.ccTarget = ccTarget; - } - - @Override - public Document write(NitriteMapper mapper) { - Document document = new Document(); - document.put("chatId", chatId); - document.put("ccTarget", ccTarget); - return document; - } - - @Override - public void read(NitriteMapper mapper, Document document) { - chatId = ((long) document.get("chatId")); - ccTarget = ((String) document.get("ccTarget")); - } - -} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/ChatLanguage.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/ChatLanguage.java deleted file mode 100644 index 080a9b3ef3..0000000000 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/ChatLanguage.java +++ /dev/null @@ -1,37 +0,0 @@ -package tw.nekomimi.nekogram.transtale; - -import org.dizitart.no2.Document; -import org.dizitart.no2.mapper.Mappable; -import org.dizitart.no2.mapper.NitriteMapper; -import org.dizitart.no2.objects.Id; -import org.dizitart.no2.objects.Index; - -@Index("chatId") -public class ChatLanguage implements Mappable { - - @Id - public long chatId; - - public String language; - - public ChatLanguage() { - } - - public ChatLanguage(long chatId, String language) { - this.chatId = chatId; - this.language = language; - } - - @Override public Document write(NitriteMapper mapper) { - Document document = new Document(); - document.put("chatId",chatId); - document.put("language",language); - return document; - } - - @Override public void read(NitriteMapper mapper, Document document) { - chatId = ((long) document.get("chatId")); - language = ((String) document.get("language")); - } - -} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/TransItem.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/TransItem.java deleted file mode 100644 index 228bf4b141..0000000000 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/TransItem.java +++ /dev/null @@ -1,40 +0,0 @@ -package tw.nekomimi.nekogram.transtale; - -import org.dizitart.no2.Document; -import org.dizitart.no2.IndexType; -import org.dizitart.no2.mapper.Mappable; -import org.dizitart.no2.mapper.NitriteMapper; -import org.dizitart.no2.objects.Id; -import org.dizitart.no2.objects.Index; -import org.dizitart.no2.objects.Indices; - -@Index(value = "text") -public class TransItem implements Mappable { - - @Id - public String text; - public String trans; - - public TransItem() { - } - - public TransItem(String text, String trans) { - this.text = text; - this.trans = trans; - } - - @Override - public Document write(NitriteMapper mapper) { - Document document = new Document(); - document.put("text",text); - document.put("trans", trans); - return document; - } - - @Override - public void read(NitriteMapper mapper, Document document) { - text = (String) document.get("text"); - trans = (String) document.get("trans"); - } - -} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/TranslateDb.kt b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/TranslateDb.kt index 788f888369..8fecc635e8 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/TranslateDb.kt +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/TranslateDb.kt @@ -1,29 +1,44 @@ package tw.nekomimi.nekogram.transtale -import org.dizitart.no2.objects.ObjectRepository -import org.dizitart.no2.objects.filters.ObjectFilters +import org.dizitart.no2.common.mapper.SimpleNitriteMapper +import org.dizitart.no2.common.module.NitriteModule +import org.dizitart.no2.filters.FluentFilter +import org.dizitart.no2.repository.ObjectRepository import org.telegram.messenger.LocaleController import tw.nekomimi.nekogram.NekoConfig import tw.nekomimi.nekogram.database.mkDatabase +import tw.nekomimi.nekogram.transtale.entity.ChatCCTarget +import tw.nekomimi.nekogram.transtale.entity.ChatLanguage +import tw.nekomimi.nekogram.transtale.entity.TransItem +import tw.nekomimi.nekogram.transtale.mapper.ChatCCTargetConverter +import tw.nekomimi.nekogram.transtale.mapper.ChatLanguageConverter +import tw.nekomimi.nekogram.transtale.mapper.TransItemConverter import tw.nekomimi.nekogram.utils.UIUtil -import java.util.* -import kotlin.collections.HashMap +import java.util.Locale class TranslateDb(val code: String) { - var conn: ObjectRepository = db.getRepository(code, TransItem::class.java) + var conn: ObjectRepository = db.getRepository(TransItem::class.java, code) companion object { - val db = mkDatabase("translate_caches") + val db = mkDatabase("translate_caches", module = NitriteModule.module(getNitriteMapper())) val repo = HashMap() - val chat = db.getRepository("chat", ChatLanguage::class.java) - val ccTarget = db.getRepository("opencc", ChatCCTarget::class.java) + val chat: ObjectRepository = db.getRepository(ChatLanguage::class.java, "chat") + val ccTarget: ObjectRepository = db.getRepository(ChatCCTarget::class.java, "opencc") + + @JvmStatic fun getNitriteMapper(): SimpleNitriteMapper { + val nitriteMapper = SimpleNitriteMapper() + nitriteMapper.registerEntityConverter(ChatCCTargetConverter()) + nitriteMapper.registerEntityConverter(ChatLanguageConverter()) + nitriteMapper.registerEntityConverter(TransItemConverter()) + return nitriteMapper + } @JvmStatic fun getChatLanguage(chatId: Long, default: Locale): Locale { - return chat.find(ObjectFilters.eq("chatId", chatId)).firstOrDefault()?.language?.code2Locale + return chat.find(FluentFilter.where("chatId").eq(chatId)).firstOrNull()?.language?.code2Locale ?: default } @@ -38,7 +53,7 @@ class TranslateDb(val code: String) { @JvmStatic fun getChatCCTarget(chatId: Long, default: String?): String? { - return ccTarget.find(ObjectFilters.eq("chatId", chatId)).firstOrDefault()?.ccTarget + return ccTarget.find(FluentFilter.where("chatId").eq(chatId)).firstOrNull()?.ccTarget ?: default } @@ -80,7 +95,7 @@ class TranslateDb(val code: String) { } - fun contains(text: String) = synchronized(this) { conn.find(ObjectFilters.eq("text", text)).count() > 0 } + fun contains(text: String) = synchronized(this) { conn.find(FluentFilter.where("text").eq(text)).count() > 0 } fun save(text: String, trans: String) = synchronized(this) { @@ -90,8 +105,8 @@ class TranslateDb(val code: String) { fun query(text: String) = synchronized(this) { - conn.find(ObjectFilters.eq("text", text)).firstOrDefault()?.trans + conn.find(FluentFilter.where("text").eq(text)).firstOrNull()?.trans } -} \ No newline at end of file +} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/Translator.kt b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/Translator.kt index cfe4fd70ba..010410ff0a 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/Translator.kt +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/Translator.kt @@ -4,10 +4,8 @@ import android.view.View import cn.hutool.core.util.ArrayUtil import cn.hutool.core.util.StrUtil import cn.hutool.http.HttpRequest -import org.apache.commons.lang3.LocaleUtils import org.telegram.messenger.LocaleController import org.telegram.messenger.R -import org.telegram.messenger.SharedConfig import tw.nekomimi.nekogram.NekoConfig import tw.nekomimi.nekogram.ui.PopupBuilder import tw.nekomimi.nekogram.cc.CCConverter @@ -145,13 +143,17 @@ interface Translator { } + val availableLocaleList: Array = Locale.getAvailableLocales().also { + Arrays.sort(it, Comparator.comparing(Locale::toString)) + } + @JvmStatic @JvmOverloads fun showTargetLangSelect(anchor: View, input: Boolean = false, full: Boolean = false, callback: (Locale) -> Unit) { val builder = PopupBuilder(anchor) - var locales = (if (full) LocaleUtils.availableLocaleList() + var locales = (if (full) availableLocaleList .filter { it.variant.isBlank() } else LocaleController.getInstance() .languages .map { it.pluralLangCode } diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/entity/ChatCCTarget.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/entity/ChatCCTarget.java new file mode 100644 index 0000000000..e5dbcfd166 --- /dev/null +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/entity/ChatCCTarget.java @@ -0,0 +1,19 @@ +package tw.nekomimi.nekogram.transtale.entity; + +import org.dizitart.no2.repository.annotations.Id; +import org.dizitart.no2.repository.annotations.Index; + +@Index(fields = "chatId") +public class ChatCCTarget { + @Id + public Long chatId; + public String ccTarget; + + public ChatCCTarget() { + } + + public ChatCCTarget(Long chatId, String ccTarget) { + this.chatId = chatId; + this.ccTarget = ccTarget; + } +} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/entity/ChatLanguage.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/entity/ChatLanguage.java new file mode 100644 index 0000000000..0b5fe90514 --- /dev/null +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/entity/ChatLanguage.java @@ -0,0 +1,19 @@ +package tw.nekomimi.nekogram.transtale.entity; + +import org.dizitart.no2.repository.annotations.Id; +import org.dizitart.no2.repository.annotations.Index; + +@Index(fields = "chatId") +public class ChatLanguage { + @Id + public Long chatId; + public String language; + + public ChatLanguage() { + } + + public ChatLanguage(Long chatId, String language) { + this.chatId = chatId; + this.language = language; + } +} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/entity/TransItem.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/entity/TransItem.java new file mode 100644 index 0000000000..d11f6a46a5 --- /dev/null +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/entity/TransItem.java @@ -0,0 +1,19 @@ +package tw.nekomimi.nekogram.transtale.entity; + +import org.dizitart.no2.repository.annotations.Id; +import org.dizitart.no2.repository.annotations.Index; + +@Index(fields = "text") +public class TransItem { + @Id + public String text; + public String trans; + + public TransItem() { + } + + public TransItem(String text, String trans) { + this.text = text; + this.trans = trans; + } +} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/mapper/ChatCCTargetConverter.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/mapper/ChatCCTargetConverter.java new file mode 100644 index 0000000000..ce4b77673c --- /dev/null +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/mapper/ChatCCTargetConverter.java @@ -0,0 +1,29 @@ +package tw.nekomimi.nekogram.transtale.mapper; + +import org.dizitart.no2.collection.Document; +import org.dizitart.no2.common.mapper.EntityConverter; +import org.dizitart.no2.common.mapper.NitriteMapper; + +import tw.nekomimi.nekogram.transtale.entity.ChatCCTarget; + +public class ChatCCTargetConverter implements EntityConverter { + @Override + public Class getEntityType() { + return ChatCCTarget.class; + } + + @Override + public Document toDocument(ChatCCTarget entity, NitriteMapper nitriteMapper) { + return Document.createDocument() + .put("chatId", entity.chatId) + .put("ccTarget", entity.ccTarget); + } + + @Override + public ChatCCTarget fromDocument(Document document, NitriteMapper nitriteMapper) { + ChatCCTarget entity = new ChatCCTarget(); + entity.chatId = document.get("chatId", Long.class); + entity.ccTarget = document.get("ccTarget", String.class); + return entity; + } +} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/mapper/ChatLanguageConverter.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/mapper/ChatLanguageConverter.java new file mode 100644 index 0000000000..c5a189adc7 --- /dev/null +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/mapper/ChatLanguageConverter.java @@ -0,0 +1,29 @@ +package tw.nekomimi.nekogram.transtale.mapper; + +import org.dizitart.no2.collection.Document; +import org.dizitart.no2.common.mapper.EntityConverter; +import org.dizitart.no2.common.mapper.NitriteMapper; + +import tw.nekomimi.nekogram.transtale.entity.ChatLanguage; + +public class ChatLanguageConverter implements EntityConverter { + @Override + public Class getEntityType() { + return ChatLanguage.class; + } + + @Override + public Document toDocument(ChatLanguage entity, NitriteMapper nitriteMapper) { + return Document.createDocument() + .put("chatId", entity.chatId) + .put("language", entity.language); + } + + @Override + public ChatLanguage fromDocument(Document document, NitriteMapper nitriteMapper) { + ChatLanguage entity = new ChatLanguage(); + entity.chatId = document.get("chatId", Long.class); + entity.language = document.get("language", String.class); + return entity; + } +} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/mapper/TransItemConverter.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/mapper/TransItemConverter.java new file mode 100644 index 0000000000..cdbfa5c341 --- /dev/null +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/transtale/mapper/TransItemConverter.java @@ -0,0 +1,29 @@ +package tw.nekomimi.nekogram.transtale.mapper; + +import org.dizitart.no2.collection.Document; +import org.dizitart.no2.common.mapper.EntityConverter; +import org.dizitart.no2.common.mapper.NitriteMapper; + +import tw.nekomimi.nekogram.transtale.entity.TransItem; + +public class TransItemConverter implements EntityConverter { + @Override + public Class getEntityType() { + return TransItem.class; + } + + @Override + public Document toDocument(TransItem entity, NitriteMapper nitriteMapper) { + return Document.createDocument() + .put("text", entity.text) + .put("trans", entity.trans); + } + + @Override + public TransItem fromDocument(Document document, NitriteMapper nitriteMapper) { + TransItem entity = new TransItem(); + entity.text = document.get("text", String.class); + entity.trans = document.get("trans", String.class); + return entity; + } +} diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/ui/MessageDetailsActivity.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/ui/MessageDetailsActivity.java index 74add9a3a9..a3709ee6e7 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/ui/MessageDetailsActivity.java +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/ui/MessageDetailsActivity.java @@ -19,16 +19,13 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.google.gson.ExclusionStrategy; -import com.google.gson.FieldAttributes; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; +import com.google.gson.JsonParser; import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; @@ -62,7 +59,6 @@ import org.telegram.ui.ProfileActivity; import java.io.File; -import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Date; @@ -104,8 +100,8 @@ public class MessageDetailsActivity extends BaseFragment implements Notification private UndoView copyTooltip; public static final Gson gson = new GsonBuilder() - .setExclusionStrategies(new Exclusion()) .registerTypeHierarchyAdapter(byte[].class, new ByteArrayToBase64TypeAdapter()).create(); + public static final Gson prettyGson = new GsonBuilder().setPrettyPrinting().create(); private static class ByteArrayToBase64TypeAdapter implements JsonSerializer, JsonDeserializer { public byte[] deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { @@ -117,16 +113,6 @@ public JsonElement serialize(byte[] src, Type typeOfSrc, JsonSerializationContex } } - public static class Exclusion implements ExclusionStrategy { - public boolean shouldSkipClass(Class arg0) { - return false; - } - - public boolean shouldSkipField(FieldAttributes f) { - return f.getName().equals("disableFree") || f.getName().equals("networkType"); - } - } - public MessageDetailsActivity(MessageObject messageObject) { this.messageObject = messageObject; if (messageObject.messageOwner.peer_id != null && messageObject.messageOwner.peer_id.channel_id != 0) { @@ -490,10 +476,9 @@ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { textCell.setTextAndValue("Buttons", gson.toJson(messageObject.messageOwner.reply_markup), divider); } else if (position == jsonTextRow) { try { - ObjectMapper mapper = new ObjectMapper(); - mapper.enable(SerializationFeature.INDENT_OUTPUT); - String jsonString = mapper.writeValueAsString(messageObject.messageOwner); - + String jsonTempString = gson.toJson(messageObject.messageOwner); + JsonElement jsonElement = JsonParser.parseString(jsonTempString); + String jsonString = prettyGson.toJson(jsonElement); final SpannableString[] sb = new SpannableString[1]; new CountDownTimer(300, 100) { @Override @@ -506,7 +491,7 @@ public void onFinish() { textCell.setTextAndValue("JSON", sb[0], divider); } }.start(); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } diff --git a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/ui/PinnedStickerHelper.java b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/ui/PinnedStickerHelper.java index b8f847f5f4..55b268d504 100644 --- a/TMessagesProj/src/main/java/tw/nekomimi/nekogram/ui/PinnedStickerHelper.java +++ b/TMessagesProj/src/main/java/tw/nekomimi/nekogram/ui/PinnedStickerHelper.java @@ -1,6 +1,5 @@ package tw.nekomimi.nekogram.ui; -import org.apache.commons.lang3.StringUtils; import org.telegram.messenger.MessagesController; import org.telegram.tgnet.ConnectionsManager; import org.telegram.tgnet.TLRPC; @@ -11,6 +10,8 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; +import cn.hutool.core.util.StrUtil; + /** * @author luvletter2333 */ @@ -54,7 +55,7 @@ private PinnedStickerHelper(int accountNum) { private void updateConfig() { MessagesController.getMainSettings(accountNum) .edit() - .putString("pinnedStickers", StringUtils.join(this.pinnedList, ",")) + .putString("pinnedStickers", StrUtil.join(",", this.pinnedList)) .apply(); }