From 4d9de1a81a02c4c8892c2217135ce6807b3f02ff Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Wed, 1 Oct 2025 11:57:53 +0400 Subject: [PATCH] Use custom navigation bar notification filled icon (20.39 still needs a bytecode fix) --- .../youtube/shared/NavigationBar.java | 19 +++++++------- .../misc/navigation/NavigationBarHookPatch.kt | 24 ++++++++++++++++++ .../revanced_fill_bell_cairo_black_24.png | Bin 0 -> 378 bytes .../yt_fill_bell_cairo_black_24.png | Bin 708 -> 0 bytes .../yt_fill_bell_cairo_black_24.png | Bin 394 -> 0 bytes .../revanced_fill_bell_cairo_black_24.png | Bin 0 -> 237 bytes .../yt_fill_bell_cairo_black_24.png | Bin 434 -> 0 bytes .../revanced_fill_bell_cairo_black_24.png | Bin 0 -> 415 bytes .../yt_fill_bell_cairo_black_24.png | Bin 843 -> 0 bytes .../revanced_fill_bell_cairo_black_24.png | Bin 0 -> 711 bytes .../yt_fill_bell_cairo_black_24.png | Bin 1423 -> 0 bytes .../revanced_fill_bell_cairo_black_24.png | Bin 0 -> 848 bytes .../yt_fill_bell_cairo_black_24.png | Bin 1287 -> 0 bytes 13 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 patches/src/main/resources/navigationbuttons/drawable-hdpi/revanced_fill_bell_cairo_black_24.png delete mode 100644 patches/src/main/resources/navigationbuttons/drawable-hdpi/yt_fill_bell_cairo_black_24.png delete mode 100644 patches/src/main/resources/navigationbuttons/drawable-ldpi/yt_fill_bell_cairo_black_24.png create mode 100644 patches/src/main/resources/navigationbuttons/drawable-mdpi/revanced_fill_bell_cairo_black_24.png delete mode 100644 patches/src/main/resources/navigationbuttons/drawable-mdpi/yt_fill_bell_cairo_black_24.png create mode 100644 patches/src/main/resources/navigationbuttons/drawable-xhdpi/revanced_fill_bell_cairo_black_24.png delete mode 100644 patches/src/main/resources/navigationbuttons/drawable-xhdpi/yt_fill_bell_cairo_black_24.png create mode 100644 patches/src/main/resources/navigationbuttons/drawable-xxhdpi/revanced_fill_bell_cairo_black_24.png delete mode 100644 patches/src/main/resources/navigationbuttons/drawable-xxhdpi/yt_fill_bell_cairo_black_24.png create mode 100644 patches/src/main/resources/navigationbuttons/drawable-xxxhdpi/revanced_fill_bell_cairo_black_24.png delete mode 100644 patches/src/main/resources/navigationbuttons/drawable-xxxhdpi/yt_fill_bell_cairo_black_24.png diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/NavigationBar.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/NavigationBar.java index a0194f0dc6..479f7c01a2 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/NavigationBar.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/shared/NavigationBar.java @@ -278,13 +278,13 @@ public final class NavigationBar { } /** - * Use the bundled non cairo filled icon instead of a custom icon. - * Use the old non cairo filled icon, which is almost identical to - * the what would be the filled cairo icon. + * Custom cairo notification filled icon to fix unpatched app missing resource. + * Custom icon is modified starting from + * Font Awesome. */ private static final int fillBellCairoBlack = Utils.getResourceIdentifier( ResourceType.DRAWABLE, - "yt_fill_bell_black_24"); + "revanced_fill_bell_cairo_black_24"); /** * Injection point. @@ -292,13 +292,12 @@ public final class NavigationBar { */ @SuppressWarnings({"unchecked", "rawtypes"}) public static void setCairoNotificationFilledIcon(EnumMap enumMap, Enum tabActivityCairo) { - if (fillBellCairoBlack != 0) { - // Show a popup informing this fix is no longer needed to those who might care. - if (BaseSettings.DEBUG.get() && enumMap.containsKey(tabActivityCairo)) { - Logger.printException(() -> "YouTube fixed the cairo notification icons"); - } - enumMap.putIfAbsent(tabActivityCairo, fillBellCairoBlack); + // Show a popup informing this fix is no longer needed to those who might care. + if (BaseSettings.DEBUG.get() && enumMap.containsKey(tabActivityCairo)) { + Logger.printException(() -> "YouTube fixed the cairo notification icons"); } + + enumMap.putIfAbsent(tabActivityCairo, fillBellCairoBlack); } public enum NavigationButton { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/NavigationBarHookPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/NavigationBarHookPatch.kt index 77ed5ed7ab..92b65839bc 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/NavigationBarHookPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/NavigationBarHookPatch.kt @@ -6,6 +6,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.extensions.InstructionExtensions.instructions import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patcher.patch.resourcePatch import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable import app.revanced.patches.shared.misc.mapping.resourceMappingPatch @@ -17,6 +18,8 @@ import app.revanced.patches.youtube.misc.playservice.is_20_28_or_greater import app.revanced.patches.youtube.misc.playservice.is_20_39_or_greater import app.revanced.patches.youtube.misc.playservice.versionCheckPatch import app.revanced.patches.youtube.shared.mainActivityOnBackPressedFingerprint +import app.revanced.util.ResourceGroup +import app.revanced.util.copyResources import app.revanced.util.findFreeRegister import app.revanced.util.getReference import com.android.tools.smali.dexlib2.AccessFlags @@ -46,6 +49,27 @@ val navigationBarHookPatch = bytecodePatch(description = "Hooks the active navig versionCheckPatch, playerTypeHookPatch, // Required to detect the search bar in all situations. resourceMappingPatch, // Used by fingerprints + resourcePatch { + // Copy missing notification icon. + execute { + arrayOf( + // App does not use ldpi icons. + "mdpi", + "hdpi", + "xhdpi", + "xxhdpi", + "xxxhdpi", + ).forEach { mipmap -> + copyResources( + "navigationbuttons", + ResourceGroup( + "drawable-$mipmap", + "revanced_fill_bell_cairo_black_24.png" + ) + ) + } + } + } ) execute { diff --git a/patches/src/main/resources/navigationbuttons/drawable-hdpi/revanced_fill_bell_cairo_black_24.png b/patches/src/main/resources/navigationbuttons/drawable-hdpi/revanced_fill_bell_cairo_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..ba9154778287b0f833385ce97391a260c95f42aa GIT binary patch literal 378 zcmV-=0fqjFP)qkC%;gPW6$j&>2}~?RpMXK*s=R^m31HHVM0Z_u(y6$Ukjg+q zpeF+{G--SPc5&eI8!!3hwmbHfO`Q?5%|_I*$w<**ir#KY2Sp||T=dRdYGk13;fF## zJ*@PZ2CoF6P{12a6sb74+e|p+;(%O*cXZ4?s325iz%n+p@D$PiVs)u`tRrF@{|77!{ZsLq8NGH}dce^CUOQv0`o5iX29VXu%FJYKlS)j0U36 zEe0jNM4?YgBv70)7lr1Wp@>!Hg+LSvc&1E@95-m>yT&F`3qMuJ=ZHuT=#;xB(kUK+ zI1=D-LL`f0`ds~OOgI}b-Z|~l!a}6WA{1KC{nrN)6z$NH-A0j-jl+=HWl3r0-~a#s07*qoM6N<$f)lo(cK`qY literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/navigationbuttons/drawable-hdpi/yt_fill_bell_cairo_black_24.png b/patches/src/main/resources/navigationbuttons/drawable-hdpi/yt_fill_bell_cairo_black_24.png deleted file mode 100644 index 7381ab7ef40b7ce23eeeb2f8d588d909c60323a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 708 zcmV;#0z3VQP)%4b4NL^rM8#AC!4*YJ1r-c55F;^j0sn-ep^4%WiHV_+xxc|g6f;3) z=KGiqrmNq5OH~g{FvB^0U)|-r)6=!|%-Yck`&l(q`ap*KhSno~3VwjU$8>GZ8mV^l zHMEAUZotp*8r(XjYjf7@A>D?)h7PmM6SxC*Va}R8-CFUuk0Iar8I*Uy2-fUr)^8oq z%voIAf*WB3Yqu%d>kP{}v>G~z>`Qn8<~Fi+oSqlZ8A2Ue3>`r772FTqkdTEv_P(ae zSwb1LhBhO04<3T8ILN?Vs0JaAT0{GgxehnLRygCV8pYXKL+4T23;RMd=W2#)4B4ZY zu|_l1<7}0NjVXbpIUfT@mL__x)le%tUSr4}@4i`~ilQ27Wm}64OwWz^k2r+$%&SF+ zQDaD&`!qJL3@W#4L>%dVz@zEU922k3^RE>R#K@k2?P zJnn1AbL0)`-gW&4!ynetwK;3{kZwa?L+KUXoTNbhbMu~YHXVrRy0ri5}pS-tFdjOt7weqE@zqAOQ`9Y$-K6reG*Hs3wl0c=9fj@vcc&rm2dQx zk<79TP!_3<^YsbeJE-Ri|H7|P7FpsEPm%EDwoz{Z-_v9npe&k2-h_QHW46wfMO!#K zun%S|t8;0QM|*`c1N&g+nvmD9R8?BEhO!9%3bU&*oEAMGZo`ehL)JGK;j9*YvyahC zi#*n6jHkeR);stS=&TlfvtEOpKiZFwe7!Os!_z=#HMUKpcT~Fm;a(6g0-e>^Ht`Jr o0RR8zVFtkf000I_L_t&o02XjBCC>ThR{#J207*qoM6N<$g8PZBfB*mh diff --git a/patches/src/main/resources/navigationbuttons/drawable-mdpi/revanced_fill_bell_cairo_black_24.png b/patches/src/main/resources/navigationbuttons/drawable-mdpi/revanced_fill_bell_cairo_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f3e768ba52215e25266c77d256d720d8b7d2cbd0 GIT binary patch literal 237 zcmV40D5(tY<1+)CPdsZKRt**=8}bS6!;J;F>((^u0eDyx(mexm@6orgELK4O;>fbAk1(t z_3FO+>Q2wl-BT0){27~oSuXSrz7J@v#TS~=r z-xaXVz!O}CDb(!gNqfz{6flkJ9`3*#wrS|mOF4>Cz!CNX*aba@Ia4X%f}u&+1wEHJ zQ!cuS=zD0+u*Ap(sISJ>;%<$uGb}M$MJ(R~ez4Y1{}IURn>813+BoWq)|s||EzWE;qnB_-a}!2L1Lo;Iz!}&V&O9>Y87#j@ z15S{4;a}nGaX6d?`0#oQ4LxgTpTn6n;DzP}^!5+wiv~G@TIjKM_BC{+0bwt!ePV`t z>o!e2Vr{?;Q@$qs*3w!Hxs2L?PmZ~U-mTJF4XKRUfbuDY?hgO}0RR78%_Up_000I_ cL_t&o0L|1cG2$G_PXGV_07*qoM6N<$g1xrFi2wiq diff --git a/patches/src/main/resources/navigationbuttons/drawable-xhdpi/revanced_fill_bell_cairo_black_24.png b/patches/src/main/resources/navigationbuttons/drawable-xhdpi/revanced_fill_bell_cairo_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..dfaf31c8b5348313f45a5b11bfad82f0a5e74184 GIT binary patch literal 415 zcmV;Q0bu@#P)>_d|4pb0%5C`rNSR)VzhOCm<1xjP*B(#FB z75HYEL~1C_RY~B8P&*KE$P8O_P$|}BlUR4Cl)EL?OX@(KSXZe7m&CHE(bGQOql$%w z=wuILyvTqzM-PZi3pKSCHU>FUi53oq*|;?5kJrG(Ui|g*;}7l-E8RH1u37*9002ov JPDHLkV1isxs!9L= literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/navigationbuttons/drawable-xhdpi/yt_fill_bell_cairo_black_24.png b/patches/src/main/resources/navigationbuttons/drawable-xhdpi/yt_fill_bell_cairo_black_24.png deleted file mode 100644 index 2eed03d8b17dbc774585eab9d5a9f600465dbd85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 843 zcmV-R1GM~!P)4Mbl+OcfDD%|%2|%oJ2aGeO_L%*aTyjeG=OKn+9_ zzi)ONSlOxi|DNiVg;~y->Zv+){yNj!J>5OaXO{TiG{FDffzv&(z#dpb-wpT)ejn0p z`y8XI9a`^!-7M`hd@*=zkT@XzQ9>{l@aRKT@lgA_h4pZ(W+yc8|D-&Nqy=e028el!8p2A&lQtZUw z3DlD&hpquGQRXDTQj%cQ(LEoR7d%5%dx0skb#E`hg}J!2i`fgPHxj=xvR# zdp3aj&0+VvP;YC5XC}lWPybg(ZyIm-?VPgA2KbHpPx!4T>TM0|W5@`f>Fn&upNew32+6+^m&>&S$KD6te~^03t00lMqZ)PER0%!2TV(SGoo(^uTJlm z3~K?3=}X29$BJvH1^Cc#AziJCYp4bA?Bl~Lf2ioXfUfhb`GU!h;aJoH{9>kO123ID zs7kaT@(|RPyd1Npk8g_i2ekm9)eJ>nhHa$DXp4R=1H3C%nm?G)&Y$_uyOsf7<2?&& zP@}e{3yrr7;PK+)_Su>7rCq!lwc}NZk(L20`;`}edAUjJPpdy@rQ7y7riSh|XdS>+ z`RP7q!)K^IGM8@K=NLon&_{rFs|z?y0|Y*#UL}7300960*HAg100006NklA;!lz3T0oq~k^hDy3b(?1~Q!AtZf>`R`K?$)J4 z&_tqAp{NbY)xfo(W83Ewbcm?*yYIg5&vzd7c>M#<+vo6k)6vnfuPLHTFwY7lN~|!? z1W^=i6UU)~`C}Cv;~- z)B?t33k2u@tFA$-93UW3Qq)|7YRoZ!b&4}MzjEAHXOXigEb8Jo4s}eEtK)EtE-XMTGklF&LtYv zrp4_rOD}>HBV^Gn2Weh&4uzO*X83{eu@ZOaM$9maG<*d$c)}23M%Y063es#af{-xN zlrcV6<|bi8^pK|NJE+P-dJxga5_R7}b)M3Ph$t&GdwFQ|IuS&KF+vL?qF*fNARG?P z@a-_~#Dd;(2;ZhChy@jx#HSE*)Ww2o%o4(vBfP)}Zka)Rxk6PmsLEA*=;akgcrWRt zMP1y(SlC?@Eg9vbm7outrv)(_w3Q%Dh8P|xQfy-^ZJQJdPi|4cSX_l^JQ!jPV|nix zq-mGfv>x=8i!|*r1?xeZUV@JD#(K~y!+0>wcdI$yxPd2OF7S-9m6$S1Ob|lU7RF^; z1S;zqlqFDU*Pt|kO1OUDB?wfM40_M!GfJQoadNu`<%pvQT$0>>zsYkXX_HYh{~Quz t7;W#VMS}G2Q;ReSqNvUdN=L_j_7hEgB4V`4Y7PJZ002ovPDHLkV1l0GJ3s&c literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/navigationbuttons/drawable-xxhdpi/yt_fill_bell_cairo_black_24.png b/patches/src/main/resources/navigationbuttons/drawable-xxhdpi/yt_fill_bell_cairo_black_24.png deleted file mode 100644 index 98fd7f803a61b7382fd8d5d400e0516d40a68424..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1423 zcmV;A1#tR_P)WK(2w)I(?gwezWTbmZuRZHXU`0OV-*+#8Y|Dt z%plMp&;$i0>>kdbL7)i=OxWG!8FUuhE(b4x1z;oCKMR-L=04llmRfU2EHG3*@EpJiS>6ZUnC5 z#+q$xYmBk3j}3_2Sz92-6EB?`GCE<5vF6AK&kLz7(0$PKQpq_Bj4{?6q^V=I1^S$B zIj-Qc%vf_|1?L3S6zDt%z5+_k9Of#`(HtLx34RZeht_9Y_#hOK8GoH+L3GOTKDe(584f5u^jQpR0uYomjvDSt_ zp8l^vQ-Q9)w{6z=k|M7HYvbZ9S|E?A)F%~V*1<>+n zdiNbUD3f-qS?gI^SX&M(##p349=ZFW^)Waf)HZ8=NKxlWa$&LDA_a1G>n!(9XoV3Z zS5vd5wO=McF1T`w6zFQ`ya2pk!gXR7Q}smjUH>Cn%L!lt8U~Syk4xnUGta zD1rRcDC|#oxc7#|NuvbvlrAO{oWMK#;*?PWJzUHrKEXo~DI)}O-r?6A5qu(Z$VqNR zIU@wR1_lp;zL{rr@z@w4kax}@17fhk9yqxbr7ac6*|RS-U0K9pZg9-HkAu9-XpWO1rY&T>zBOEyIyAISN} zSjhJ*9Z4&9-<9-@v_=$C1bTps&Q5VtZT7*wH0nf(Kwi6|QQ{sqO6o(3KwIeaZZPfU zgN3b4JCP#Lc9Q-N_JV0OpLY1_@Xn?kND;`Ki}~kUTr2ShL0@bV54o3{oZC&90Zym+91#%&bn5L;5fnv--l{elBNk&=lG6-P2xLHkK~9mtAeVJ?GKB=x6dkN5hA~y#B8voAmfKWe zNQ_PNkq>l0o?bQ(!-y*GFo6Wz1h<%P>h;+}KJWokbh8o%bqP+8MifeOoCNBsc}Y%X zK#mtwqs$@o=K)qIPai29RK?lDD5BITyNRQ!k|xI028?r=N_?4z-|N@-`Hc46{SS!I zKnyK0R`|WUi{I<(ana&ZhpRoHT6Mr8?EwyzXiDOss+JK%u@P!@e*tjOH`{4wOf6_PE?&%A8-;?_tgj7Mb#Je0qrPCl2ad$ zr2;kk5CiQ+&0`}29-<`9u#o}3n1_mEh@lRn;-j$v?@_Rk0%EMq1g;e^*c$@23o%-O z9R#R?Z;0V~h!dC_NC;gcAlvam8Q`&%0MzgU390Wap-eG8AR*R9jI!K8LhdGIXk;q% z0Uj$T*%icsE>W@vRt&gD$!=OP;5sGSX~lqTl+5815^`;nWhp&Kh<&AwGF5Sn9&(7` za&&W*`4}^X_-G94^!ggmi*;Ij4QRnSXMGJgi*-`I4nU-^(37GEJi$uK$sk3PVL6sM zP}DK316b_BEEDovz;gS^%<$*g5B6Ke(|;ZYeabTCj1*^Rrl0ZY`f272spyPyBoc{4 ag7+IBQj|8Q%L9)90000Un|y literal 0 HcmV?d00001 diff --git a/patches/src/main/resources/navigationbuttons/drawable-xxxhdpi/yt_fill_bell_cairo_black_24.png b/patches/src/main/resources/navigationbuttons/drawable-xxxhdpi/yt_fill_bell_cairo_black_24.png deleted file mode 100644 index e4732bf2f23fa85a1795ccf4c871a577719e6911..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1287 zcmV+i1^D`jP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;y$tNB~HePQ5Jv000SaNLh0L04^f{04^f|c%?sf00007 zbV*G`2k8kJ5hw}d`$fk900c`(L_t(|+U=dqixfu~ho9-0T}MsWsIYP4__2$IC>s(I zU4sdRC?p}cySVXWj^ZtfcoHP19P%dw&1uicA@~g|f<%(DVKqdA5TfP-5_UZ3xZ})t zsOm)|ti3Z`-St+#54@LUr>5rjtFEekyQ&%#MNt$*Q4~cf8YN-%T@OqE9|PNfLHqZA zfSbT2;0*AGTARM`-vCXZ^PFhf|6Q-LrNbmJmq7SuW6pk7>4DFIb{FEu(Y9qMUGOQ; z>OuTCTDB}@39Rk1+gYqTTC1`qXF5gke35eKx;y*P-yw#$UjG zpugziSAnCBW<5z}MaOI%a-*E%cP|5W0LL*|%}U1KKM$-1ZeX&ht)g{1W5AC z$3x&6u-(?F5JbQTa1MBoqxf+=04@MqJe`)O&MM$*pzeYAanx;{Ruy5;J#1$@ZI29S z+k1pVc5Di^>)8hU1U&Xg{5T%lF=;f*$w`)d-g4j|@J7zFuf=ABZ`wLmLu>tIJJYyD zIuBV~MGN>9cq^+$lGPPZ#XOZ-=lM({0&2iiNMk`f?VR`JyaZr%T$Hr(X@B2K;M(gVW2* zb@^>%6JfHXA}_HJo-8eM?XF8gSO~jPvH=4D7%(8&fK34yuu-xB!vPpDEZKn301OzF zY{1R{3>cGoA5g{Y&y~Ks;~^#~H!tl9*h?5|YnB5aNbG{f35N-374F0A!|DVQ_i&Uq zb9Dtw;^D6J9vA}lNviPWfLebX7o~{*HhyisNHcawFyKO<;&*`WeHVXEz~aYSnRfds zem~~q!cO2ZON#4U(_D1)1#p1y83Y~yKloIs_sHkCfxM!L*+1X~Yk=PiBz_#fVU9Y; zl``hE+D<`ZhMd>EepO)c|hKyFSP7nsNwDf4mFiG8K)c=a7txO&N|XP*tKrU zRF=Rv>Al8kT;=SJBR!hXvSlbeu&>MRsE)ApoIdjkaGK;V^E_=o<2}+2(Wu$}{1ePs xba5i=Z{QcqvdFWTgSZt%Q4~c{6h%?I