Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac3496d7 authored by Philipp Heckel's avatar Philipp Heckel
Browse files

Polishing

parent 18261263
Loading
Loading
Loading
Loading
+8 −22
Original line number Diff line number Diff line
@@ -5,7 +5,6 @@ import android.content.ActivityNotFoundException
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.media.RingtoneManager
import android.net.Uri
import android.os.Build
@@ -70,9 +69,8 @@ class NotificationService(val context: Context) {
            .setContentTitle(title)
            .setOnlyAlertOnce(true) // Do not vibrate or play sound if already showing (updates!)
            .setAutoCancel(true) // Cancel when notification is clicked
        setStyleAndText(builder, notification) // Preview picture or big text style
        setStyleAndText(builder, subscription, notification) // Preview picture or big text style
        setClickAction(builder, subscription, notification)
        maybeSetIcon(builder, subscription)
        maybeSetSound(builder, update)
        maybeSetProgress(builder, notification)
        maybeAddOpenAction(builder, notification)
@@ -85,18 +83,6 @@ class NotificationService(val context: Context) {
        notificationManager.notify(notification.notificationId, builder.build())
    }

    private fun maybeSetIcon(builder: NotificationCompat.Builder, subscription: Subscription) {
        val icon = subscription.icon ?: return
        try {
            val resolver = context.applicationContext.contentResolver
            val bitmapStream = resolver.openInputStream(Uri.parse(icon))
            val bitmap = BitmapFactory.decodeStream(bitmapStream)
            builder.setLargeIcon(bitmap)
        } catch (e: Exception) {
            Log.w(TAG, "Cannot load subscription icon", e)
        }
    }

    private fun maybeSetSound(builder: NotificationCompat.Builder, update: Boolean) {
        if (!update) {
            val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
@@ -106,20 +92,19 @@ class NotificationService(val context: Context) {
        }
    }

    private fun setStyleAndText(builder: NotificationCompat.Builder, notification: Notification) {
    private fun setStyleAndText(builder: NotificationCompat.Builder, subscription: Subscription, notification: Notification) {
        val contentUri = notification.attachment?.contentUri
        val isSupportedImage = supportedImage(notification.attachment?.type)
        val subscriptionIcon = if (subscription.icon != null) subscription.icon.readBitmapFromUriOrNull(context) else null
        if (contentUri != null && isSupportedImage) {
            try {
                val resolver = context.applicationContext.contentResolver
                val bitmapStream = resolver.openInputStream(Uri.parse(contentUri))
                val bitmap = BitmapFactory.decodeStream(bitmapStream)
                val attachmentBitmap = contentUri.readBitmapFromUri(context)
                builder
                    .setContentText(maybeAppendActionErrors(formatMessage(notification), notification))
                    .setLargeIcon(bitmap)
                    .setLargeIcon(attachmentBitmap)
                    .setStyle(NotificationCompat.BigPictureStyle()
                        .bigPicture(bitmap)
                        .bigLargeIcon(null))
                        .bigPicture(attachmentBitmap)
                        .bigLargeIcon(subscriptionIcon)) // May be null
            } catch (_: Exception) {
                val message = maybeAppendActionErrors(formatMessageMaybeWithAttachmentInfos(notification), notification)
                builder
@@ -131,6 +116,7 @@ class NotificationService(val context: Context) {
            builder
                .setContentText(message)
                .setStyle(NotificationCompat.BigTextStyle().bigText(message))
                .setLargeIcon(subscriptionIcon) // May be null
        }
    }

+4 −0
Original line number Diff line number Diff line
@@ -233,6 +233,8 @@ class SubscriberService : Service() {
                    2 -> getString(R.string.channel_subscriber_notification_instant_text_two)
                    3 -> getString(R.string.channel_subscriber_notification_instant_text_three)
                    4 -> getString(R.string.channel_subscriber_notification_instant_text_four)
                    5 -> getString(R.string.channel_subscriber_notification_instant_text_five)
                    6 -> getString(R.string.channel_subscriber_notification_instant_text_six)
                    else -> getString(R.string.channel_subscriber_notification_instant_text_more, instantSubscriptions.size)
                }
            } else {
@@ -241,6 +243,8 @@ class SubscriberService : Service() {
                    2 -> getString(R.string.channel_subscriber_notification_noinstant_text_two)
                    3 -> getString(R.string.channel_subscriber_notification_noinstant_text_three)
                    4 -> getString(R.string.channel_subscriber_notification_noinstant_text_four)
                    5 -> getString(R.string.channel_subscriber_notification_noinstant_text_five)
                    6 -> getString(R.string.channel_subscriber_notification_noinstant_text_six)
                    else -> getString(R.string.channel_subscriber_notification_noinstant_text_more, instantSubscriptions.size)
                }
            }
+1 −3
Original line number Diff line number Diff line
@@ -289,9 +289,7 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope:
                return
            }
            try {
                val resolver = context.applicationContext.contentResolver
                val bitmapStream = resolver.openInputStream(Uri.parse(attachment.contentUri))
                val bitmap = BitmapFactory.decodeStream(bitmapStream)
                val bitmap = attachment.contentUri?.readBitmapFromUri(context) ?: throw Exception("uri empty")
                attachmentImageView.setImageBitmap(bitmap)
                attachmentImageView.setOnClickListener {
                    val loadImage = { view: ImageView, image: Bitmap -> view.setImageBitmap(image) }
+3 −7
Original line number Diff line number Diff line
@@ -268,8 +268,7 @@ class DetailSettingsActivity : AppCompatActivity() {
            // Set icon (if it exists)
            if (subscription.icon != null) {
                try {
                    val bitmapStream = resolver.openInputStream(Uri.parse(subscription.icon))
                    val bitmap = BitmapFactory.decodeStream(bitmapStream)
                    val bitmap = subscription.icon!!.readBitmapFromUri(requireContext())
                    iconRemovePref.icon = bitmap.toDrawable(resources)
                } catch (e: Exception) {
                    Log.w(TAG, "Unable to set icon ${subscription.icon}", e)
@@ -292,11 +291,8 @@ class DetailSettingsActivity : AppCompatActivity() {
                            it.copyTo(outputStream)
                        }

                        // Read image and set as preference icon
                        val bitmapStream = resolver.openInputStream(Uri.parse(outputUri.toString()))
                        val bitmap = BitmapFactory.decodeStream(bitmapStream)

                        // Display "remove" preference
                        // Read image & display "remove" preference
                        val bitmap = outputUri.readBitmapFromUri(requireContext())
                        iconRemovePref.icon = bitmap.toDrawable(resources)
                        iconRemovePref.isVisible = true
                        iconSetPref.isVisible = false
+2 −8
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ import io.heckel.ntfy.db.Repository
import io.heckel.ntfy.db.Subscription
import io.heckel.ntfy.msg.NotificationService
import io.heckel.ntfy.util.Log
import io.heckel.ntfy.util.readBitmapFromUriOrNull
import io.heckel.ntfy.util.topicShortUrl
import java.text.DateFormat
import java.util.*
@@ -91,14 +92,7 @@ class MainAdapter(private val repository: Repository, private val onClick: (Subs
            val showMutedForeverIcon = (subscription.mutedUntil == 1L || globalMutedUntil == 1L) && !isUnifiedPush
            val showMutedUntilIcon = !showMutedForeverIcon && (subscription.mutedUntil > 1L || globalMutedUntil > 1L) && !isUnifiedPush
            if (subscription.icon != null) {
                try {
                    val resolver = context.applicationContext.contentResolver
                    val bitmapStream = resolver.openInputStream(Uri.parse(subscription.icon))
                    val bitmap = BitmapFactory.decodeStream(bitmapStream)
                    imageView.setImageBitmap(bitmap)
                } catch (e: Exception) {
                    Log.w(TAG, "Cannot load subscription icon", e)
                }
                imageView.setImageBitmap(subscription.icon.readBitmapFromUriOrNull(context))
            }
            nameView.text = topicShortUrl(subscription.baseUrl, subscription.topic)
            statusView.text = statusMessage
Loading