@@ -28,6 +28,8 @@ import io.homeassistant.companion.android.common.util.CHANNEL_GENERAL
2828import io.homeassistant.companion.android.common.util.SdkVersion
2929import io.homeassistant.companion.android.common.util.cancel
3030import java.util.Locale
31+ import kotlinx.coroutines.Dispatchers
32+ import kotlinx.coroutines.withContext
3133import timber.log.Timber
3234
3335object 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
250253fun 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 }
0 commit comments