fix(YouTube - Hook download actions, Overlay buttons): Sometimes the AlertDialog does not show

This commit is contained in:
inotia00 2025-03-26 15:02:02 +09:00
parent df41f035b6
commit cf90f7b94e
3 changed files with 43 additions and 0 deletions

View File

@ -8,6 +8,8 @@ import android.widget.ScrollView;
import androidx.annotation.GuardedBy;
import androidx.annotation.NonNull;
import com.google.android.libraries.youtube.rendering.ui.pivotbar.PivotBar;
import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.bidimap.DualHashBidiMap;
import org.apache.commons.lang3.BooleanUtils;
@ -125,6 +127,15 @@ public class PlaylistPatch extends VideoUtils {
}
}
/**
* Injection point.
*/
public static void setPivotBar(PivotBar view) {
if (QUEUE_MANAGER) {
mContext = view.getContext();
}
}
/**
* Injection point.
*/

View File

@ -52,3 +52,20 @@ internal fun indexOfSetVideoIdInstruction(method: Method) =
opcode == Opcode.IPUT_OBJECT &&
getReference<FieldReference>()?.type == "Ljava/lang/String;"
}
internal val setPivotBarVisibilityFingerprint = legacyFingerprint(
name = "setPivotBarVisibilityFingerprint",
accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL,
returnType = "V",
parameters = listOf("Z"),
opcodes = listOf(
Opcode.CHECK_CAST,
Opcode.IF_EQZ,
),
)
internal val setPivotBarVisibilityParentFingerprint = legacyFingerprint(
name = "setPivotBarVisibilityFingerprint",
parameters = listOf("Z"),
strings = listOf("FEnotifications_inbox"),
)

View File

@ -1,5 +1,6 @@
package app.revanced.patches.youtube.utils.playlist
import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
@ -81,5 +82,19 @@ val playlistPatch = bytecodePatch(
)
}
}
setPivotBarVisibilityFingerprint
.matchOrThrow(setPivotBarVisibilityParentFingerprint)
.let {
it.method.apply {
val viewIndex = it.patternMatch!!.startIndex
val viewRegister = getInstruction<OneRegisterInstruction>(viewIndex).registerA
addInstruction(
viewIndex + 1,
"invoke-static {v$viewRegister}," +
" $EXTENSION_CLASS_DESCRIPTOR->setPivotBar(Lcom/google/android/libraries/youtube/rendering/ui/pivotbar/PivotBar;)V",
)
}
}
}
}