Skip to content

Commit 7de85a0

Browse files
committed
ShowIdInProfile: move id position & support get topic id
1 parent 0ec87fd commit 7de85a0

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

app/src/main/java/cc/ioctl/tmoe/hook/func/ShowIdInProfile.kt

+24-8
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ object ShowIdInProfile : CommonDynamicHook(), ProfileActivityRowHook.Callback {
3333
(Reflex.getInstanceObjectOrNull(holder, "itemView") as? FrameLayout)?.let { textCell ->
3434
Parasitics.injectModuleResources(HostInfo.getApplication().resources)
3535
val userId = getUserId(profileActivity)
36-
val realId = if (userId == 0L) getChatId(profileActivity) else userId
36+
val realId = if (userId == 0L) getChatOrTopicId(profileActivity) else userId.toString()
3737
val isUser = userId != 0L
3838
val title = if (isUser) LocaleController.getString("UserId", R.string.UserId)
3939
else LocaleController.getString("GroupOrChannelId", R.string.GroupOrChannelId)
40-
XposedHelpers.callMethod(textCell, "setTextAndValue", realId.toString(), title, false)
40+
XposedHelpers.callMethod(textCell, "setTextAndValue", realId, title, false)
4141
}
4242
return true
4343
}
@@ -50,10 +50,10 @@ object ShowIdInProfile : CommonDynamicHook(), ProfileActivityRowHook.Callback {
5050
override fun onItemClicked(key: String, adapter: Any, profileActivity: Any): Boolean {
5151
if (rowName != key) return false
5252
val userId = getUserId(profileActivity)
53-
val realId = if (userId == 0L) getChatId(profileActivity) else userId
53+
val realId = if (userId == 0L) getChatOrTopicId(profileActivity) else userId.toString()
5454
val context = HostInfo.getApplication()
5555
context.getSystemService(ClipboardManager::class.java)
56-
.setPrimaryClip(ClipData.newPlainText("", realId.toString()))
56+
.setPrimaryClip(ClipData.newPlainText("", realId))
5757
Toast.makeText(context, LocaleController.getString("IdCopied", R.string.IdCopied), Toast.LENGTH_SHORT).show()
5858
return true
5959
}
@@ -62,20 +62,36 @@ object ShowIdInProfile : CommonDynamicHook(), ProfileActivityRowHook.Callback {
6262
manipulator: ProfileActivityRowHook.RowManipulator,
6363
profileActivity: Any
6464
) {
65-
var row = manipulator.getRowIdForField("infoHeaderRow")
66-
row = if (row == -1) 1 else row + 1
65+
val row = manipulator.getRowIdForField("notificationsRow")
66+
.let { nr ->
67+
if (nr != -1) nr
68+
else manipulator.getRowIdForField("infoHeaderRow").let { ihr ->
69+
if (ihr == -1) 1 else ihr + 1
70+
}
71+
}
6772
manipulator.insertRowAtPosition(rowName, row)
6873
}
6974

7075
private fun getUserId(profileActivity: Any): Long {
71-
return XposedHelpers.getObjectField(profileActivity, "userId") as Long
76+
return (XposedHelpers.getObjectField(profileActivity, "userId") as Number).toLong()
7277
}
7378

7479
private fun getChatId(profileActivity: Any): Long {
7580
val chat = XposedHelpers.getObjectField(profileActivity, "currentChat")
7681
if (chat != null) {
77-
return XposedHelpers.getObjectField(chat, "id") as Long
82+
return (XposedHelpers.getObjectField(chat, "id") as Number).toLong()
7883
}
7984
return 0L
8085
}
86+
87+
private fun getTopicId(profileActivity: Any): Long {
88+
return (XposedHelpers.getObjectField(profileActivity, "topicId") as Number).toLong()
89+
}
90+
91+
private fun getChatOrTopicId(profileActivity: Any): String {
92+
val chatId = getChatId(profileActivity)
93+
val topicId = getTopicId(profileActivity)
94+
if (topicId == 0L) return chatId.toString()
95+
return "$chatId/$topicId"
96+
}
8197
}

0 commit comments

Comments
 (0)