mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 01:40:07 +01:00
Remember the last position of emoji and sticker picker as you swap between them.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user