Remember the last position of emoji and sticker picker as you swap between them.

This commit is contained in:
Alex Hart
2020-12-10 17:42:18 -04:00
committed by Alan Evans
parent d2d698f64e
commit e709cdc9d5
4 changed files with 22 additions and 4 deletions

View File

@@ -37,6 +37,7 @@ public final class StickerKeyboardProvider implements MediaKeyboardProvider,
MediaKeyboardProvider.AddObserver,
StickerKeyboardPageFragment.EventListener
{
private static final int UNSET = -1;
private final Context context;
private final StickerEventListener eventListener;
@@ -47,6 +48,7 @@ public final class StickerKeyboardProvider implements MediaKeyboardProvider,
private Presenter presenter;
private boolean isSoloProvider;
private StickerKeyboardViewModel viewModel;
private int currentPosition;
public StickerKeyboardProvider(@NonNull FragmentActivity activity,
@NonNull StickerEventListener eventListener)
@@ -55,6 +57,7 @@ public final class StickerKeyboardProvider implements MediaKeyboardProvider,
this.eventListener = eventListener;
this.pagerAdapter = new StickerPagerAdapter(activity.getSupportFragmentManager(), this);
this.stickerThrottler = new Throttler(100);
this.currentPosition = UNSET;
initViewModel(activity);
}
@@ -76,7 +79,7 @@ public final class StickerKeyboardProvider implements MediaKeyboardProvider,
PackListResult result = viewModel.getPacks().getValue();
if (result != null) {
present(presenter, result, true);
present(presenter, result, false);
}
}
@@ -109,6 +112,11 @@ public final class StickerKeyboardProvider implements MediaKeyboardProvider,
}
}
@Override
public void setCurrentPosition(int currentPosition) {
this.currentPosition = currentPosition;
}
private void initViewModel(@NonNull FragmentActivity activity) {
StickerKeyboardRepository repository = new StickerKeyboardRepository(DatabaseFactory.getStickerDatabase(activity));
viewModel = ViewModelProviders.of(activity, new StickerKeyboardViewModel.Factory(activity.getApplication(), repository)).get(StickerKeyboardViewModel.class);
@@ -133,9 +141,9 @@ public final class StickerKeyboardProvider implements MediaKeyboardProvider,
return;
}
int startingIndex = presenter.getCurrentPosition();
int startingIndex = currentPosition;
if (calculateStartingIndex) {
if (calculateStartingIndex || startingIndex == UNSET) {
startingIndex = !result.hasRecents() && result.getPacks().size() > 0 ? 1 : 0;
}