diff options
Diffstat (limited to 'src/com/android')
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() { |