mirror of
https://github.com/revanced/revanced-integrations.git
synced 2025-01-08 11:05:49 +01:00
feat(youtube): copy-video-url
patch (#263)
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de> Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
This commit is contained in:
parent
1f74ccf800
commit
e856d9dccd
@ -0,0 +1,27 @@
|
|||||||
|
package app.revanced.integrations.patches;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import app.revanced.integrations.sponsorblock.StringRef;
|
||||||
|
import app.revanced.integrations.utils.LogHelper;
|
||||||
|
import app.revanced.integrations.utils.ReVancedUtils;
|
||||||
|
|
||||||
|
public class CopyVideoUrlPatch {
|
||||||
|
public static void copyUrl(Boolean withTimestamp) {
|
||||||
|
try {
|
||||||
|
String url = String.format("https://youtu.be/%s", VideoInformation.getCurrentVideoId());
|
||||||
|
if (withTimestamp) {
|
||||||
|
long seconds = VideoInformation.getVideoTime() / 1000;
|
||||||
|
url += String.format("?t=%s", seconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
Context context = ReVancedUtils.getContext();
|
||||||
|
|
||||||
|
ReVancedUtils.setClipboard(url);
|
||||||
|
if (context != null) Toast.makeText(context, StringRef.str("share_copy_url_success"), Toast.LENGTH_SHORT).show();
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogHelper.printException(() -> "Failed to generate video url", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -17,6 +17,7 @@ public final class VideoInformation {
|
|||||||
private static WeakReference<Object> playerController;
|
private static WeakReference<Object> playerController;
|
||||||
private static Method seekMethod;
|
private static Method seekMethod;
|
||||||
|
|
||||||
|
private static String videoId = "";
|
||||||
private static long videoLength = 1;
|
private static long videoLength = 1;
|
||||||
private static long videoTime = -1;
|
private static long videoTime = -1;
|
||||||
|
|
||||||
@ -39,6 +40,17 @@ public final class VideoInformation {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the video id.
|
||||||
|
*
|
||||||
|
* @param videoId The id of the video.
|
||||||
|
*/
|
||||||
|
public static void setVideoId(String videoId) {
|
||||||
|
LogHelper.printDebug(() -> "Setting current video id to: " + videoId);
|
||||||
|
|
||||||
|
VideoInformation.videoId = videoId;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the video length.
|
* Set the video length.
|
||||||
*
|
*
|
||||||
@ -80,6 +92,15 @@ public final class VideoInformation {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the id of the current video playing.
|
||||||
|
*
|
||||||
|
* @return The id of the video. Empty string if not set yet.
|
||||||
|
*/
|
||||||
|
public static String getCurrentVideoId() {
|
||||||
|
return videoId;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the length of the current video playing.
|
* Get the length of the current video playing.
|
||||||
*
|
*
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
package app.revanced.integrations.patches.downloads;
|
|
||||||
|
|
||||||
import app.revanced.integrations.utils.LogHelper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Used by app.revanced.patches.youtube.interaction.downloads.bytecode.patch.DownloadsBytecodePatch
|
|
||||||
*/
|
|
||||||
public class DownloadsPatch {
|
|
||||||
private static String videoId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when the video changes
|
|
||||||
* @param videoId The current video id
|
|
||||||
*/
|
|
||||||
public static void setVideoId(String videoId) {
|
|
||||||
LogHelper.printDebug(() -> "newVideoLoaded - " + videoId);
|
|
||||||
|
|
||||||
DownloadsPatch.videoId = videoId;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return The current video id
|
|
||||||
*/
|
|
||||||
public static String getCurrentVideoId() {
|
|
||||||
return videoId;
|
|
||||||
}
|
|
||||||
}
|
|
@ -16,6 +16,10 @@ public enum SettingsEnum {
|
|||||||
DOWNLOADS_BUTTON_SHOWN("revanced_downloads", true, ReturnType.BOOLEAN, true),
|
DOWNLOADS_BUTTON_SHOWN("revanced_downloads", true, ReturnType.BOOLEAN, true),
|
||||||
DOWNLOADS_PACKAGE_NAME("revanced_downloads_package_name", "org.schabi.newpipe" /* NewPipe */, ReturnType.STRING),
|
DOWNLOADS_PACKAGE_NAME("revanced_downloads_package_name", "org.schabi.newpipe" /* NewPipe */, ReturnType.STRING),
|
||||||
|
|
||||||
|
// Copy video URL settings
|
||||||
|
COPY_VIDEO_URL_BUTTON_SHOWN("revanced_copy_video_url", true, ReturnType.BOOLEAN, true),
|
||||||
|
COPY_VIDEO_URL_TIMESTAMP_BUTTON_SHOWN("revanced_copy_video_url_timestamp", true, ReturnType.BOOLEAN, true),
|
||||||
|
|
||||||
// Video settings
|
// Video settings
|
||||||
OLD_STYLE_VIDEO_QUALITY_PLAYER_SETTINGS("revanced_use_old_style_quality_settings", true, ReturnType.BOOLEAN),
|
OLD_STYLE_VIDEO_QUALITY_PLAYER_SETTINGS("revanced_use_old_style_quality_settings", true, ReturnType.BOOLEAN),
|
||||||
PREFERRED_VIDEO_SPEED("revanced_pref_video_speed", -2.0f, ReturnType.FLOAT),
|
PREFERRED_VIDEO_SPEED("revanced_pref_video_speed", -2.0f, ReturnType.FLOAT),
|
||||||
|
@ -26,7 +26,6 @@ import app.revanced.integrations.settings.SettingsEnum;
|
|||||||
import app.revanced.integrations.utils.LogHelper;
|
import app.revanced.integrations.utils.LogHelper;
|
||||||
import app.revanced.integrations.utils.ReVancedUtils;
|
import app.revanced.integrations.utils.ReVancedUtils;
|
||||||
import app.revanced.integrations.utils.SharedPrefHelper;
|
import app.revanced.integrations.utils.SharedPrefHelper;
|
||||||
import app.revanced.integrations.videoplayer.DownloadButton;
|
|
||||||
|
|
||||||
public class ReVancedSettingsFragment extends PreferenceFragment {
|
public class ReVancedSettingsFragment extends PreferenceFragment {
|
||||||
|
|
||||||
@ -85,10 +84,6 @@ public class ReVancedSettingsFragment extends PreferenceFragment {
|
|||||||
} else {
|
} else {
|
||||||
LogHelper.printException(() -> ("No valid setting found: " + setting.toString()));
|
LogHelper.printException(() -> ("No valid setting found: " + setting.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("pref_download_button_list".equals(str)) {
|
|
||||||
DownloadButton.refreshShouldBeShown();
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
LogHelper.printException(() -> ("Setting cannot be handled! " + pref.toString()));
|
LogHelper.printException(() -> ("Setting cannot be handled! " + pref.toString()));
|
||||||
}
|
}
|
||||||
|
@ -123,6 +123,12 @@ public class ReVancedUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setClipboard(String text) {
|
||||||
|
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||||
|
android.content.ClipData clip = android.content.ClipData.newPlainText("ReVanced", text);
|
||||||
|
clipboard.setPrimaryClip(clip);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isTablet(Context context) {
|
public static boolean isTablet(Context context) {
|
||||||
return context.getResources().getConfiguration().smallestScreenWidthDp >= 600;
|
return context.getResources().getConfiguration().smallestScreenWidthDp >= 600;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,86 @@
|
|||||||
|
package app.revanced.integrations.videoplayer;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.support.constraint.ConstraintLayout;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.animation.Animation;
|
||||||
|
import android.view.animation.AnimationUtils;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
|
|
||||||
|
import app.revanced.integrations.utils.LogHelper;
|
||||||
|
import app.revanced.integrations.utils.ReVancedUtils;
|
||||||
|
|
||||||
|
public abstract class BottomControlButton {
|
||||||
|
WeakReference<ImageView> button = new WeakReference<>(null);
|
||||||
|
ConstraintLayout constraintLayout;
|
||||||
|
Boolean isButtonEnabled;
|
||||||
|
Boolean isShowing;
|
||||||
|
|
||||||
|
private Animation fadeIn;
|
||||||
|
private Animation fadeOut;
|
||||||
|
|
||||||
|
public BottomControlButton(Object obj, String viewId, Boolean isEnabled, View.OnClickListener onClickListener) {
|
||||||
|
try {
|
||||||
|
LogHelper.printDebug(() -> "Initializing button with id: " + viewId);
|
||||||
|
constraintLayout = (ConstraintLayout) obj;
|
||||||
|
isButtonEnabled = isEnabled;
|
||||||
|
|
||||||
|
ImageView imageView = constraintLayout.findViewById(getIdentifier(viewId, "id"));
|
||||||
|
if (imageView == null) {
|
||||||
|
LogHelper.printDebug(() -> "Couldn't find ImageView with id: " + viewId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
imageView.setOnClickListener(onClickListener);
|
||||||
|
|
||||||
|
button = new WeakReference<>(imageView);
|
||||||
|
fadeIn = getAnimation("fade_in");
|
||||||
|
fadeOut = getAnimation("fade_out");
|
||||||
|
|
||||||
|
int fadeDurationFast = getInteger("fade_duration_fast");
|
||||||
|
int fadeDurationScheduled = getInteger("fade_duration_scheduled");
|
||||||
|
fadeIn.setDuration(fadeDurationFast);
|
||||||
|
fadeOut.setDuration(fadeDurationScheduled);
|
||||||
|
isShowing = true;
|
||||||
|
setVisibility(false);
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogHelper.printException(() -> "Failed to initialize button with id: " + viewId, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVisibility(boolean showing) {
|
||||||
|
if (isShowing == showing) return;
|
||||||
|
|
||||||
|
isShowing = showing;
|
||||||
|
ImageView imageView = button.get();
|
||||||
|
|
||||||
|
if (constraintLayout == null || imageView == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (showing && isButtonEnabled) {
|
||||||
|
LogHelper.printDebug(() -> "Fading in");
|
||||||
|
imageView.setVisibility(View.VISIBLE);
|
||||||
|
imageView.startAnimation(fadeIn);
|
||||||
|
}
|
||||||
|
else if (imageView.getVisibility() == View.VISIBLE) {
|
||||||
|
LogHelper.printDebug(() -> "Fading out");
|
||||||
|
imageView.startAnimation(fadeOut);
|
||||||
|
imageView.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getIdentifier(String str, String str2) {
|
||||||
|
Context appContext = ReVancedUtils.getContext();
|
||||||
|
return appContext.getResources().getIdentifier(str, str2, appContext.getPackageName());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getInteger(String str) {
|
||||||
|
return ReVancedUtils.getContext().getResources().getInteger(getIdentifier(str, "integer"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Animation getAnimation(String str) {
|
||||||
|
return AnimationUtils.loadAnimation(ReVancedUtils.getContext(), getIdentifier(str, "anim"));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package app.revanced.integrations.videoplayer;
|
||||||
|
|
||||||
|
|
||||||
|
import app.revanced.integrations.patches.CopyVideoUrlPatch;
|
||||||
|
import app.revanced.integrations.settings.SettingsEnum;
|
||||||
|
|
||||||
|
public class CopyVideoUrlButton extends BottomControlButton {
|
||||||
|
public static CopyVideoUrlButton instance;
|
||||||
|
|
||||||
|
public CopyVideoUrlButton(Object obj) {
|
||||||
|
super(
|
||||||
|
obj,
|
||||||
|
"copy_video_url_button",
|
||||||
|
SettingsEnum.COPY_VIDEO_URL_BUTTON_SHOWN.getBoolean(),
|
||||||
|
view -> CopyVideoUrlPatch.copyUrl(false)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void initializeButton(Object obj) {
|
||||||
|
instance = new CopyVideoUrlButton(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void changeVisibility(boolean showing) {
|
||||||
|
if (instance != null) instance.setVisibility(showing);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package app.revanced.integrations.videoplayer;
|
||||||
|
|
||||||
|
import app.revanced.integrations.patches.CopyVideoUrlPatch;
|
||||||
|
import app.revanced.integrations.settings.SettingsEnum;
|
||||||
|
|
||||||
|
public class CopyVideoUrlTimestampButton extends BottomControlButton {
|
||||||
|
public static CopyVideoUrlTimestampButton instance;
|
||||||
|
|
||||||
|
public CopyVideoUrlTimestampButton(Object obj) {
|
||||||
|
super(
|
||||||
|
obj,
|
||||||
|
"copy_video_url_timestamp_button",
|
||||||
|
SettingsEnum.COPY_VIDEO_URL_TIMESTAMP_BUTTON_SHOWN.getBoolean(),
|
||||||
|
view -> CopyVideoUrlPatch.copyUrl(true)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void initializeButton(Object obj) {
|
||||||
|
instance = new CopyVideoUrlTimestampButton(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void changeVisibility(boolean showing) {
|
||||||
|
if (instance != null) instance.setVisibility(showing);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,161 +1,69 @@
|
|||||||
package app.revanced.integrations.videoplayer;
|
package app.revanced.integrations.videoplayer;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.support.constraint.ConstraintLayout;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.animation.Animation;
|
|
||||||
import android.view.animation.AnimationUtils;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import app.revanced.integrations.patches.VideoInformation;
|
||||||
import java.lang.ref.WeakReference;
|
|
||||||
|
|
||||||
import app.revanced.integrations.patches.downloads.DownloadsPatch;
|
|
||||||
import app.revanced.integrations.settings.SettingsEnum;
|
import app.revanced.integrations.settings.SettingsEnum;
|
||||||
import app.revanced.integrations.sponsorblock.StringRef;
|
import app.revanced.integrations.sponsorblock.StringRef;
|
||||||
import app.revanced.integrations.utils.LogHelper;
|
import app.revanced.integrations.utils.LogHelper;
|
||||||
import app.revanced.integrations.utils.ReVancedUtils;
|
|
||||||
import app.revanced.integrations.utils.SharedPrefHelper;
|
|
||||||
|
|
||||||
/* loaded from: classes6.dex */
|
public class DownloadButton extends BottomControlButton {
|
||||||
//ToDo: Refactor
|
public static DownloadButton instance;
|
||||||
public class DownloadButton {
|
|
||||||
static WeakReference<ImageView> _button = new WeakReference<>(null);
|
|
||||||
static ConstraintLayout _constraintLayout;
|
|
||||||
static int fadeDurationFast;
|
|
||||||
static int fadeDurationScheduled;
|
|
||||||
static Animation fadeIn;
|
|
||||||
static Animation fadeOut;
|
|
||||||
public static boolean isDownloadButtonEnabled;
|
|
||||||
static boolean isShowing;
|
|
||||||
|
|
||||||
public static void initializeDownloadButton(Object obj) {
|
public DownloadButton(Object obj) {
|
||||||
|
super(
|
||||||
|
obj,
|
||||||
|
"download_button",
|
||||||
|
SettingsEnum.DOWNLOADS_BUTTON_SHOWN.getBoolean(),
|
||||||
|
DownloadButton::onDownloadClick
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void initializeButton(Object obj) {
|
||||||
|
instance = new DownloadButton(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void changeVisibility(boolean showing) {
|
||||||
|
if (instance != null) instance.setVisibility(showing);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void onDownloadClick(View view) {
|
||||||
|
LogHelper.printDebug(() -> "Download button clicked");
|
||||||
|
|
||||||
|
final var context = view.getContext();
|
||||||
|
var downloaderPackageName = SettingsEnum.DOWNLOADS_PACKAGE_NAME.getString();
|
||||||
|
|
||||||
|
boolean packageEnabled = false;
|
||||||
try {
|
try {
|
||||||
LogHelper.printDebug(() -> "initializing");
|
assert context != null;
|
||||||
_constraintLayout = (ConstraintLayout) obj;
|
packageEnabled = context.getPackageManager().getApplicationInfo(downloaderPackageName, 0).enabled;
|
||||||
isDownloadButtonEnabled = shouldBeShown();
|
} catch (PackageManager.NameNotFoundException error) {
|
||||||
ImageView imageView = _constraintLayout.findViewById(getIdentifier("download_button", "id"));
|
LogHelper.printDebug(() -> "Downloader could not be found: " + error);
|
||||||
if (imageView == null) {
|
|
||||||
LogHelper.printDebug(() -> "Couldn't find imageView with id \"download_button\"");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
imageView.setOnClickListener(view -> {
|
|
||||||
LogHelper.printDebug(() -> "Download button clicked");
|
|
||||||
|
|
||||||
final var context = view.getContext();
|
|
||||||
var downloaderPackageName = SettingsEnum.DOWNLOADS_PACKAGE_NAME.getString();
|
|
||||||
|
|
||||||
boolean packageEnabled = false;
|
|
||||||
try {
|
|
||||||
assert context != null;
|
|
||||||
packageEnabled = context.getPackageManager().getApplicationInfo(downloaderPackageName, 0).enabled;
|
|
||||||
} catch (PackageManager.NameNotFoundException error) {
|
|
||||||
LogHelper.printDebug(() -> "Downloader could not be found: " + error);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the package is not installed, show the toast
|
|
||||||
if (!packageEnabled) {
|
|
||||||
Toast.makeText(context, downloaderPackageName + " " + StringRef.str("downloader_not_installed_warning"), Toast.LENGTH_LONG).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Launch PowerTube intent
|
|
||||||
try {
|
|
||||||
String content = String.format("https://youtu.be/%s", DownloadsPatch.getCurrentVideoId());
|
|
||||||
|
|
||||||
Intent intent = new Intent("android.intent.action.SEND");
|
|
||||||
intent.setType("text/plain");
|
|
||||||
intent.setPackage(downloaderPackageName);
|
|
||||||
intent.putExtra("android.intent.extra.TEXT", content);
|
|
||||||
context.startActivity(intent);
|
|
||||||
|
|
||||||
LogHelper.printDebug(() -> "Launched the intent with the content: " + content);
|
|
||||||
} catch (Exception error) {
|
|
||||||
LogHelper.printDebug(() -> "Failed to launch the intent: " + error);
|
|
||||||
}
|
|
||||||
|
|
||||||
//var options = Arrays.asList("Video", "Audio").toArray(new CharSequence[0]);
|
|
||||||
//
|
|
||||||
//new AlertDialog.Builder(view.getContext())
|
|
||||||
// .setItems(options, (dialog, which) -> {
|
|
||||||
// LogHelper.debug(DownloadButton.class, String.valueOf(options[which]));
|
|
||||||
// })
|
|
||||||
// .show();
|
|
||||||
// TODO: show popup and download via newpipe
|
|
||||||
});
|
|
||||||
_button = new WeakReference<>(imageView);
|
|
||||||
fadeDurationFast = getInteger("fade_duration_fast");
|
|
||||||
fadeDurationScheduled = getInteger("fade_duration_scheduled");
|
|
||||||
Animation animation = getAnimation("fade_in");
|
|
||||||
fadeIn = animation;
|
|
||||||
animation.setDuration(fadeDurationFast);
|
|
||||||
Animation animation2 = getAnimation("fade_out");
|
|
||||||
fadeOut = animation2;
|
|
||||||
animation2.setDuration(fadeDurationScheduled);
|
|
||||||
isShowing = true;
|
|
||||||
changeVisibility(false);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
LogHelper.printException(() -> ("Unable to set FrameLayout"), e);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void changeVisibility(boolean z) {
|
// If the package is not installed, show the toast
|
||||||
if (isShowing == z) return;
|
if (!packageEnabled) {
|
||||||
|
Toast.makeText(context, downloaderPackageName + " " + StringRef.str("downloader_not_installed_warning"), Toast.LENGTH_LONG).show();
|
||||||
isShowing = z;
|
|
||||||
ImageView imageView = _button.get();
|
|
||||||
|
|
||||||
if (_constraintLayout == null || imageView == null)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (z && isDownloadButtonEnabled) {
|
|
||||||
LogHelper.printDebug(() -> "Fading in");
|
|
||||||
imageView.setVisibility(View.VISIBLE);
|
|
||||||
imageView.startAnimation(fadeIn);
|
|
||||||
}
|
|
||||||
else if (imageView.getVisibility() == View.VISIBLE) {
|
|
||||||
LogHelper.printDebug(() -> "Fading out");
|
|
||||||
imageView.startAnimation(fadeOut);
|
|
||||||
imageView.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void refreshShouldBeShown() {
|
|
||||||
isDownloadButtonEnabled = shouldBeShown();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean shouldBeShown() {
|
|
||||||
if (!SettingsEnum.DOWNLOADS_BUTTON_SHOWN.getBoolean()) {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Context appContext = ReVancedUtils.getContext();
|
// Launch PowerTube intent
|
||||||
if (appContext == null) {
|
try {
|
||||||
LogHelper.printException(() -> ("shouldBeShown - context is null!"));
|
String content = String.format("https://youtu.be/%s", VideoInformation.getCurrentVideoId());
|
||||||
return false;
|
|
||||||
}
|
|
||||||
String string = SharedPrefHelper.getString(appContext, SharedPrefHelper.SharedPrefNames.YOUTUBE, "pref_download_button_list", "PLAYER" /* TODO: set the default to null, as this will be set by the settings page later */);
|
|
||||||
if (string == null || string.isEmpty()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return string.equalsIgnoreCase("PLAYER");
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int getIdentifier(String str, String str2) {
|
Intent intent = new Intent("android.intent.action.SEND");
|
||||||
Context appContext = ReVancedUtils.getContext();
|
intent.setType("text/plain");
|
||||||
return appContext.getResources().getIdentifier(str, str2, appContext.getPackageName());
|
intent.setPackage(downloaderPackageName);
|
||||||
}
|
intent.putExtra("android.intent.extra.TEXT", content);
|
||||||
|
context.startActivity(intent);
|
||||||
|
|
||||||
private static int getInteger(String str) {
|
LogHelper.printDebug(() -> "Launched the intent with the content: " + content);
|
||||||
return ReVancedUtils.getContext().getResources().getInteger(getIdentifier(str, "integer"));
|
} catch (Exception error) {
|
||||||
}
|
LogHelper.printDebug(() -> "Failed to launch the intent: " + error);
|
||||||
private static Animation getAnimation(String str) {
|
}
|
||||||
return AnimationUtils.loadAnimation(ReVancedUtils.getContext(), getIdentifier(str, "anim"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user