diff options
author | Uchenna Okoye <uokoye@google.com> | 2021-07-03 04:39:26 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-07-03 04:39:26 +0000 |
commit | ff88ef5d22aec8d60060b237d956434f5a903ef3 (patch) | |
tree | abe9c36eb63a4fcc07540fa5fff0550437b3c0e6 | |
parent | db983929f9bb34cb4694061813543b56ca3d2347 (diff) | |
parent | 044c352e183c6951f68fab9b442a7870c7f64c5e (diff) | |
download | Messenger-ff88ef5d22aec8d60060b237d956434f5a903ef3.tar.gz |
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: I74829977b560899e757daeea2bd32771cc17669b
4 files changed, 29 insertions, 0 deletions
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 @@ public interface DataModel { 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.fragment.app.FragmentActivity; 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 @@ public class MessageLauncherActivity extends FragmentActivity implements InsetsC 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 @@ public class TelephonyDataModel implements DataModel { 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 @@ public class UserAccountLiveData extends LiveData<UserAccountChangeList> { 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() { |