Keep gif search open when viewing a result.

fork-5.53.8
Cody Henthorne 2022-04-05 10:56:58 -04:00
rodzic fa515be258
commit bba36a5724
3 zmienionych plików z 48 dodań i 16 usunięć

Wyświetl plik

@ -788,14 +788,10 @@ public class ConversationParentFragment extends Fragment
SignalPlace place = new SignalPlace(PlacePickerActivity.addressFromData(data));
attachmentManager.setLocation(place, getCurrentMediaConstraints());
break;
case PICK_GIF:
onGifSelectSuccess(data.getData(),
data.getIntExtra(GiphyActivity.EXTRA_WIDTH, 0),
data.getIntExtra(GiphyActivity.EXTRA_HEIGHT, 0));
break;
case SMS_DEFAULT:
initializeSecurity(isSecureText, isDefaultSms);
break;
case PICK_GIF:
case MEDIA_SENDER:
MediaSendActivityResult result = MediaSendActivityResult.fromData(data);
@ -3452,7 +3448,7 @@ public class ConversationParentFragment extends Fragment
@Override
public void openGifSearch() {
AttachmentManager.selectGif(this, ConversationParentFragment.PICK_GIF, isMms());
AttachmentManager.selectGif(this, ConversationParentFragment.PICK_GIF, recipient.getId(), sendButton.getSelectedTransport(), isMms(), composeText.getTextTrimmed());
}
@Override

Wyświetl plik

@ -6,31 +6,49 @@ import android.os.Bundle;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProviders;
import org.thoughtcrime.securesms.PassphraseRequiredActivity;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.TransportOption;
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4Fragment;
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4SaveResult;
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ViewModel;
import org.thoughtcrime.securesms.keyboard.emoji.KeyboardPageSearchView;
import org.thoughtcrime.securesms.mediasend.Media;
import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionActivity;
import org.thoughtcrime.securesms.mms.SlideFactory;
import org.thoughtcrime.securesms.providers.BlobProvider;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
import java.util.Collections;
import java.util.Objects;
import java.util.Optional;
public class GiphyActivity extends PassphraseRequiredActivity implements KeyboardPageSearchView.Callbacks {
public static final String EXTRA_IS_MMS = "extra_is_mms";
public static final String EXTRA_WIDTH = "extra_width";
public static final String EXTRA_HEIGHT = "extra_height";
public static final String EXTRA_IS_MMS = "extra_is_mms";
public static final String EXTRA_RECIPIENT_ID = "extra_recipient_id";
public static final String EXTRA_TRANSPORT = "extra_transport";
public static final String EXTRA_TEXT = "extra_text";
private static final int MEDIA_SENDER = 12;
private final DynamicTheme dynamicTheme = new DynamicNoActionBarTheme();
private GiphyMp4ViewModel giphyMp4ViewModel;
private AlertDialog progressDialog;
private RecipientId recipientId;
private TransportOption transport;
private CharSequence text;
@Override
public void onPreCreate() {
@ -43,6 +61,10 @@ public class GiphyActivity extends PassphraseRequiredActivity implements Keyboar
final boolean forMms = getIntent().getBooleanExtra(EXTRA_IS_MMS, false);
recipientId = getIntent().getParcelableExtra(EXTRA_RECIPIENT_ID);
transport = getIntent().getParcelableExtra(EXTRA_TRANSPORT);
text = getIntent().getCharSequenceExtra(EXTRA_TEXT);
giphyMp4ViewModel = ViewModelProviders.of(this, new GiphyMp4ViewModel.Factory(forMms)).get(GiphyMp4ViewModel.class);
giphyMp4ViewModel.getSaveResultEvents().observe(this, this::handleGiphyMp4SaveResult);
@ -56,6 +78,16 @@ public class GiphyActivity extends PassphraseRequiredActivity implements Keyboar
ViewUtil.focusAndShowKeyboard(findViewById(R.id.emoji_search_entry));
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (requestCode == MEDIA_SENDER && resultCode == RESULT_OK) {
setResult(RESULT_OK, data);
finish();
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
private void initializeToolbar() {
KeyboardPageSearchView searchView = findViewById(R.id.giphy_search_text);
searchView.setCallbacks(this);
@ -82,13 +114,14 @@ public class GiphyActivity extends PassphraseRequiredActivity implements Keyboar
}
private void handleGiphyMp4SuccessfulResult(@NonNull GiphyMp4SaveResult.Success success) {
Intent intent = new Intent();
intent.setData(success.getBlobUri());
intent.putExtra(EXTRA_WIDTH, success.getWidth());
intent.putExtra(EXTRA_HEIGHT, success.getHeight());
SlideFactory.MediaType mediaType = Objects.requireNonNull(SlideFactory.MediaType.from(BlobProvider.getMimeType(success.getBlobUri())));
String mimeType = MediaUtil.getMimeType(this, success.getBlobUri());
if (mimeType == null) {
mimeType = mediaType.toFallbackMimeType();
}
setResult(RESULT_OK, intent);
finish();
Media media = new Media(success.getBlobUri(), mimeType, 0, success.getWidth(), success.getHeight(), 0, 0, false, true, Optional.empty(), Optional.empty(), Optional.empty());
startActivityForResult(MediaSelectionActivity.editor(this, transport, Collections.singletonList(media), recipientId, text), MEDIA_SENDER);
}
private void handleGiphyMp4ErrorResult(@NonNull GiphyMp4SaveResult.Error error) {

Wyświetl plik

@ -404,9 +404,12 @@ public class AttachmentManager {
.execute();
}
public static void selectGif(Fragment fragment, int requestCode, boolean isForMms) {
public static void selectGif(Fragment fragment, int requestCode, RecipientId id, TransportOption selectedTransport, boolean isForMms, CharSequence textTrimmed) {
Intent intent = new Intent(fragment.requireContext(), GiphyActivity.class);
intent.putExtra(GiphyActivity.EXTRA_IS_MMS, isForMms);
intent.putExtra(GiphyActivity.EXTRA_RECIPIENT_ID, id);
intent.putExtra(GiphyActivity.EXTRA_TRANSPORT, selectedTransport);
intent.putExtra(GiphyActivity.EXTRA_TEXT, textTrimmed);
fragment.startActivityForResult(intent, requestCode);
}