fix(composer): first created username

Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com>
This commit is contained in:
rhunk
2025-07-07 22:31:27 +02:00
parent deae5f3013
commit e18243ff79
5 changed files with 26 additions and 20 deletions

View File

@@ -1,4 +1,4 @@
import { Config, FriendInfo } from "./types";
import { Config } from "./types";
declare var _getImportsFunctionName: string;
declare var _runtimeName: boolean;
@@ -17,8 +17,6 @@ export const getConfig = () => callRemoteFunction("getConfig") as Config;
export const downloadLastOperaMedia = (isLongPress: boolean) => callRemoteFunction("downloadLastOperaMedia", isLongPress);
export function getFriendInfoByUsername(username: string): FriendInfo | null {
const friendInfo = callRemoteFunction("getFriendInfoByUsername", username);
if (!friendInfo) return null;
return JSON.parse(friendInfo);
export function getFriendOriginalUsername(username: string): string | null {
return callRemoteFunction("getFriendOriginalUsername", username);
}

View File

@@ -1,5 +1,5 @@
import { defineModule } from "../types";
import { getFriendInfoByUsername } from "../imports";
import { getFriendOriginalUsername } from "../imports";
import { interceptComponent } from "../utils";
export default defineModule({
@@ -12,9 +12,8 @@ export default defineModule({
{
onRender: (component: any, _args: any[], render: () => void) => {
if (component.viewModel) {
let userInfo = getFriendInfoByUsername(component.viewModel.username);
if (userInfo) {
let firstCreatedUsername = userInfo.username.split("|")[0];
let firstCreatedUsername = getFriendOriginalUsername(component.viewModel.username);
if (firstCreatedUsername) {
if (firstCreatedUsername != component.viewModel.username) {
component.viewModel.username += " (" + firstCreatedUsername + ")";
}

View File

@@ -6,12 +6,7 @@ import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteDatabase.OpenParams
import android.database.sqlite.SQLiteDatabaseCorruptException
import me.rhunk.snapenhance.common.database.DatabaseObject
import me.rhunk.snapenhance.common.database.impl.ConversationMessage
import me.rhunk.snapenhance.common.database.impl.FriendFeedEntry
import me.rhunk.snapenhance.common.database.impl.FriendInfo
import me.rhunk.snapenhance.common.database.impl.StoryEntry
import me.rhunk.snapenhance.common.database.impl.StorySnapEntry
import me.rhunk.snapenhance.common.database.impl.UserConversationLink
import me.rhunk.snapenhance.common.database.impl.*
import me.rhunk.snapenhance.common.util.ktx.getBlobOrNull
import me.rhunk.snapenhance.common.util.ktx.getIntOrNull
import me.rhunk.snapenhance.common.util.ktx.getInteger
@@ -198,6 +193,20 @@ class DatabaseAccess(
}
}
fun getFriendOriginalUsername(mutableUsername: String): String? {
return useDatabase(DatabaseType.MAIN)?.performOperation {
safeRawQuery(
"SELECT originalUsername FROM CombinedUsername WHERE mutableUsername = ?",
arrayOf(mutableUsername)
)?.use { query ->
if (!query.moveToFirst()) {
return@performOperation null
}
query.getStringOrNull("originalUsername")
}
}
}
fun getFriendInfoByUsername(username: String): FriendInfo? {
return useDatabase(DatabaseType.MAIN)?.performOperation {
readDatabaseObject(

View File

@@ -133,13 +133,12 @@ class ComposerHooks: Feature("ComposerHooks") {
context.feature(MediaDownloader::class).downloadLastOperaMediaAsync(getUntyped(0) == true)
}
composerFunction("getFriendInfoByUsername") {
composerFunction("getFriendOriginalUsername") {
if (getSize() < 1) return@composerFunction
val username = getUntyped(0) as? String ?: return@composerFunction
runCatching {
pushUntyped(context.database.getFriendInfoByUsername(username)?.let {
context.gson.toJson(it)
})
pushUntyped(context.database.getFriendOriginalUsername(username))
}.onFailure {
pushUntyped(null)
}

View File

@@ -98,6 +98,7 @@ class FriendFeedInfoMenu : AbstractMenu() {
}
val finalIcon = icon
val translation = context.translation.getCategory("profile_info")
val firstCreatedUsername = context.database.getFriendOriginalUsername(profile.mutableUsername.toString()) ?: profile.firstCreatedUsername
context.runOnUiThread {
val addedTimestamp: Long = profile.addedTimestamp.coerceAtLeast(profile.reverseAddedTimestamp)
@@ -109,7 +110,7 @@ class FriendFeedInfoMenu : AbstractMenu() {
birthday[Calendar.MONTH] = (profile.birthday shr 32).toInt() - 1
builder.setMessage(mapOf(
translation["first_created_username"] to profile.firstCreatedUsername,
translation["first_created_username"] to firstCreatedUsername,
translation["mutable_username"] to profile.mutableUsername,
translation["display_name"] to profile.displayName,
translation["added_date"] to formatDate(addedTimestamp).takeIf { addedTimestamp > 0 },