mirror of
https://github.com/antebudimir/tempus.git
synced 2026-04-15 16:27:26 +00:00
fix: added a timeout for the callbacks to dismiss dialog and notify the user
This commit is contained in:
parent
993374e56c
commit
6110a9c8e7
4 changed files with 60 additions and 2 deletions
|
|
@ -11,7 +11,7 @@ android {
|
||||||
targetSdk 35
|
targetSdk 35
|
||||||
|
|
||||||
versionCode 11
|
versionCode 11
|
||||||
versionName '4.6.2.BETA'
|
versionName '4.6.2'
|
||||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||||
|
|
||||||
javaCompileOptions {
|
javaCompileOptions {
|
||||||
|
|
|
||||||
|
|
@ -125,10 +125,29 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
|
||||||
playbackStarted = false;
|
playbackStarted = false;
|
||||||
dismissalScheduled = false;
|
dismissalScheduled = false;
|
||||||
Toast.makeText(requireContext(), R.string.bottom_sheet_generating_instant_mix, Toast.LENGTH_SHORT).show();
|
Toast.makeText(requireContext(), R.string.bottom_sheet_generating_instant_mix, Toast.LENGTH_SHORT).show();
|
||||||
|
final Runnable failsafeTimeout = () -> {
|
||||||
|
if (!playbackStarted && !dismissalScheduled) {
|
||||||
|
Log.w(TAG, "No response received within 3 seconds");
|
||||||
|
if (isAdded() && getActivity() != null) {
|
||||||
|
Toast.makeText(getContext(),
|
||||||
|
R.string.bottom_sheet_problem_generating_instant_mix,
|
||||||
|
Toast.LENGTH_SHORT).show();
|
||||||
|
dismissBottomSheet();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
view.postDelayed(failsafeTimeout, 3000);
|
||||||
|
|
||||||
new AlbumRepository().getInstantMix(album, 20, new MediaCallback() {
|
new AlbumRepository().getInstantMix(album, 20, new MediaCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onError(Exception exception) {
|
public void onError(Exception exception) {
|
||||||
|
view.removeCallbacks(failsafeTimeout);
|
||||||
Log.e(TAG, "Error: " + exception.getMessage());
|
Log.e(TAG, "Error: " + exception.getMessage());
|
||||||
|
if (isAdded() && getActivity() != null) {
|
||||||
|
String message = isOffline(exception) ?
|
||||||
|
"You're offline" : "Network error";
|
||||||
|
Toast.makeText(getContext(), message, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
if (!playbackStarted && !dismissalScheduled) {
|
if (!playbackStarted && !dismissalScheduled) {
|
||||||
scheduleDelayedDismissal(v);
|
scheduleDelayedDismissal(v);
|
||||||
}
|
}
|
||||||
|
|
@ -136,6 +155,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadMedia(List<?> media) {
|
public void onLoadMedia(List<?> media) {
|
||||||
|
view.removeCallbacks(failsafeTimeout);
|
||||||
if (!isAdded() || getActivity() == null) {
|
if (!isAdded() || getActivity() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -154,6 +174,9 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
|
||||||
scheduleDelayedDismissal(v);
|
scheduleDelayedDismissal(v);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Toast.makeText(getContext(),
|
||||||
|
R.string.bottom_sheet_problem_generating_instant_mix,
|
||||||
|
Toast.LENGTH_SHORT).show();
|
||||||
if (!playbackStarted && !dismissalScheduled) {
|
if (!playbackStarted && !dismissalScheduled) {
|
||||||
scheduleDelayedDismissal(v);
|
scheduleDelayedDismissal(v);
|
||||||
}
|
}
|
||||||
|
|
@ -331,4 +354,11 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
|
||||||
view.postDelayed(() -> dismissBottomSheet(), 200);
|
view.postDelayed(() -> dismissBottomSheet(), 200);
|
||||||
}, 300);
|
}, 300);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isOffline(Exception exception) {
|
||||||
|
return exception != null && exception.getMessage() != null &&
|
||||||
|
(exception.getMessage().contains("Network") ||
|
||||||
|
exception.getMessage().contains("timeout") ||
|
||||||
|
exception.getMessage().contains("offline"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -99,12 +99,29 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
|
||||||
Toast.makeText(requireContext(), R.string.bottom_sheet_generating_instant_mix, Toast.LENGTH_SHORT).show();
|
Toast.makeText(requireContext(), R.string.bottom_sheet_generating_instant_mix, Toast.LENGTH_SHORT).show();
|
||||||
playbackStarted = false;
|
playbackStarted = false;
|
||||||
dismissalScheduled = false;
|
dismissalScheduled = false;
|
||||||
|
final Runnable failsafeTimeout = () -> {
|
||||||
|
if (!playbackStarted && !dismissalScheduled) {
|
||||||
|
Log.w(TAG, "No response received within 3 seconds");
|
||||||
|
if (isAdded() && getActivity() != null) {
|
||||||
|
Toast.makeText(getContext(),
|
||||||
|
R.string.bottom_sheet_problem_generating_instant_mix,
|
||||||
|
Toast.LENGTH_SHORT).show();
|
||||||
|
dismissBottomSheet();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
view.postDelayed(failsafeTimeout, 3000);
|
||||||
|
|
||||||
new ArtistRepository().getInstantMix(artist, 20, new MediaCallback() {
|
new ArtistRepository().getInstantMix(artist, 20, new MediaCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onError(Exception exception) {
|
public void onError(Exception exception) {
|
||||||
|
view.removeCallbacks(failsafeTimeout);
|
||||||
Log.e(TAG, "Error: " + exception.getMessage());
|
Log.e(TAG, "Error: " + exception.getMessage());
|
||||||
|
if (isAdded() && getActivity() != null) {
|
||||||
|
String message = isOffline(exception) ?
|
||||||
|
"You're offline" : "Network error";
|
||||||
|
Toast.makeText(getContext(), message, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
if (!playbackStarted && !dismissalScheduled) {
|
if (!playbackStarted && !dismissalScheduled) {
|
||||||
scheduleDelayedDismissal(v);
|
scheduleDelayedDismissal(v);
|
||||||
}
|
}
|
||||||
|
|
@ -112,6 +129,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadMedia(List<?> media) {
|
public void onLoadMedia(List<?> media) {
|
||||||
|
view.removeCallbacks(failsafeTimeout);
|
||||||
if (!isAdded() || getActivity() == null) {
|
if (!isAdded() || getActivity() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -132,6 +150,9 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
|
||||||
scheduleDelayedDismissal(v);
|
scheduleDelayedDismissal(v);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Toast.makeText(getContext(),
|
||||||
|
R.string.bottom_sheet_problem_generating_instant_mix,
|
||||||
|
Toast.LENGTH_SHORT).show();
|
||||||
if (!playbackStarted && !dismissalScheduled) {
|
if (!playbackStarted && !dismissalScheduled) {
|
||||||
scheduleDelayedDismissal(v);
|
scheduleDelayedDismissal(v);
|
||||||
}
|
}
|
||||||
|
|
@ -191,4 +212,10 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
|
||||||
}, 300);
|
}, 300);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isOffline(Exception exception) {
|
||||||
|
return exception != null && exception.getMessage() != null &&
|
||||||
|
(exception.getMessage().contains("Network") ||
|
||||||
|
exception.getMessage().contains("timeout") ||
|
||||||
|
exception.getMessage().contains("offline"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@
|
||||||
<string name="battery_optimization_neutral_button">Don\'t ask again</string>
|
<string name="battery_optimization_neutral_button">Don\'t ask again</string>
|
||||||
<string name="battery_optimization_positive_button">Disable</string>
|
<string name="battery_optimization_positive_button">Disable</string>
|
||||||
<string name="bottom_sheet_generating_instant_mix">Generating instant mix...</string>
|
<string name="bottom_sheet_generating_instant_mix">Generating instant mix...</string>
|
||||||
|
<string name="bottom_sheet_problem_generating_instant_mix">Could not retrieve tracks from subsonic server.</string>
|
||||||
<string name="connection_alert_dialog_negative_button">Cancel</string>
|
<string name="connection_alert_dialog_negative_button">Cancel</string>
|
||||||
<string name="connection_alert_dialog_neutral_button">Enable data saver</string>
|
<string name="connection_alert_dialog_neutral_button">Enable data saver</string>
|
||||||
<string name="connection_alert_dialog_positive_button">OK</string>
|
<string name="connection_alert_dialog_positive_button">OK</string>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue