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