Prevent all menu invalidations if we have requested a conversation search.
This commit is contained in:
parent
42e865813c
commit
e504c490c8
2 changed files with 32 additions and 26 deletions
|
@ -701,17 +701,9 @@ class ConversationSettingsFragment : DSLSettingsFragment(
|
|||
override fun getAnimationState(recyclerView: RecyclerView): AnimationState {
|
||||
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
|
||||
|
||||
// If first visible item position is 0
|
||||
// If less than actionbarsize is visible
|
||||
// SHOW
|
||||
// else
|
||||
// HIDE
|
||||
// else
|
||||
// HIDE
|
||||
|
||||
return if (layoutManager.findFirstVisibleItemPosition() == 0) {
|
||||
val firstChild = requireNotNull(layoutManager.getChildAt(0))
|
||||
firstChild.getDrawingRect(rect)
|
||||
firstChild.getLocalVisibleRect(rect)
|
||||
|
||||
if (rect.height() <= actionBarSize) {
|
||||
AnimationState.SHOW
|
||||
|
|
|
@ -336,7 +336,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
private static final String TAG = Log.tag(ConversationActivity.class);
|
||||
|
||||
private static final String STATE_REACT_WITH_ANY_PAGE = "STATE_REACT_WITH_ANY_PAGE";
|
||||
private static final String STATE_HANDLED_INIT_SEARCH = "STATE_HANDLED_INIT_SEARCH";
|
||||
private static final String STATE_IS_SEARCH_REQUESTED = "STATE_IS_SEARCH_REQUESTED";
|
||||
|
||||
private static final int REQUEST_CODE_SETTINGS = 1000;
|
||||
|
||||
|
@ -411,6 +411,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
private boolean isDefaultSms = true;
|
||||
private boolean isMmsEnabled = true;
|
||||
private boolean isSecurityInitialized = false;
|
||||
private boolean isSearchRequested = false;
|
||||
|
||||
private volatile boolean screenInitialized = false;
|
||||
|
||||
|
@ -440,6 +441,8 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
|
||||
ConversationIntents.Args args = ConversationIntents.Args.from(getIntent());
|
||||
|
||||
isSearchRequested = args.isWithSearchOpen();
|
||||
|
||||
reportShortcutLaunch(args.getRecipientId());
|
||||
setContentView(R.layout.conversation_activity);
|
||||
|
||||
|
@ -497,8 +500,6 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
}
|
||||
});
|
||||
initializeInsightObserver();
|
||||
|
||||
handleStartWithSearchOpen();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -536,7 +537,10 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
|
||||
setIntent(intent);
|
||||
|
||||
viewModel.setArgs(ConversationIntents.Args.from(intent));
|
||||
ConversationIntents.Args args = ConversationIntents.Args.from(intent);
|
||||
isSearchRequested = args.isWithSearchOpen();
|
||||
|
||||
viewModel.setArgs(args);
|
||||
|
||||
reportShortcutLaunch(viewModel.getArgs().getRecipientId());
|
||||
initializeResources(viewModel.getArgs());
|
||||
|
@ -553,7 +557,11 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
|
||||
searchNav.setVisibility(View.GONE);
|
||||
|
||||
handleStartWithSearchOpen();
|
||||
if (args.isWithSearchOpen()) {
|
||||
if (searchViewItem != null && searchViewItem.expandActionView()) {
|
||||
searchViewModel.onSearchOpened();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -686,7 +694,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
titleView.setTitle(glideRequests, recipientSnapshot);
|
||||
NotificationChannels.updateContactChannelName(this, recipientSnapshot);
|
||||
setBlockedUserState(recipientSnapshot, isSecureText, isDefaultSms);
|
||||
supportInvalidateOptionsMenu();
|
||||
invalidateOptionsMenu();
|
||||
break;
|
||||
case TAKE_PHOTO:
|
||||
handleImageFromDeviceCameraApp();
|
||||
|
@ -779,21 +787,12 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
}
|
||||
}
|
||||
|
||||
private void handleStartWithSearchOpen() {
|
||||
if (viewModel.getArgs().isWithSearchOpen()) {
|
||||
toolbar.postDelayed(() -> {
|
||||
if (searchViewItem.expandActionView()) {
|
||||
searchViewModel.onSearchOpened();
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
|
||||
outState.putInt(STATE_REACT_WITH_ANY_PAGE, reactWithAnyEmojiStartPage);
|
||||
outState.putBoolean(STATE_IS_SEARCH_REQUESTED, isSearchRequested);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -801,6 +800,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
super.onRestoreInstanceState(savedInstanceState);
|
||||
|
||||
reactWithAnyEmojiStartPage = savedInstanceState.getInt(STATE_REACT_WITH_ANY_PAGE, -1);
|
||||
isSearchRequested = savedInstanceState.getBoolean(STATE_IS_SEARCH_REQUESTED, false);
|
||||
}
|
||||
|
||||
private void setVisibleThread(long threadId) {
|
||||
|
@ -1016,6 +1016,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
@Override
|
||||
public boolean onMenuItemActionCollapse(MenuItem item) {
|
||||
searchView.setOnQueryTextListener(null);
|
||||
isSearchRequested = false;
|
||||
searchViewModel.onSearchClosed();
|
||||
searchNav.setVisibility(View.GONE);
|
||||
inputPanel.setVisibility(View.VISIBLE);
|
||||
|
@ -1026,10 +1027,23 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
}
|
||||
});
|
||||
|
||||
if (isSearchRequested) {
|
||||
if (searchViewItem.expandActionView()) {
|
||||
searchViewModel.onSearchOpened();
|
||||
}
|
||||
}
|
||||
|
||||
super.onCreateOptionsMenu(menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidateOptionsMenu() {
|
||||
if (!isSearchRequested) {
|
||||
super.invalidateOptionsMenu();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
super.onOptionsItemSelected(item);
|
||||
|
@ -1544,7 +1558,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
|
|||
}
|
||||
|
||||
calculateCharactersRemaining();
|
||||
supportInvalidateOptionsMenu();
|
||||
invalidateOptionsMenu();
|
||||
setBlockedUserState(recipient.get(), isSecureText, isDefaultSms);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue