Merge "Added DownloadableWallpaperData (1/2)" into main
diff --git a/src/com/android/wallpaper/model/wallpaper/DownloadableWallpaperData.kt b/src/com/android/wallpaper/model/wallpaper/DownloadableWallpaperData.kt
new file mode 100644
index 0000000..04ff8c6
--- /dev/null
+++ b/src/com/android/wallpaper/model/wallpaper/DownloadableWallpaperData.kt
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wallpaper.model.wallpaper
+
+import android.app.WallpaperInfo
+
+/** Represents set of attributes that are needed for a wallpaper that is downloadable. */
+data class DownloadableWallpaperData(
+    val groupName: String,
+    val systemWallpaperInfo: WallpaperInfo,
+    val isTitleVisible: Boolean,
+    val isApplied: Boolean,
+    val effectNames: String?,
+)
diff --git a/src/com/android/wallpaper/model/wallpaper/WallpaperModel.kt b/src/com/android/wallpaper/model/wallpaper/WallpaperModel.kt
index 2d09da3..ac33dd7 100644
--- a/src/com/android/wallpaper/model/wallpaper/WallpaperModel.kt
+++ b/src/com/android/wallpaper/model/wallpaper/WallpaperModel.kt
@@ -40,6 +40,7 @@
         override val commonWallpaperData: CommonWallpaperData,
         val staticWallpaperData: StaticWallpaperData,
         val imageWallpaperData: ImageWallpaperData?,
-        val networkWallpaperData: NetworkWallpaperData?
+        val networkWallpaperData: NetworkWallpaperData?,
+        val downloadableWallpaperData: DownloadableWallpaperData?,
     ) : WallpaperModel()
 }
diff --git a/src/com/android/wallpaper/picker/preview/ui/viewmodel/PreviewActionsViewModel.kt b/src/com/android/wallpaper/picker/preview/ui/viewmodel/PreviewActionsViewModel.kt
index dc20fbe..baff813 100644
--- a/src/com/android/wallpaper/picker/preview/ui/viewmodel/PreviewActionsViewModel.kt
+++ b/src/com/android/wallpaper/picker/preview/ui/viewmodel/PreviewActionsViewModel.kt
@@ -60,8 +60,10 @@
     /** Action's isVisible state */
     val isInformationVisible: Flow<Boolean> = _informationFloatingSheetViewModel.map { it != null }
 
-    private val _isDownloadVisible: MutableStateFlow<Boolean> = MutableStateFlow(false)
-    val isDownloadVisible: Flow<Boolean> = _isDownloadVisible.asStateFlow()
+    val isDownloadVisible: Flow<Boolean> =
+        interactor.wallpaperModel.map {
+            (it as? WallpaperModel.StaticWallpaperModel)?.downloadableWallpaperData != null
+        }
 
     private val _isDeleteVisible: MutableStateFlow<Boolean> = MutableStateFlow(false)
     val isDeleteVisible: Flow<Boolean> = _isDeleteVisible.asStateFlow()
diff --git a/src/com/android/wallpaper/util/converter/DefaultWallpaperModelFactory.kt b/src/com/android/wallpaper/util/converter/DefaultWallpaperModelFactory.kt
index 09599fb..b5e2ae4 100644
--- a/src/com/android/wallpaper/util/converter/DefaultWallpaperModelFactory.kt
+++ b/src/com/android/wallpaper/util/converter/DefaultWallpaperModelFactory.kt
@@ -48,7 +48,8 @@
                 staticWallpaperData = StaticWallpaperData(asset = wallpaperInfo.getAsset(context)),
                 imageWallpaperData =
                     (wallpaperInfo as? ImageWallpaperInfo)?.getImageWallpaperData(),
-                networkWallpaperData = null
+                networkWallpaperData = null,
+                downloadableWallpaperData = null,
             )
         }
     }