Drop installation error bottom sheet for notifications
Post user-readable error message in the notification as we already log the exception in the logcat. Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -220,7 +220,7 @@ class DownloadWorker @AssistedInject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
notifyStatus(DownloadStatus.FAILED)
|
notifyStatus(status = DownloadStatus.FAILED, exception = exception)
|
||||||
AuroraApp.events.send(
|
AuroraApp.events.send(
|
||||||
InstallerEvent.Failed(
|
InstallerEvent.Failed(
|
||||||
packageName = download.packageName,
|
packageName = download.packageName,
|
||||||
@@ -390,7 +390,11 @@ class DownloadWorker @AssistedInject constructor(
|
|||||||
* Notifies the user of the current status of the download.
|
* Notifies the user of the current status of the download.
|
||||||
* @param status Current [DownloadStatus]
|
* @param status Current [DownloadStatus]
|
||||||
*/
|
*/
|
||||||
private suspend fun notifyStatus(status: DownloadStatus, isProgress: Boolean = false) {
|
private suspend fun notifyStatus(
|
||||||
|
status: DownloadStatus,
|
||||||
|
isProgress: Boolean = false,
|
||||||
|
exception: Exception? = null
|
||||||
|
) {
|
||||||
// Update status in database
|
// Update status in database
|
||||||
download.downloadStatus = status
|
download.downloadStatus = status
|
||||||
downloadDao.updateStatus(download.packageName, status)
|
downloadDao.updateStatus(download.packageName, status)
|
||||||
@@ -408,7 +412,9 @@ class DownloadWorker @AssistedInject constructor(
|
|||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
|
|
||||||
val notification = NotificationUtil.getDownloadNotification(context, download, icon)
|
val notification = NotificationUtil.getDownloadNotification(
|
||||||
|
context, download, icon, exception?.message
|
||||||
|
)
|
||||||
notificationManager.notify(
|
notificationManager.notify(
|
||||||
if (isProgress) NOTIFICATION_ID else download.packageName.hashCode(),
|
if (isProgress) NOTIFICATION_ID else download.packageName.hashCode(),
|
||||||
notification
|
notification
|
||||||
|
|||||||
@@ -90,7 +90,8 @@ object NotificationUtil {
|
|||||||
fun getDownloadNotification(
|
fun getDownloadNotification(
|
||||||
context: Context,
|
context: Context,
|
||||||
download: AuroraDownload,
|
download: AuroraDownload,
|
||||||
largeIcon: Bitmap? = null
|
largeIcon: Bitmap? = null,
|
||||||
|
message: String? = null
|
||||||
): Notification {
|
): Notification {
|
||||||
val builder = NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_DOWNLOADS)
|
val builder = NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_DOWNLOADS)
|
||||||
builder.setSmallIcon(R.drawable.ic_notification_outlined)
|
builder.setSmallIcon(R.drawable.ic_notification_outlined)
|
||||||
@@ -120,7 +121,7 @@ object NotificationUtil {
|
|||||||
|
|
||||||
DownloadStatus.FAILED -> {
|
DownloadStatus.FAILED -> {
|
||||||
builder.setSmallIcon(R.drawable.ic_download_fail)
|
builder.setSmallIcon(R.drawable.ic_download_fail)
|
||||||
builder.setContentText(context.getString(R.string.download_failed))
|
builder.setContentText(message ?: context.getString(R.string.download_failed))
|
||||||
builder.color = Color.RED
|
builder.color = Color.RED
|
||||||
builder.setCategory(Notification.CATEGORY_ERROR)
|
builder.setCategory(Notification.CATEGORY_ERROR)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,59 +0,0 @@
|
|||||||
/*
|
|
||||||
* Aurora Store
|
|
||||||
* Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
|
|
||||||
*
|
|
||||||
* Aurora Store is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* Aurora Store is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.aurora.store.view.ui.sheets
|
|
||||||
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.view.View
|
|
||||||
import androidx.navigation.fragment.navArgs
|
|
||||||
import coil3.load
|
|
||||||
import coil3.request.transformations
|
|
||||||
import coil3.transform.CircleCropTransformation
|
|
||||||
import com.aurora.extensions.copyToClipBoard
|
|
||||||
import com.aurora.extensions.toast
|
|
||||||
import com.aurora.store.R
|
|
||||||
import com.aurora.store.databinding.SheetInstallErrorBinding
|
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
|
||||||
class InstallErrorDialogSheet : BaseDialogSheet<SheetInstallErrorBinding>() {
|
|
||||||
|
|
||||||
private val args: InstallErrorDialogSheetArgs by navArgs()
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
||||||
super.onViewCreated(view, savedInstanceState)
|
|
||||||
|
|
||||||
binding.imgIcon.load(args.app.iconArtwork.url) {
|
|
||||||
transformations(CircleCropTransformation())
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.txtLine1.text = args.app.displayName
|
|
||||||
binding.txtLine2.text = args.error
|
|
||||||
binding.txtLine3.text = args.extra
|
|
||||||
|
|
||||||
binding.btnPrimary.setOnClickListener {
|
|
||||||
dismissAllowingStateLoss()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.btnSecondary.setOnClickListener {
|
|
||||||
requireContext().copyToClipBoard(args.extra)
|
|
||||||
requireContext().toast(R.string.toast_clipboard_copied)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,118 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?><!--
|
|
||||||
~ Aurora Store
|
|
||||||
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
|
|
||||||
~
|
|
||||||
~ Aurora Store is free software: you can redistribute it and/or modify
|
|
||||||
~ it under the terms of the GNU General Public License as published by
|
|
||||||
~ the Free Software Foundation, either version 2 of the License, or
|
|
||||||
~ (at your option) any later version.
|
|
||||||
~
|
|
||||||
~ Aurora Store is distributed in the hope that it will be useful,
|
|
||||||
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
~ GNU General Public License for more details.
|
|
||||||
~
|
|
||||||
~ You should have received a copy of the GNU General Public License
|
|
||||||
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
~
|
|
||||||
-->
|
|
||||||
|
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:padding="@dimen/padding_normal">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
|
||||||
android:id="@+id/img_icon"
|
|
||||||
android:layout_width="@dimen/icon_size_category"
|
|
||||||
android:layout_height="@dimen/icon_size_category"
|
|
||||||
android:layout_centerVertical="true"
|
|
||||||
tools:src="@drawable/bg_placeholder" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/txt_header"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:layout_marginStart="@dimen/margin_normal"
|
|
||||||
android:layout_marginBottom="@dimen/margin_normal"
|
|
||||||
android:layout_toEndOf="@id/img_icon"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:text="@string/title_installer"
|
|
||||||
android:textAlignment="viewStart"
|
|
||||||
android:textAppearance="@style/TextAppearance.Aurora.SubTitle" />
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:paddingStart="@dimen/padding_normal"
|
|
||||||
android:paddingEnd="@dimen/padding_normal"
|
|
||||||
android:paddingBottom="@dimen/padding_normal">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/txt_line1"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:maxLines="3"
|
|
||||||
android:textAlignment="viewStart"
|
|
||||||
android:textAppearance="@style/TextAppearance.Aurora.Line1"
|
|
||||||
tools:text="Title" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/txt_line2"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:maxLines="10"
|
|
||||||
android:textAlignment="viewStart"
|
|
||||||
android:textAppearance="@style/TextAppearance.Aurora.Line2"
|
|
||||||
android:textColor="@color/colorRed"
|
|
||||||
tools:text="Error" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/txt_line3"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:maxLines="10"
|
|
||||||
android:textAlignment="viewStart"
|
|
||||||
android:textAppearance="@style/TextAppearance.Aurora.Line2"
|
|
||||||
tools:text="Extra" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:weightSum="2">
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/btn_secondary"
|
|
||||||
style="@style/Widget.Material3.Button.TextButton.Dialog.Flush"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="@dimen/height_button"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:text="@string/action_copy" />
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/btn_primary"
|
|
||||||
style="@style/Widget.Material3.Button.TextButton.Dialog.Flush"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="@dimen/height_button"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:text="@string/action_ok" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</FrameLayout>
|
|
||||||
@@ -253,24 +253,6 @@
|
|||||||
android:name="com.aurora.store.view.ui.sheets.DeviceMiuiSheet"
|
android:name="com.aurora.store.view.ui.sheets.DeviceMiuiSheet"
|
||||||
android:label="DeviceMiuiSheet"
|
android:label="DeviceMiuiSheet"
|
||||||
tools:layout="@layout/sheet_device_miui" />
|
tools:layout="@layout/sheet_device_miui" />
|
||||||
<dialog
|
|
||||||
android:id="@+id/installErrorDialogSheet"
|
|
||||||
android:name="com.aurora.store.view.ui.sheets.InstallErrorDialogSheet"
|
|
||||||
android:label="InstallErrorDialogSheet"
|
|
||||||
tools:layout="@layout/sheet_install_error">
|
|
||||||
<argument
|
|
||||||
android:name="app"
|
|
||||||
app:argType="com.aurora.gplayapi.data.models.App" />
|
|
||||||
<argument
|
|
||||||
android:name="title"
|
|
||||||
app:argType="string" />
|
|
||||||
<argument
|
|
||||||
android:name="error"
|
|
||||||
app:argType="string" />
|
|
||||||
<argument
|
|
||||||
android:name="extra"
|
|
||||||
app:argType="string" />
|
|
||||||
</dialog>
|
|
||||||
<dialog
|
<dialog
|
||||||
android:id="@+id/moreDialogFragment"
|
android:id="@+id/moreDialogFragment"
|
||||||
android:name="com.aurora.store.view.ui.commons.MoreDialogFragment"
|
android:name="com.aurora.store.view.ui.commons.MoreDialogFragment"
|
||||||
|
|||||||
Reference in New Issue
Block a user