Skip to content

Commit 25eb107

Browse files
authored
Move Emoji.parseToUnicode to Dispatcher.IO (#7108)
* Move Emoji.parseToUnicode to Dispatcher.IO * Fix wear build
1 parent 1399f2f commit 25eb107

3 files changed

Lines changed: 9 additions & 6 deletions

File tree

app/src/main/kotlin/io/homeassistant/companion/android/notifications/MessagingManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1311,7 +1311,7 @@ class MessagingManager @Inject constructor(
13111311
builder.setAutoCancel(!sticky)
13121312
}
13131313

1314-
private fun handleSubject(builder: NotificationCompat.Builder, data: Map<String, String>) {
1314+
private suspend fun handleSubject(builder: NotificationCompat.Builder, data: Map<String, String>) {
13151315
val subject = data[SUBJECT]
13161316
if (!subject.isNullOrBlank()) {
13171317
builder.setContentText(prepareText(subject))

common/src/main/kotlin/io/homeassistant/companion/android/common/notifications/NotificationFunctions.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import io.homeassistant.companion.android.common.util.CHANNEL_GENERAL
2828
import io.homeassistant.companion.android.common.util.SdkVersion
2929
import io.homeassistant.companion.android.common.util.cancel
3030
import java.util.Locale
31+
import kotlinx.coroutines.Dispatchers
32+
import kotlinx.coroutines.withContext
3133
import timber.log.Timber
3234

3335
object NotificationData {
@@ -216,7 +218,7 @@ fun handleSmallIcon(context: Context, builder: NotificationCompat.Builder, data:
216218
}
217219
}
218220

219-
fun getGroupNotificationBuilder(
221+
suspend fun getGroupNotificationBuilder(
220222
context: Context,
221223
channelId: String,
222224
group: String,
@@ -240,11 +242,12 @@ fun getGroupNotificationBuilder(
240242
return groupNotificationBuilder
241243
}
242244

243-
fun prepareText(text: String): Spanned {
245+
// Emoji parser can trigger a read from the disk so it needs to happen on IO
246+
suspend fun prepareText(text: String): Spanned = withContext(Dispatchers.IO) {
244247
// Replace control char \r\n, \r, \n and also \r\n, \r, \n as text literals in strings to <br>
245248
val brText = text.replace("(\r\n|\r|\n)|(\\\\r\\\\n|\\\\r|\\\\n)".toRegex(), "<br>")
246249
val emojiParsedText = EmojiParser.parseToUnicode(brText)
247-
return HtmlCompat.fromHtml(emojiParsedText, HtmlCompat.FROM_HTML_MODE_LEGACY)
250+
return@withContext HtmlCompat.fromHtml(emojiParsedText, HtmlCompat.FROM_HTML_MODE_LEGACY)
248251
}
249252

250253
fun handleColor(context: Context, builder: NotificationCompat.Builder, data: Map<String, String>) {
@@ -253,7 +256,7 @@ fun handleColor(context: Context, builder: NotificationCompat.Builder, data: Map
253256
builder.color = color
254257
}
255258

256-
fun handleText(builder: NotificationCompat.Builder, data: Map<String, String>) {
259+
suspend fun handleText(builder: NotificationCompat.Builder, data: Map<String, String>) {
257260
data[NotificationData.TITLE]?.let {
258261
builder.setContentTitle(prepareText(it))
259262
}

wear/src/main/kotlin/io/homeassistant/companion/android/notifications/MessagingManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class MessagingManager @Inject constructor(
107107
}
108108

109109
@SuppressLint("MissingPermission")
110-
private fun sendNotification(data: Map<String, String>, received: Long? = null) {
110+
private suspend fun sendNotification(data: Map<String, String>, received: Long? = null) {
111111
val notificationManagerCompat = NotificationManagerCompat.from(context)
112112

113113
val tag = data["tag"].takeIf { !it.isNullOrBlank() }

0 commit comments

Comments
 (0)