From 1c76b7d7635bdc1c7045154b601e6922e45e18e3 Mon Sep 17 00:00:00 2001 From: swakwork Date: Sat, 21 Jun 2025 22:00:12 +0530 Subject: [PATCH 1/3] feat(Twitter): Added `Hide community badges` patch --- .../java/app/revanced/integrations/twitter/Pref.java | 8 +++++++- .../integrations/twitter/settings/ScreenBuilder.java | 9 +++++++++ .../revanced/integrations/twitter/settings/Settings.java | 1 + .../integrations/twitter/settings/SettingsStatus.java | 6 +++++- .../settings/fragments/SettingsAboutFragment.java | 1 + 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/app/revanced/integrations/twitter/Pref.java b/app/src/main/java/app/revanced/integrations/twitter/Pref.java index cccac35ccc..23fe230862 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/Pref.java +++ b/app/src/main/java/app/revanced/integrations/twitter/Pref.java @@ -7,12 +7,13 @@ @SuppressWarnings("unused") public class Pref { - public static boolean ROUND_OFF_NUMBERS,ENABLE_FORCE_HD; + public static boolean ROUND_OFF_NUMBERS,ENABLE_FORCE_HD, HIDE_COMM_BADGE; public static float POST_FONT_SIZE; static{ ROUND_OFF_NUMBERS = isRoundOffNumbersEnabled(); ENABLE_FORCE_HD = enableForceHD(); POST_FONT_SIZE = setPostFontSize(); + HIDE_COMM_BADGE = hideCommBadge(); } public static float setPostFontSize() { Float fontSize = 0.0f; @@ -23,6 +24,11 @@ public static float setPostFontSize() { } return fontSize; } + + public static boolean hideCommBadge() { + return !Utils.getBooleanPerf(Settings.TIMELINE_HIDE_COMM_BADGE); + } + public static boolean showSensitiveMedia() { return Utils.getBooleanPerf(Settings.TIMELINE_SHOW_SENSITIVE_MEDIA); } diff --git a/app/src/main/java/app/revanced/integrations/twitter/settings/ScreenBuilder.java b/app/src/main/java/app/revanced/integrations/twitter/settings/ScreenBuilder.java index 221452cb3d..dd72cd7d59 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/settings/ScreenBuilder.java +++ b/app/src/main/java/app/revanced/integrations/twitter/settings/ScreenBuilder.java @@ -790,6 +790,15 @@ public void buildTimelineSection(boolean buildCategory){ ) ); } + if (SettingsStatus.hideCommBadge) { + addPreference(category, + helper.switchPreference( + strRes("piko_pref_hide_community_badge"), + "", + Settings.TIMELINE_HIDE_COMM_BADGE + ) + ); + } } public void buildExportSection(boolean buildCategory){ diff --git a/app/src/main/java/app/revanced/integrations/twitter/settings/Settings.java b/app/src/main/java/app/revanced/integrations/twitter/settings/Settings.java index 3623519923..dea4df9262 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/settings/Settings.java +++ b/app/src/main/java/app/revanced/integrations/twitter/settings/Settings.java @@ -64,6 +64,7 @@ public class Settings extends BaseSettings { public static final BooleanSetting TIMELINE_ENABLE_VID_FORCE_HD = new BooleanSetting("timeline_enable_vid_force_hd", true); public static final BooleanSetting TIMELINE_HIDE_NUDGE_BUTTON = new BooleanSetting("timeline_hide_nudge_button", false); public static final BooleanSetting TIMELINE_SHOW_SENSITIVE_MEDIA = new BooleanSetting("timeline_show_sensitive_media", true); + public static final BooleanSetting TIMELINE_HIDE_COMM_BADGE = new BooleanSetting("timeline_hide_community_badge", false); public static final BooleanSetting PREMIUM_READER_MODE = new BooleanSetting("premium_reader_mode", false); public static final BooleanSetting PREMIUM_UNDO_POSTS = new BooleanSetting("premium_undo_posts", false); diff --git a/app/src/main/java/app/revanced/integrations/twitter/settings/SettingsStatus.java b/app/src/main/java/app/revanced/integrations/twitter/settings/SettingsStatus.java index 3d7af9b175..65ecf607d2 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/settings/SettingsStatus.java +++ b/app/src/main/java/app/revanced/integrations/twitter/settings/SettingsStatus.java @@ -71,7 +71,11 @@ public class SettingsStatus { public static boolean hideNudgeButton = false; public static boolean hideSocialProof = false; public static boolean customPostFontSize = false; + public static boolean hideCommBadge = false; + public static void hideCommBadge() { + hideCommBadge = true; + } public static void customPostFontSize() { customPostFontSize = true; } @@ -322,7 +326,7 @@ public static void typeaheadCustomisation() { } public static boolean enableTimelineSection() { - return ( showSensitiveMedia || hideNudgeButton || disableAutoTimelineScroll || forceTranslate || hidePromoteButton || hideCommunityNote || hideLiveThreads || hideBanner || hideInlineBmk || showPollResultsEnabled || hideImmersivePlayer || enableVidAutoAdvance || enableForceHD); + return ( hideCommBadge || showSensitiveMedia || hideNudgeButton || disableAutoTimelineScroll || forceTranslate || hidePromoteButton || hideCommunityNote || hideLiveThreads || hideBanner || hideInlineBmk || showPollResultsEnabled || hideImmersivePlayer || enableVidAutoAdvance || enableForceHD); } public static boolean enableMiscSection() { diff --git a/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsAboutFragment.java b/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsAboutFragment.java index 8fe1b4de57..bc64b0c2af 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsAboutFragment.java +++ b/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsAboutFragment.java @@ -117,6 +117,7 @@ public void onCreate(@org.jetbrains.annotations.Nullable Bundle savedInstanceSta flags.put(strEnableRes("piko_pref_force_hd"),SettingsStatus.enableForceHD); flags.put(strRes("piko_pref_hide_nudge_button"),SettingsStatus.hideNudgeButton); flags.put(strRes("piko_pref_hide_social_proof"),SettingsStatus.hideSocialProof); + flags.put(strRes("piko_pref_hide_community_badge"),SettingsStatus.hideCommBadge); flags.put(strRes("piko_title_native_translator"),SettingsStatus.nativeTranslator); flags.put(strRes("piko_pref_customisation_post_font_size"),SettingsStatus.customPostFontSize); flags.put(strRemoveRes("piko_pref_top_people_search"),SettingsStatus.hideTopPeopleSearch); From 35dabb66ebe792211a5a3637bb1b206c73a9ef2b Mon Sep 17 00:00:00 2001 From: swakwork Date: Sun, 22 Jun 2025 19:59:48 +0530 Subject: [PATCH 2/3] feat(Twitter): Added `Log server response` patch --- .../revanced/integrations/twitter/Pref.java | 7 +- .../patches/loggers/ResponseLogger.java | 66 +++++++++++++++++++ .../twitter/settings/ScreenBuilder.java | 37 +++++++++++ .../twitter/settings/Settings.java | 4 ++ .../twitter/settings/SettingsStatus.java | 11 ++++ .../settings/fragments/PageFragment.java | 3 + .../fragments/SettingsAboutFragment.java | 1 + .../settings/fragments/SettingsFragment.java | 1 + 8 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/app/revanced/integrations/twitter/patches/loggers/ResponseLogger.java diff --git a/app/src/main/java/app/revanced/integrations/twitter/Pref.java b/app/src/main/java/app/revanced/integrations/twitter/Pref.java index 23fe230862..b873f83afe 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/Pref.java +++ b/app/src/main/java/app/revanced/integrations/twitter/Pref.java @@ -24,7 +24,12 @@ public static float setPostFontSize() { } return fontSize; } - + public static boolean serverResponseLogging() { + return Utils.getBooleanPerf(Settings.LOG_RES); + } + public static boolean serverResponseLoggingOverwriteFile() { + return Utils.getBooleanPerf(Settings.LOG_RES_OVRD); + } public static boolean hideCommBadge() { return !Utils.getBooleanPerf(Settings.TIMELINE_HIDE_COMM_BADGE); } diff --git a/app/src/main/java/app/revanced/integrations/twitter/patches/loggers/ResponseLogger.java b/app/src/main/java/app/revanced/integrations/twitter/patches/loggers/ResponseLogger.java new file mode 100644 index 0000000000..63f3f9156e --- /dev/null +++ b/app/src/main/java/app/revanced/integrations/twitter/patches/loggers/ResponseLogger.java @@ -0,0 +1,66 @@ +package app.revanced.integrations.twitter.patches.loggers; + +import java.io.File; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.FileOutputStream; +import android.os.Environment; + +import app.revanced.integrations.twitter.Pref; +import app.revanced.integrations.twitter.Utils; + +public class ResponseLogger { + private static boolean LOG_RES; + static{ + LOG_RES = Pref.serverResponseLogging(); + if(Pref.serverResponseLoggingOverwriteFile()){ + writeFile("".getBytes(),false); +// Utils.logger("Cleared response log file!!!"); + } + } + + public static InputStream saveInputStream(InputStream inputStream) throws Exception { + if(!LOG_RES) return inputStream; + + StringBuilder sb = new StringBuilder(); + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); + String line; + while ((line = reader.readLine()) != null) { + sb.append(line).append("\n"); + } + sb.append("\n"); + inputStream.close(); + byte[] contentBytes = sb.toString().getBytes(); + if(!(sb.indexOf("session_token") == 2 || sb.indexOf("guest_token") == 2)){ + writeFile(contentBytes,true); + } + + return new ByteArrayInputStream(contentBytes); + } + + private static boolean writeFile(byte[] data,boolean append){ + try { + File downloadsDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); + File pikoDir = new File(downloadsDir, "Piko"); + + if (!pikoDir.exists()) { + pikoDir.mkdirs(); + } + + File outputFile = new File(pikoDir, "Server-Response-Log.txt"); + + FileOutputStream outputStream = new FileOutputStream(outputFile, append); + outputStream.write(data); + outputStream.close(); + return true; + }catch (Exception e){ + Utils.logger(e.toString()); + } + + return false; + } + +} \ No newline at end of file diff --git a/app/src/main/java/app/revanced/integrations/twitter/settings/ScreenBuilder.java b/app/src/main/java/app/revanced/integrations/twitter/settings/ScreenBuilder.java index dd72cd7d59..1972cb9400 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/settings/ScreenBuilder.java +++ b/app/src/main/java/app/revanced/integrations/twitter/settings/ScreenBuilder.java @@ -801,6 +801,32 @@ public void buildTimelineSection(boolean buildCategory){ } } + public void buildLoggingSection(boolean buildCategory) { + LegacyTwitterPreferenceCategory category = null; + if (buildCategory) + category = preferenceCategory(strRes("piko_title_logging")); + + if (SettingsStatus.serverResponseLogging) { + addPreference(category, + helper.switchPreference( + strRes("piko_pref_server_response_logging"), + strRes("piko_pref_server_response_logging_desc"), + Settings.LOG_RES + ) + ); + } + + if (SettingsStatus.serverResponseLoggingOverwriteFile) { + addPreference(category, + helper.switchPreference( + strRes("piko_pref_server_response_logging_file_overwrite"), + strRes("piko_pref_server_response_logging_file_overwrite_desc"), + Settings.LOG_RES_OVRD + ) + ); + } + + } public void buildExportSection(boolean buildCategory){ LegacyTwitterPreferenceCategory category = null; if(buildCategory) @@ -933,6 +959,17 @@ public void buildSinglePageSettings(){ ) ); } + + if (SettingsStatus.loggingSection()) { + addPreference( + helper.buttonPreference( + strRes("piko_title_logging"), + "", + Settings.LOGGING_SECTION, + "ic_vector_bug_stroke",null + ) + ); + } addPreference( helper.buttonPreference( diff --git a/app/src/main/java/app/revanced/integrations/twitter/settings/Settings.java b/app/src/main/java/app/revanced/integrations/twitter/settings/Settings.java index dea4df9262..f8db083aa0 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/settings/Settings.java +++ b/app/src/main/java/app/revanced/integrations/twitter/settings/Settings.java @@ -84,6 +84,9 @@ public class Settings extends BaseSettings { public static final StringSetting CUSTOM_SEARCH_TYPE_AHEAD = new StringSetting("customisation_search_type_ahead", ""); public static final StringSetting CUSTOM_POST_FONT_SIZE = new StringSetting("customisation_post_font_size", String.valueOf(Utils.getResourceDimension("font_size_normal"))); + public static final BooleanSetting LOG_RES = new BooleanSetting("logging_response", false); + public static final BooleanSetting LOG_RES_OVRD = new BooleanSetting("logging_response_overwrite_file", false); + public static final BooleanSetting EXPORT_PREF = new BooleanSetting("export_pref", true); public static final BooleanSetting EXPORT_FLAGS = new BooleanSetting("export_flags", true); public static final BooleanSetting IMPORT_PREF = new BooleanSetting("import_pref", true); @@ -100,6 +103,7 @@ public class Settings extends BaseSettings { public static final BooleanSetting MISC_SECTION = new BooleanSetting("misc_section", true); public static final BooleanSetting CUSTOMISE_SECTION = new BooleanSetting("custommise_section", true); public static final BooleanSetting TIMELINE_SECTION = new BooleanSetting("timeline_section", true); + public static final BooleanSetting LOGGING_SECTION = new BooleanSetting("logging_section", true); public static final BooleanSetting BACKUP_SECTION = new BooleanSetting("backup_section", true); public static final BooleanSetting NATIVE_SECTION = new BooleanSetting("native_section", true); public static final BooleanSetting SINGLE_PAGE_SETTINGS = new BooleanSetting("single_page_settings", false); diff --git a/app/src/main/java/app/revanced/integrations/twitter/settings/SettingsStatus.java b/app/src/main/java/app/revanced/integrations/twitter/settings/SettingsStatus.java index 65ecf607d2..8b2d7932d2 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/settings/SettingsStatus.java +++ b/app/src/main/java/app/revanced/integrations/twitter/settings/SettingsStatus.java @@ -72,7 +72,15 @@ public class SettingsStatus { public static boolean hideSocialProof = false; public static boolean customPostFontSize = false; public static boolean hideCommBadge = false; + public static boolean serverResponseLogging = false; + public static boolean serverResponseLoggingOverwriteFile = false; + public static void serverResponseLogging() { + serverResponseLogging = true; + } + public static void serverResponseLoggingOverwriteFile() { + serverResponseLoggingOverwriteFile = true; + } public static void hideCommBadge() { hideCommBadge = true; } @@ -352,6 +360,9 @@ public static boolean enablePremiumSection() { public static boolean enableCustomisationSection() { return (searchTabCustomisation || typeaheadCustomisation || exploreTabCustomisation || customPostFontSize || inlineBarCustomisation || navBarCustomisation || sideBarCustomisation || profileTabCustomisation || timelineTabCustomisation || defaultReplySortFilter); } + public static boolean loggingSection() { + return (serverResponseLogging || serverResponseLoggingOverwriteFile); + } public static void load() { } diff --git a/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/PageFragment.java b/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/PageFragment.java index 2c43bec9e1..962a03622f 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/PageFragment.java +++ b/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/PageFragment.java @@ -64,6 +64,9 @@ public void onCreate(@Nullable Bundle savedInstanceState) { }else if (bundle.getBoolean(Settings.NATIVE_SECTION.key, false)) { screenBuilder.buildNativeSection(false); toolbarText = "piko_title_native"; + }else if (bundle.getBoolean(Settings.LOGGING_SECTION.key, false)) { + screenBuilder.buildLoggingSection(false); + toolbarText = "piko_title_logging"; } ActivityHook.toolbar.setTitle(StringRef.str(toolbarText)); diff --git a/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsAboutFragment.java b/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsAboutFragment.java index bc64b0c2af..7b732d92c1 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsAboutFragment.java +++ b/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsAboutFragment.java @@ -123,6 +123,7 @@ public void onCreate(@org.jetbrains.annotations.Nullable Bundle savedInstanceSta flags.put(strRemoveRes("piko_pref_top_people_search"),SettingsStatus.hideTopPeopleSearch); flags.put(strRes("piko_pref_customisation_searchtabs"),SettingsStatus.searchTabCustomisation); flags.put(strRemoveRes("piko_pref_hide_todays_news"),SettingsStatus.hideTodaysNews); + flags.put(strRemoveRes("piko_pref_server_response_logging"),SettingsStatus.serverResponseLogging); LegacyTwitterPreferenceCategory patPref = preferenceCategory(strRes("piko_pref_patches"), screen); diff --git a/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsFragment.java b/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsFragment.java index b480542753..016582cd44 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsFragment.java +++ b/app/src/main/java/app/revanced/integrations/twitter/settings/fragments/SettingsFragment.java @@ -45,6 +45,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { screenBuilder.buildMiscSection(buildCategory); screenBuilder.buildCustomiseSection(buildCategory); screenBuilder.buildTimelineSection(buildCategory); + screenBuilder.buildLoggingSection(buildCategory); screenBuilder.buildExportSection(buildCategory); screenBuilder.buildPikoSection(buildCategory); From fb4239b341bb86712baa4ad26faf8fd5fdf2fccd Mon Sep 17 00:00:00 2001 From: swakwork Date: Mon, 23 Jun 2025 20:51:19 +0530 Subject: [PATCH 3/3] upd(Twitter): invert community badge preference --- app/src/main/java/app/revanced/integrations/twitter/Pref.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/app/revanced/integrations/twitter/Pref.java b/app/src/main/java/app/revanced/integrations/twitter/Pref.java index b873f83afe..098d86615f 100644 --- a/app/src/main/java/app/revanced/integrations/twitter/Pref.java +++ b/app/src/main/java/app/revanced/integrations/twitter/Pref.java @@ -31,7 +31,7 @@ public static boolean serverResponseLoggingOverwriteFile() { return Utils.getBooleanPerf(Settings.LOG_RES_OVRD); } public static boolean hideCommBadge() { - return !Utils.getBooleanPerf(Settings.TIMELINE_HIDE_COMM_BADGE); + return Utils.getBooleanPerf(Settings.TIMELINE_HIDE_COMM_BADGE); } public static boolean showSensitiveMedia() {