Refresh User Account on Resume to ensure the BT state is accurate. am: 044c352e18

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Car/Messenger/+/15192940

Change-Id: I80e6c75f4d3d5f6329769444a7f0abce1d725773
diff --git a/src/com/android/car/messenger/core/interfaces/DataModel.java b/src/com/android/car/messenger/core/interfaces/DataModel.java
index 911b2a0..a2bc91b 100644
--- a/src/com/android/car/messenger/core/interfaces/DataModel.java
+++ b/src/com/android/car/messenger/core/interfaces/DataModel.java
@@ -42,6 +42,12 @@
     LiveData<Collection<UserAccount>> getAccounts();
 
     /**
+     * Call this to reload user account live data. This is useful when resuming an activity, to
+     * ensure no account changes was missed.
+     */
+    void refreshUserAccounts();
+
+    /**
      * Get collection of conversations for the given account.
      *
      * @param userAccount The account to which data is being queried. This could be the subscription
diff --git a/src/com/android/car/messenger/core/ui/launcher/MessageLauncherActivity.java b/src/com/android/car/messenger/core/ui/launcher/MessageLauncherActivity.java
index 248ac29..ddd227c 100644
--- a/src/com/android/car/messenger/core/ui/launcher/MessageLauncherActivity.java
+++ b/src/com/android/car/messenger/core/ui/launcher/MessageLauncherActivity.java
@@ -23,6 +23,7 @@
 
 import androidx.annotation.NonNull;
 
+import com.android.car.messenger.core.interfaces.AppFactory;
 import com.android.car.messenger.core.models.UserAccount;
 import com.android.car.messenger.core.ui.conversationlist.ConversationListFragment;
 import com.android.car.messenger.core.util.L;
@@ -71,6 +72,13 @@
         pushContentFragment(fragment, fragmentTag);
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        L.d("On Resume of Message Activity.");
+        AppFactory.get().getDataModel().refreshUserAccounts();
+    }
+
     private void pushContentFragment(
             @NonNull Fragment topContentFragment, @NonNull String fragmentTag) {
         getSupportFragmentManager()
diff --git a/src/com/android/car/messenger/impl/datamodels/TelephonyDataModel.java b/src/com/android/car/messenger/impl/datamodels/TelephonyDataModel.java
index e3b25f8..a1816e2 100644
--- a/src/com/android/car/messenger/impl/datamodels/TelephonyDataModel.java
+++ b/src/com/android/car/messenger/impl/datamodels/TelephonyDataModel.java
@@ -51,6 +51,11 @@
                 UserAccountLiveData.getInstance(), UserAccountChangeList::getAccounts);
     }
 
+    @Override
+    public void refreshUserAccounts() {
+        UserAccountLiveData.getInstance().refresh();
+    }
+
     @NonNull
     @Override
     public LiveData<Collection<Conversation>> getConversations(@NonNull UserAccount userAccount) {
diff --git a/src/com/android/car/messenger/impl/datamodels/UserAccountLiveData.java b/src/com/android/car/messenger/impl/datamodels/UserAccountLiveData.java
index 8defc5f..1a95a2f 100644
--- a/src/com/android/car/messenger/impl/datamodels/UserAccountLiveData.java
+++ b/src/com/android/car/messenger/impl/datamodels/UserAccountLiveData.java
@@ -79,6 +79,16 @@
         loadValue();
     }
 
+    /**
+     * Refresh the user accounts. Updates listeners if a change is found. Useful to call when
+     * something occurs that indicates a change in accounts, such as empty messages. This is useful
+     * as there are occasions when the subscription on change listener is not called after a
+     * subscription is deleted.
+     */
+    public void refresh() {
+        loadValue();
+    }
+
     /** Gets the instance of {@link UserAccountLiveData} */
     @NonNull
     public static UserAccountLiveData getInstance() {