Add EasterEggsForTheNonexistent

Signed-off-by: singleNeuron <Cryolitia@gmail.com>
This commit is contained in:
singleNeuron
2022-11-03 22:23:17 +08:00
committed by singleNeuron
parent da0e2bcb03
commit 66735e7290
4 changed files with 83 additions and 4 deletions

View File

@@ -56,6 +56,7 @@ import io.github.qauxv.dsl.func.IDslParentNode
import io.github.qauxv.util.NonUiThread
import io.github.qauxv.util.SyncUtils
import io.github.qauxv.util.UiThread
import me.singleneuron.util.processSearchEasterEgg
/**
* The search sub fragment of [SettingsMainFragment]
@@ -108,6 +109,7 @@ class SearchOverlaySubFragment {
override fun onQueryTextSubmit(query: String) = false
override fun onQueryTextChange(newText: String): Boolean {
processSearchEasterEgg(newText, requireContext())
search(newText)
return false
}

View File

@@ -35,6 +35,7 @@ import android.view.View
import android.view.ViewGroup
import android.view.animation.AlphaAnimation
import android.widget.FrameLayout
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.SearchView
import androidx.core.content.res.ResourcesCompat
import androidx.lifecycle.lifecycleScope
@@ -43,9 +44,8 @@ import androidx.recyclerview.widget.RecyclerView
import cc.ioctl.util.LayoutHelper.MATCH_PARENT
import cc.ioctl.util.ui.drawable.BackgroundDrawableUtils
import io.github.qauxv.R
import io.github.qauxv.util.SyncUtils
import io.github.qauxv.util.SyncUtils.async
import io.github.qauxv.util.SyncUtils.runOnUiThread
import io.github.qauxv.bridge.AppRuntimeHelper
import io.github.qauxv.bridge.ContactUtils
import io.github.qauxv.config.ConfigManager
import io.github.qauxv.core.MainHook
import io.github.qauxv.dsl.FunctionEntryRouter
@@ -60,8 +60,12 @@ import io.github.qauxv.dsl.item.DslTMsgListItemInflatable
import io.github.qauxv.dsl.item.SimpleListItem
import io.github.qauxv.dsl.item.TMsgListItem
import io.github.qauxv.dsl.item.UiAgentItem
import io.github.qauxv.util.SyncUtils
import io.github.qauxv.util.SyncUtils.async
import io.github.qauxv.util.SyncUtils.runOnUiThread
import io.github.qauxv.util.UiThread
import kotlinx.coroutines.flow.MutableStateFlow
import me.singleneuron.util.forSuBanXia
class SettingsMainFragment : BaseRootLayoutFragment() {
@@ -185,6 +189,22 @@ class SettingsMainFragment : BaseRootLayoutFragment() {
override fun onResume() {
super.onResume()
try {
if (ContactUtils.getBuddyName(AppRuntimeHelper.getAppRuntime()!!, AppRuntimeHelper.getAccount())
?.contains("\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F") == true &&
ConfigManager.forAccount(AppRuntimeHelper.getLongAccountUin()).getBoolean("ForSuBanXia", true)
) {
AlertDialog.Builder(requireContext())
.setTitle(forSuBanXia.first)
.setMessage(forSuBanXia.second + "\n\n当你心情低落的时候就在QA的搜索里输入MtF/FtM回来看看我吧 ^_^")
.setPositiveButton("OK", null)
.create()
.show()
ConfigManager.forAccount(AppRuntimeHelper.getLongAccountUin()).putBoolean("ForSuBanXia", false)
}
} catch (e: Exception) {
//ignored
}
if (!mTargetUiAgentNavId.isNullOrEmpty() && !mTargetUiAgentNavigated) {
navigateToTargetUiAgentItem()
}

View File

@@ -0,0 +1,56 @@
/*
* QAuxiliary - An Xposed module for QQ/TIM
* Copyright (C) 2019-2022 qwq233@qwq2333.top
* https://github.com/cinit/QAuxiliary
*
* This software is non-free but opensource software: you can redistribute it
* and/or modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either
* version 3 of the License, or any later version and our eula as published
* by QAuxiliary contributors.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* and eula along with this software. If not, see
* <https://www.gnu.org/licenses/>
* <https://github.com/cinit/QAuxiliary/blob/master/LICENSE.md>.
*/
package me.singleneuron.util
import android.content.Context
import android.util.Base64
import androidx.appcompat.app.AlertDialog
fun processSearchEasterEgg(text: String, context: Context) {
for (pair in easterEggsMap) {
for (key in pair.key) {
if (text.contains(key, true)) {
AlertDialog.Builder(context)
.setTitle(pair.value.first)
.setMessage(pair.value.second)
.setPositiveButton("OK", null)
.create()
.show()
return
}
}
}
}
private val easterEggsMap by lazy {
hashMapOf(
arrayOf("\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F", "mtf", "mtx", "ftm", "ftx", "transgender") to forSuBanXia,
)
}
val forSuBanXia: Pair<String, String> = (String(Base64.decode("Rm9yIHVzIA==", Base64.DEFAULT)) + "\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F" to String(
Base64.decode(
"5oS/5q+P5LiA5Liq5Lq66YO96IO96Ieq55Sx55qE55Sf5rS75Zyo6Ziz5YWJ5LiL77yM5oS/5oiR55qE6byT5Yqx5LiO5YuH5rCU6ZqPUUF1eGlsaWFyeeS8tOS9oOi6q+aXgeOAggoKCQkJCeKAlOKAlENyeW9saXRpYSwgYW4gZXhvcmRpbmFyeSBkZXZlbG9wZXIsIGFuIG9yZGluYXJ5IE10Rg==",
Base64.CRLF
)
))

View File

@@ -1,3 +1,4 @@
import org.apache.tools.ant.taskdefs.condition.Os
import org.gradle.api.JavaVersion
import org.gradle.api.Project
import java.io.File
@@ -9,7 +10,7 @@ object Version {
val java = JavaVersion.VERSION_11
const val compileSdkVersion = 33
const val buildToolsVersion = "33.0.0"
val buildToolsVersion = if (Os.isFamily(Os.FAMILY_WINDOWS)) "32.0.0" else "33.0.0"
const val minSdk = 24
const val targetSdk = 33
const val versionName = "1.3.4"