From dcf1193505d8803dc028f954a18cff8e74bda946 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Tue, 1 Feb 2022 15:31:01 -0500
Subject: [PATCH] home: handle empty conversation list

Change-Id: I7b5eb1266c1208509726590bf753dfeddca03f84
---
 .../main/java/cx/ring/client/HomeActivity.kt  | 43 ++++++-------------
 1 file changed, 14 insertions(+), 29 deletions(-)

diff --git a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.kt b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.kt
index 241623ce4..813d7ec13 100644
--- a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.kt
+++ b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.kt
@@ -317,12 +317,7 @@ class HomeActivity : AppCompatActivity(), NavigationBarView.OnItemSelectedListen
                             mBinding!!.spinnerToolbar.setSelection(0)
                         }
                     } ?: run {
-                        AccountSpinnerAdapter(
-                            this@HomeActivity,
-                            ArrayList(accounts),
-                            mDisposable,
-                            mAccountService
-                        ).apply {
+                        AccountSpinnerAdapter(this@HomeActivity, ArrayList(accounts), mDisposable, mAccountService).apply {
                             mAccountAdapter = this
                             setNotifyOnChange(false)
                             mBinding?.spinnerToolbar?.adapter = this
@@ -350,21 +345,18 @@ class HomeActivity : AppCompatActivity(), NavigationBarView.OnItemSelectedListen
                 .debounce(10, TimeUnit.SECONDS)
                 .observeOn(Schedulers.computation())
                 .switchMapSingle { conversations ->
-                    Single.zip(conversations.mapTo(ArrayList(conversations.size))
-                    { c ->
-                        mContactService.getLoadedConversation(c)
+                    if (conversations.isEmpty())
+                        Single.just(emptyArray<Any>())
+                    else
+                        Single.zip(conversations.mapTo(ArrayList(conversations.size))
+                        { c -> mContactService.getLoadedConversation(c)
                             .observeOn(Schedulers.computation())
-                            .map { vm ->
-                                Pair(
-                                    vm, BitmapUtils.drawableToBitmap(
-                                        AvatarDrawable.Builder()
-                                            .withViewModel(vm)
-                                            .withCircleCrop(true)
-                                            .build(this), targetSize
-                                    )
-                                )
+                            .map { vm -> Pair(vm, BitmapUtils.drawableToBitmap(AvatarDrawable.Builder()
+                                .withViewModel(vm)
+                                .withCircleCrop(true)
+                                .build(this), targetSize))
                             }
-                    }) { obs -> obs }
+                        }) { obs -> obs }
                 }
                 .subscribe({ conversations -> setShareShortcuts(conversations) })
                 { e -> Log.e(TAG, "Error generating conversation shortcuts", e) })
@@ -809,7 +801,7 @@ class HomeActivity : AppCompatActivity(), NavigationBarView.OnItemSelectedListen
     val switchButton: SwitchButton
         get() = mBinding!!.accountSwitch
 
-    private fun setShareShortcuts(conversations: Array<*>) {
+    private fun setShareShortcuts(conversations: Array<Any>) {
         var maxCount = ShortcutManagerCompat.getMaxShortcutCountPerActivity(this)
         if (maxCount == 0) maxCount = 4
 
@@ -840,15 +832,8 @@ class HomeActivity : AppCompatActivity(), NavigationBarView.OnItemSelectedListen
                 .setLongLived(true)
                 .setIcon(icon)
                 .setCategories(setOf(CONVERSATIONS_CATEGORY))
-                .setIntent(
-                    Intent(
-                        Intent.ACTION_SEND,
-                        android.net.Uri.EMPTY,
-                        this,
-                        HomeActivity::class.java
-                    )
-                        .putExtras(path.toBundle())
-                )
+                .setIntent(Intent(Intent.ACTION_SEND, android.net.Uri.EMPTY, this, HomeActivity::class.java)
+                        .putExtras(path.toBundle()))
                 .build()
             shortcutInfoList.add(shortcutInfo)
             if (shortcutInfoList.size == maxCount) break
-- 
GitLab