Skip to content

Commit 1fa9b7b

Browse files
committed
feat(Twitter): Added Disunify xchat system patch
1 parent 189dfdd commit 1fa9b7b

File tree

8 files changed

+72
-1
lines changed

8 files changed

+72
-1
lines changed

extensions/twitter/src/main/java/app/revanced/extension/twitter/Pref.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,5 +398,8 @@ public static boolean hidePostDetailedMetrics(){
398398
return Utils.getBooleanPerf(Settings.TIMELINE_HIDE_POST_DETAILED_METRICS);
399399
}
400400

401+
public static boolean disUnifyXChatSystem(){
402+
return !Utils.getBooleanPerf(Settings.MISC_DISUNIFY_XCHAT_SYSTEM);
403+
}
401404
//end
402405
}

extensions/twitter/src/main/java/app/revanced/extension/twitter/settings/ScreenBuilder.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,17 @@ public void buildMiscSection(boolean buildCategory){
465465
);
466466
}
467467

468+
469+
if (SettingsStatus.disUnifyXChatSystem) {
470+
addPreference(category,
471+
helper.switchPreference(
472+
strRes("piko_disunify_xchat_system"),
473+
strRes("piko_disunify_xchat_system_desc"),
474+
Settings.MISC_DISUNIFY_XCHAT_SYSTEM
475+
)
476+
);
477+
}
478+
468479
}
469480

470481
public void buildFeatureFlagsSection(boolean buildCategory){

extensions/twitter/src/main/java/app/revanced/extension/twitter/settings/Settings.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public class Settings extends BaseSettings {
2828
public static final BooleanSetting MISC_HIDE_SOCIAL_PROOF = new BooleanSetting("misc_hide_social_proof", false);
2929
public static final BooleanSetting MISC_HIDE_SEARCH_SUGGESTIONS = new BooleanSetting("misc_hide_search_suggestions", false);
3030
public static final BooleanSetting MISC_PAUSE_SEARCH_SUGGESTIONS = new BooleanSetting("misc_pause_search_suggestions", false);
31+
public static final BooleanSetting MISC_DISUNIFY_XCHAT_SYSTEM = new BooleanSetting("MISC_DISUNIFY_XCHAT_SYSTEM", true);
3132

3233
public static final BooleanSetting ADS_HIDE_PROMOTED_TRENDS = new BooleanSetting("ads_hide_promoted_trends", true);
3334
public static final BooleanSetting ADS_HIDE_PROMOTED_POSTS = new BooleanSetting("ads_hide_promoted_posts", true);

extensions/twitter/src/main/java/app/revanced/extension/twitter/settings/SettingsStatus.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,12 +352,17 @@ public static void hidePostMetrics() {
352352
hidePostMetrics = true;
353353
}
354354

355+
public static boolean disUnifyXChatSystem = false;
356+
public static void disUnifyXChatSystem() {
357+
disUnifyXChatSystem = true;
358+
}
359+
355360
public static boolean enableTimelineSection() {
356361
return ( hidePostMetrics || hideNavbarBadge || showSourceLabel || hideCommBadge || showSensitiveMedia || hideNudgeButton || disableAutoTimelineScroll || forceTranslate || hidePromoteButton || hideCommunityNote || hideLiveThreads || hideBanner || hideInlineBmk || showPollResultsEnabled || hideImmersivePlayer || enableVidAutoAdvance || enableForceHD);
357362
}
358363

359364
public static boolean enableMiscSection() {
360-
return ( pauseSearchSuggestions || removeSearchSuggestions || hideSocialProof || roundOffNumbers || enableFontMod || hideRecommendedUsers || hideFAB || hideViewCount || customSharingDomainEnabled || hideFABBtns);
365+
return ( disUnifyXChatSystem || pauseSearchSuggestions || removeSearchSuggestions || hideSocialProof || roundOffNumbers || enableFontMod || hideRecommendedUsers || hideFAB || hideViewCount || customSharingDomainEnabled || hideFABBtns);
361366
}
362367

363368
public static boolean enableAdsSection() {

extensions/twitter/src/main/java/app/revanced/extension/twitter/settings/fragments/SettingsAboutFragment.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ public void onCreate(@org.jetbrains.annotations.Nullable Bundle savedInstanceSta
133133
flags.put(strRes("piko_pref_customisation_change_app_icon"),SettingsStatus.appIconCustomisation);
134134
flags.put(strRes("piko_pref_hide_badge_nav_bar"),SettingsStatus.hideNavbarBadge);
135135
flags.put(strRes("piko_pref_hide_post_inline_metrics"),SettingsStatus.hidePostMetrics);
136+
flags.put(strRes("piko_disunify_xchat_system"),SettingsStatus.disUnifyXChatSystem);
136137

137138
LegacyTwitterPreferenceCategory patPref = preferenceCategory(strRes("piko_pref_patches"), screen);
138139

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package app.crimera.patches.twitter.misc.disUnifyXChatSystem
2+
3+
import app.crimera.patches.twitter.misc.settings.settingsPatch
4+
import app.crimera.patches.twitter.misc.settings.settingsStatusLoadFingerprint
5+
import app.crimera.utils.Constants.PREF_DESCRIPTOR
6+
import app.crimera.utils.enableSettings
7+
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
8+
import app.revanced.patcher.extensions.InstructionExtensions.instructions
9+
import app.revanced.patcher.fingerprint
10+
import app.revanced.patcher.patch.bytecodePatch
11+
import app.revanced.patcher.util.smali.ExternalLabel
12+
import com.android.tools.smali.dexlib2.Opcode
13+
14+
internal val xchatSubSystemUserCheckFingerprint =
15+
fingerprint {
16+
returns("Z")
17+
strings(
18+
"userId",
19+
"xchat_unified_tab_min_snowflake_user_id",
20+
)
21+
}
22+
23+
@Suppress("unused")
24+
val disUnifyXchatSystemPatch =
25+
bytecodePatch(
26+
name = "Disunify xchat system",
27+
description = "Bring back legacy features like messages and share sheet.",
28+
) {
29+
compatibleWith("com.twitter.android")
30+
dependsOn(settingsPatch)
31+
32+
execute {
33+
xchatSubSystemUserCheckFingerprint.method.apply {
34+
addInstructionsWithLabels(
35+
0,
36+
"""
37+
invoke-static {}, $PREF_DESCRIPTOR;->disUnifyXChatSystem()Z
38+
move-result v0
39+
if-nez v0, :piko
40+
return v0
41+
""".trimIndent(),
42+
ExternalLabel("piko", instructions.first { it.opcode == Opcode.CONST_STRING }),
43+
)
44+
settingsStatusLoadFingerprint.enableSettings("disUnifyXChatSystem")
45+
}
46+
}
47+
}

patches/src/main/kotlin/app/crimera/patches/twitter/misc/shareMenu/fingerprints/ShareMenuButtonFuncCallFingerprint.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ internal val shareMenuButtonFuncCallFingerprint =
2424
"tweet_analytics",
2525
"author_moderated_replies_author_enabled",
2626
"conversational_replies_android_pinned_replies_creation_enabled",
27+
"share_menu_click",
2728
)
2829
}
2930

patches/src/main/resources/twitter/settings/strings/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@
101101
<string name="piko_pref_pause_search_suggestion_desc">Search suggestions will not be saved locally</string>
102102
<string name="piko_pref_search_suggestion">search suggestions</string>
103103
<string name="piko_pref_search_suggestion_desc">Hide/Remove search suggestion in explore section</string>
104+
<string name="piko_disunify_xchat_system">Disunify xchat system</string>
105+
<string name="piko_disunify_xchat_system_desc">Bring back legacy features like messages and share sheet</string>
104106

105107
<!-- Feature flags Settings -->
106108
<string name="piko_title_feature_flags">Feature flags</string>

0 commit comments

Comments
 (0)