diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 23114bb..2ceb6cc 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,7 +14,7 @@ android { applicationId = "com.live.dynamicwallpaper" minSdk = 23 targetSdk = 34 - versionCode = 2 + versionCode = 3 versionName = "1.0.0" setProperty( "archivesBaseName", diff --git a/app/src/main/java/com/live/dynamicwallpaper/ui/activity/DynamicActivity.java b/app/src/main/java/com/live/dynamicwallpaper/ui/activity/DynamicActivity.java index 4c6957a..e3d724a 100644 --- a/app/src/main/java/com/live/dynamicwallpaper/ui/activity/DynamicActivity.java +++ b/app/src/main/java/com/live/dynamicwallpaper/ui/activity/DynamicActivity.java @@ -65,6 +65,12 @@ public class DynamicActivity extends AppCompatActivity { viewModel = new ViewModelProvider(this).get(DynamicViewModel.class); String format = contentData.getWallpaperType() == 2 ? "ViewShiftLive" : "ViewLive"; + downloadVideo(resourceId, imagePath, format); + + observeFavoriteState(); + } + + private void downloadVideo(int resourceId, String imagePath, String format) { if (contentData.getWallpaperPath().isEmpty()) { mediaFetcher.fetchVideoFile(this, resourceId, imagePath, format, new OnDownloadCallback() { @Override @@ -74,13 +80,14 @@ public class DynamicActivity extends AppCompatActivity { viewModel.update(contentData); prepareVideoPlayback(); hideLoading(); + hideRetry(); } @Override public void onFailure(Exception e) { if (ui == null) return; hideLoading(); - Toast.makeText(DynamicActivity.this, "Download error", Toast.LENGTH_SHORT).show(); + showRetry(); Log.e("LivePreview", "Media fetch failed", e); } @@ -95,9 +102,25 @@ public class DynamicActivity extends AppCompatActivity { } else { prepareVideoPlayback(); hideLoading(); + hideRetry(); } + } - observeFavoriteState(); + private void showRetry() { + if (ui == null) return; + ui.errorContainer.setVisibility(View.VISIBLE); + ui.retryButton.setOnClickListener(v -> { + ui.errorContainer.setVisibility(View.GONE); + showLoading(); + downloadVideo(contentData.getFlowId(), contentData.getImage(), + contentData.getWallpaperType() == 2 ? "ViewShiftLive" : "ViewLive"); + }); + } + + private void hideRetry() { + if (ui != null) { + ui.errorContainer.setVisibility(View.GONE); + } } private void bindListeners() { diff --git a/app/src/main/res/layout/activity_dynamic.xml b/app/src/main/res/layout/activity_dynamic.xml index 0147291..d45deac 100644 --- a/app/src/main/res/layout/activity_dynamic.xml +++ b/app/src/main/res/layout/activity_dynamic.xml @@ -123,4 +123,35 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + +