Remember choice again in mobile download anyway prompt (#7436)
This commit is contained in:
parent
141cbe946c
commit
361c754eb9
|
@ -2,6 +2,7 @@ package de.danoeh.antennapod.actionbutton;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.DrawableRes;
|
import androidx.annotation.DrawableRes;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
@ -16,6 +17,12 @@ import de.danoeh.antennapod.storage.preferences.UsageStatistics;
|
||||||
import de.danoeh.antennapod.net.common.NetworkUtils;
|
import de.danoeh.antennapod.net.common.NetworkUtils;
|
||||||
|
|
||||||
public class DownloadActionButton extends ItemActionButton {
|
public class DownloadActionButton extends ItemActionButton {
|
||||||
|
private static final int TIMEOUT_NETWORK_WARN_SECONDS = 300;
|
||||||
|
private static final int BYPASS_TYPE_NOW = 1;
|
||||||
|
private static final int BYPASS_TYPE_LATER = 2;
|
||||||
|
|
||||||
|
private static int bypassCellularNetworkType = 0;
|
||||||
|
private static long bypassCellularNetworkWarningTimer = 0;
|
||||||
|
|
||||||
public DownloadActionButton(FeedItem item) {
|
public DownloadActionButton(FeedItem item) {
|
||||||
super(item);
|
super(item);
|
||||||
|
@ -47,15 +54,29 @@ public class DownloadActionButton extends ItemActionButton {
|
||||||
|
|
||||||
UsageStatistics.logAction(UsageStatistics.ACTION_DOWNLOAD);
|
UsageStatistics.logAction(UsageStatistics.ACTION_DOWNLOAD);
|
||||||
|
|
||||||
if (NetworkUtils.isEpisodeDownloadAllowed()) {
|
long timeSinceBypass = System.currentTimeMillis() / 1000 - bypassCellularNetworkWarningTimer;
|
||||||
DownloadServiceInterface.get().downloadNow(context, item, false);
|
boolean shouldBypass = timeSinceBypass < TIMEOUT_NETWORK_WARN_SECONDS;
|
||||||
|
if (shouldBypass && bypassCellularNetworkType == BYPASS_TYPE_NOW) {
|
||||||
|
Toast.makeText(context, context.getString(
|
||||||
|
R.string.mobile_download_notice, TIMEOUT_NETWORK_WARN_SECONDS / 60), Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
if (NetworkUtils.isEpisodeDownloadAllowed() || shouldBypass) {
|
||||||
|
DownloadServiceInterface.get().downloadNow(context, item, bypassCellularNetworkType == BYPASS_TYPE_NOW);
|
||||||
} else {
|
} else {
|
||||||
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context)
|
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context)
|
||||||
.setTitle(R.string.confirm_mobile_download_dialog_title)
|
.setTitle(R.string.confirm_mobile_download_dialog_title)
|
||||||
.setPositiveButton(R.string.confirm_mobile_download_dialog_download_later,
|
.setPositiveButton(R.string.confirm_mobile_download_dialog_download_later,
|
||||||
(d, w) -> DownloadServiceInterface.get().downloadNow(context, item, false))
|
(d, w) -> {
|
||||||
|
bypassCellularNetworkType = BYPASS_TYPE_LATER;
|
||||||
|
bypassCellularNetworkWarningTimer = System.currentTimeMillis() / 1000;
|
||||||
|
DownloadServiceInterface.get().downloadNow(context, item, false);
|
||||||
|
})
|
||||||
.setNeutralButton(R.string.confirm_mobile_download_dialog_allow_this_time,
|
.setNeutralButton(R.string.confirm_mobile_download_dialog_allow_this_time,
|
||||||
(d, w) -> DownloadServiceInterface.get().downloadNow(context, item, true))
|
(d, w) -> {
|
||||||
|
bypassCellularNetworkType = BYPASS_TYPE_NOW;
|
||||||
|
bypassCellularNetworkWarningTimer = System.currentTimeMillis() / 1000;
|
||||||
|
DownloadServiceInterface.get().downloadNow(context, item, true);
|
||||||
|
})
|
||||||
.setNegativeButton(R.string.cancel_label, null);
|
.setNegativeButton(R.string.cancel_label, null);
|
||||||
if (NetworkUtils.isNetworkRestricted() && NetworkUtils.isVpnOverWifi()) {
|
if (NetworkUtils.isNetworkRestricted() && NetworkUtils.isVpnOverWifi()) {
|
||||||
builder.setMessage(R.string.confirm_mobile_download_dialog_message_vpn);
|
builder.setMessage(R.string.confirm_mobile_download_dialog_message_vpn);
|
||||||
|
|
|
@ -325,6 +325,7 @@
|
||||||
<string name="confirm_mobile_download_dialog_message_vpn">Your VPN app pretends to be a mobile network (metered connection). Downloading over mobile data connection is disabled in the settings. If you want this problem to be fixed, contact the creators of your VPN app.</string>
|
<string name="confirm_mobile_download_dialog_message_vpn">Your VPN app pretends to be a mobile network (metered connection). Downloading over mobile data connection is disabled in the settings. If you want this problem to be fixed, contact the creators of your VPN app.</string>
|
||||||
<string name="confirm_mobile_download_dialog_download_later">Download later</string>
|
<string name="confirm_mobile_download_dialog_download_later">Download later</string>
|
||||||
<string name="confirm_mobile_download_dialog_allow_this_time">Download anyway</string>
|
<string name="confirm_mobile_download_dialog_allow_this_time">Download anyway</string>
|
||||||
|
<string name="mobile_download_notice">Downloading over mobile data connection for the next %d minutes</string>
|
||||||
<string name="confirm_mobile_streaming_notification_title">Confirm mobile streaming</string>
|
<string name="confirm_mobile_streaming_notification_title">Confirm mobile streaming</string>
|
||||||
<string name="confirm_mobile_streaming_notification_message">Streaming over mobile data connection is disabled in the settings. Tap to stream anyway.</string>
|
<string name="confirm_mobile_streaming_notification_message">Streaming over mobile data connection is disabled in the settings. Tap to stream anyway.</string>
|
||||||
<string name="confirm_mobile_streaming_button_always">Always</string>
|
<string name="confirm_mobile_streaming_button_always">Always</string>
|
||||||
|
|
Loading…
Reference in New Issue