Update Glide to use ksp, drop kapt.

Resolves #13381
This commit is contained in:
Jameson Williams
2024-01-24 02:54:09 -06:00
committed by Nicholas Tinsley
parent aa33fd44b8
commit ec96b4e3aa
132 changed files with 755 additions and 679 deletions

View File

@@ -12,10 +12,11 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.InputAwareLayout;
import org.thoughtcrime.securesms.mediasend.Media;
import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.util.StorageUtil;
import java.util.Arrays;
@@ -63,7 +64,7 @@ public class AttachmentKeyboard extends FrameLayout implements InputAwareLayout.
RecyclerView buttonList = findViewById(R.id.attachment_keyboard_button_list);
buttonList.setItemAnimator(null);
mediaAdapter = new AttachmentKeyboardMediaAdapter(GlideApp.with(this), media -> {
mediaAdapter = new AttachmentKeyboardMediaAdapter(Glide.with(this), media -> {
if (callback != null) {
callback.onAttachmentMediaClicked(media);
}

View File

@@ -8,10 +8,11 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.RequestManager;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.ThumbnailView;
import org.thoughtcrime.securesms.mediasend.Media;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.adapter.StableIdGenerator;
@@ -22,15 +23,15 @@ import java.util.concurrent.TimeUnit;
class AttachmentKeyboardMediaAdapter extends RecyclerView.Adapter<AttachmentKeyboardMediaAdapter.MediaViewHolder> {
private final List<Media> media;
private final GlideRequests glideRequests;
private final RequestManager requestManager;
private final Listener listener;
private final StableIdGenerator<Media> idGenerator;
AttachmentKeyboardMediaAdapter(@NonNull GlideRequests glideRequests, @NonNull Listener listener) {
this.glideRequests = glideRequests;
this.listener = listener;
this.media = new ArrayList<>();
this.idGenerator = new StableIdGenerator<>();
AttachmentKeyboardMediaAdapter(@NonNull RequestManager requestManager, @NonNull Listener listener) {
this.requestManager = requestManager;
this.listener = listener;
this.media = new ArrayList<>();
this.idGenerator = new StableIdGenerator<>();
setHasStableIds(true);
}
@@ -47,7 +48,7 @@ class AttachmentKeyboardMediaAdapter extends RecyclerView.Adapter<AttachmentKeyb
@Override
public void onBindViewHolder(@NonNull MediaViewHolder holder, int position) {
holder.bind(media.get(position), glideRequests, listener);
holder.bind(media.get(position), requestManager, listener);
}
@Override
@@ -83,8 +84,8 @@ class AttachmentKeyboardMediaAdapter extends RecyclerView.Adapter<AttachmentKeyb
videoIcon = itemView.findViewById(R.id.attachment_keyboard_item_video_icon);
}
void bind(@NonNull Media media, @NonNull GlideRequests glideRequests, @NonNull Listener listener) {
image.setImageResource(glideRequests, media.getUri(), 400, 400);
void bind(@NonNull Media media, @NonNull RequestManager requestManager, @NonNull Listener listener) {
image.setImageResource(requestManager, media.getUri(), 400, 400);
image.setOnClickListener(v -> listener.onMediaClicked(media));
duration.setVisibility(View.GONE);

View File

@@ -39,6 +39,8 @@ import androidx.recyclerview.widget.RecyclerView;
import androidx.media3.common.MediaItem;
import com.bumptech.glide.RequestManager;
import org.signal.core.util.logging.Log;
import org.signal.paging.PagingController;
import org.thoughtcrime.securesms.BindableConversationItem;
@@ -50,7 +52,6 @@ import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4Playable;
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4PlaybackPolicyEnforcer;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.CachedInflater;
import org.thoughtcrime.securesms.util.DateUtils;
@@ -99,7 +100,7 @@ public class ConversationAdapter
private final ItemClickListener clickListener;
private final Context context;
private final LifecycleOwner lifecycleOwner;
private final GlideRequests glideRequests;
private final RequestManager requestManager;
private final Locale locale;
private final Set<MultiselectPart> selected;
private final Calendar calendar;
@@ -119,7 +120,7 @@ public class ConversationAdapter
public ConversationAdapter(@NonNull Context context,
@NonNull LifecycleOwner lifecycleOwner,
@NonNull GlideRequests glideRequests,
@NonNull RequestManager requestManager,
@NonNull Locale locale,
@Nullable ItemClickListener clickListener,
boolean hasWallpaper,
@@ -137,10 +138,10 @@ public class ConversationAdapter
}
});
this.lifecycleOwner = lifecycleOwner;
this.context = context;
this.lifecycleOwner = lifecycleOwner;
this.context = context;
this.glideRequests = glideRequests;
this.requestManager = requestManager;
this.locale = locale;
this.clickListener = clickListener;
this.selected = new HashSet<>();
@@ -276,7 +277,7 @@ public class ConversationAdapter
conversationMessage,
Optional.ofNullable(previousMessage != null ? previousMessage.getMessageRecord() : null),
Optional.ofNullable(nextMessage != null ? nextMessage.getMessageRecord() : null),
glideRequests,
requestManager,
locale,
selected,
conversationMessage.getThreadRecipient(),

View File

@@ -15,6 +15,8 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import androidx.core.view.ViewKt;
import com.bumptech.glide.RequestManager;
import org.signal.core.util.DimensionUnit;
import org.signal.core.util.concurrent.SignalExecutors;
import org.thoughtcrime.securesms.R;
@@ -23,7 +25,6 @@ import org.thoughtcrime.securesms.contacts.avatars.FallbackContactPhoto;
import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto;
import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.databinding.ConversationHeaderViewBinding;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.ContextUtil;
import org.thoughtcrime.securesms.util.LongClickMovementMethod;
@@ -60,8 +61,8 @@ public class ConversationHeaderView extends ConstraintLayout {
}
}
public void setAvatar(@NonNull GlideRequests requests, @Nullable Recipient recipient) {
binding.messageRequestAvatar.setAvatar(requests, recipient, false);
public void setAvatar(@NonNull RequestManager requestManager, @Nullable Recipient recipient) {
binding.messageRequestAvatar.setAvatar(requestManager, recipient, false);
if (recipient != null && recipient.shouldBlurAvatar() && recipient.getContactPhoto() != null) {
binding.messageRequestAvatarTapToView.setVisibility(VISIBLE);

View File

@@ -60,6 +60,7 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.media3.common.MediaItem;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.RequestManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.common.collect.Sets;
@@ -123,7 +124,6 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.mediapreview.MediaIntentFactory;
import org.thoughtcrime.securesms.mediapreview.MediaPreviewCache;
import org.thoughtcrime.securesms.mediapreview.MediaPreviewV2Fragment;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.mms.ImageSlide;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.mms.Slide;
@@ -199,7 +199,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
private Locale locale;
private boolean groupThread;
private LiveRecipient author;
private GlideRequests glideRequests;
private RequestManager requestManager;
private Optional<MessageRecord> previousMessage;
private ConversationItemDisplayMode displayMode;
@@ -364,7 +364,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
@NonNull ConversationMessage conversationMessage,
@NonNull Optional<MessageRecord> previousMessageRecord,
@NonNull Optional<MessageRecord> nextMessageRecord,
@NonNull GlideRequests glideRequests,
@NonNull RequestManager requestManager,
@NonNull Locale locale,
@NonNull Set<MultiselectPart> batchSelected,
@NonNull Recipient conversationRecipient,
@@ -386,7 +386,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
this.messageRecord = conversationMessage.getMessageRecord();
this.nextMessageRecord = nextMessageRecord;
this.locale = locale;
this.glideRequests = glideRequests;
this.requestManager = requestManager;
this.batchSelected = batchSelected;
this.conversationRecipient = conversationRecipient.live();
this.groupThread = conversationRecipient.isGroup();
@@ -716,7 +716,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
bodyBubble.setVideoPlayerProjection(null);
bodyBubble.setQuoteViewProjection(null);
glideRequests = null;
requestManager = null;
}
@Override
@@ -1131,7 +1131,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
if (joinCallLinkStub.resolved()) joinCallLinkStub.get().setVisibility(View.GONE);
paymentViewStub.setVisibility(View.GONE);
sharedContactStub.get().setContact(((MmsMessageRecord) messageRecord).getSharedContacts().get(0), glideRequests, locale);
sharedContactStub.get().setContact(((MmsMessageRecord) messageRecord).getSharedContacts().get(0), requestManager, locale);
sharedContactStub.get().setEventListener(sharedContactEventListener);
sharedContactStub.get().setOnClickListener(sharedContactClickListener);
sharedContactStub.get().setOnLongClickListener(passthroughClickListener);
@@ -1174,14 +1174,14 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
mediaThumbnailStub.require().setVisibility(VISIBLE);
mediaThumbnailStub.require().setMinimumThumbnailWidth(readDimen(R.dimen.media_bubble_min_width_with_content));
mediaThumbnailStub.require().setMaximumThumbnailHeight(readDimen(R.dimen.media_bubble_max_height));
mediaThumbnailStub.require().setImageResource(glideRequests, Collections.singletonList(new ImageSlide(linkPreview.getThumbnail().get())), showControls, false);
mediaThumbnailStub.require().setImageResource(requestManager, Collections.singletonList(new ImageSlide(linkPreview.getThumbnail().get())), showControls, false);
mediaThumbnailStub.require().setThumbnailClickListener(new LinkPreviewThumbnailClickListener());
mediaThumbnailStub.require().setStartTransferClickListener(downloadClickListener);
mediaThumbnailStub.require().setCancelTransferClickListener(attachmentCancelClickListener);
mediaThumbnailStub.require().setPlayVideoClickListener(playVideoClickListener);
mediaThumbnailStub.require().setOnLongClickListener(passthroughClickListener);
linkPreviewStub.get().setLinkPreview(glideRequests, linkPreview, false);
linkPreviewStub.get().setLinkPreview(requestManager, linkPreview, false);
setThumbnailCorners(messageRecord, previousRecord, nextRecord, isGroupThread);
setLinkPreviewCorners(messageRecord, previousRecord, nextRecord, isGroupThread, true);
@@ -1190,7 +1190,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
ViewUtil.updateLayoutParamsIfNonNull(groupSenderHolder, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ViewUtil.setTopMargin(linkPreviewStub.get(), 0);
} else {
linkPreviewStub.get().setLinkPreview(glideRequests, linkPreview, true, !isContentCondensed(), displayMode.getScheduleMessageMode());
linkPreviewStub.get().setLinkPreview(requestManager, linkPreview, true, !isContentCondensed(), displayMode.getScheduleMessageMode());
linkPreviewStub.get().setDownloadClickedListener(downloadClickListener);
setLinkPreviewCorners(messageRecord, previousRecord, nextRecord, isGroupThread, false);
ViewUtil.updateLayoutParams(bodyText, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
@@ -1277,11 +1277,11 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
if (hasSticker(messageRecord)) {
//noinspection ConstantConditions
stickerStub.get().setSlide(glideRequests, ((MmsMessageRecord) messageRecord).getSlideDeck().getStickerSlide());
stickerStub.get().setSlide(requestManager, ((MmsMessageRecord) messageRecord).getSlideDeck().getStickerSlide());
stickerStub.get().setThumbnailClickListener(new StickerClickListener());
} else {
//noinspection ConstantConditions
stickerStub.get().setSlide(glideRequests, ((MmsMessageRecord) messageRecord).getSlideDeck().getThumbnailSlide());
stickerStub.get().setSlide(requestManager, ((MmsMessageRecord) messageRecord).getSlideDeck().getThumbnailSlide());
stickerStub.get().setThumbnailClickListener((v, slide) -> performClick());
}
@@ -1319,7 +1319,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
mediaThumbnailStub.require().setOnLongClickListener(passthroughClickListener);
mediaThumbnailStub.require().setOnClickListener(passthroughClickListener);
mediaThumbnailStub.require().showShade(messageRecord.isDisplayBodyEmpty(getContext()) && !hasExtraText(messageRecord));
mediaThumbnailStub.require().setImageResource(glideRequests,
mediaThumbnailStub.require().setImageResource(requestManager,
thumbnailSlides,
showControls,
false);
@@ -1366,7 +1366,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
paymentViewStub.setVisibility(View.GONE);
MmsMessageRecord mmsMessageRecord = (MmsMessageRecord) messageRecord;
giftViewStub.get().setGiftBadge(glideRequests, Objects.requireNonNull(mmsMessageRecord.getGiftBadge()), messageRecord.isOutgoing(), giftMessageViewCallback, messageRecord.getFromRecipient(), messageRecord.getToRecipient());
giftViewStub.get().setGiftBadge(requestManager, Objects.requireNonNull(mmsMessageRecord.getGiftBadge()), messageRecord.isOutgoing(), giftMessageViewCallback, messageRecord.getFromRecipient(), messageRecord.getToRecipient());
giftViewStub.get().setVisibility(VISIBLE);
footer.setVisibility(VISIBLE);
@@ -1537,8 +1537,8 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
}
});
contactPhoto.setAvatar(glideRequests, recipient, false);
badgeImageView.setBadgeFromRecipient(recipient, glideRequests);
contactPhoto.setAvatar(requestManager, recipient, false);
badgeImageView.setBadgeFromRecipient(recipient, requestManager);
badgeImageView.setClickable(false);
}
@@ -1601,7 +1601,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
}
//noinspection ConstantConditions
quoteView.setQuote(glideRequests,
quoteView.setQuote(requestManager,
quote.getId(),
Recipient.live(quote.getAuthor()).get(),
quote.getDisplayText(),

View File

@@ -8,24 +8,24 @@ import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.RequestManager;
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.database.model.StickerRecord;
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri;
import org.thoughtcrime.securesms.mms.GlideRequests;
import java.util.ArrayList;
import java.util.List;
public class ConversationStickerSuggestionAdapter extends RecyclerView.Adapter<ConversationStickerSuggestionAdapter.StickerSuggestionViewHolder> {
private final GlideRequests glideRequests;
private final RequestManager requestManager;
private final EventListener eventListener;
private final List<StickerRecord> stickers;
public ConversationStickerSuggestionAdapter(@NonNull GlideRequests glideRequests, @NonNull EventListener eventListener) {
this.glideRequests = glideRequests;
public ConversationStickerSuggestionAdapter(@NonNull RequestManager requestManager, @NonNull EventListener eventListener) {
this.requestManager = requestManager;
this.eventListener = eventListener;
this.stickers = new ArrayList<>();
}
@@ -37,7 +37,7 @@ public class ConversationStickerSuggestionAdapter extends RecyclerView.Adapter<C
@Override
public void onBindViewHolder(@NonNull StickerSuggestionViewHolder viewHolder, int i) {
viewHolder.bind(glideRequests, eventListener, stickers.get(i));
viewHolder.bind(requestManager, eventListener, stickers.get(i));
}
@Override
@@ -65,8 +65,8 @@ public class ConversationStickerSuggestionAdapter extends RecyclerView.Adapter<C
this.image = itemView.findViewById(R.id.sticker_suggestion_item_image);
}
void bind(@NonNull GlideRequests glideRequests, @NonNull EventListener eventListener, @NonNull StickerRecord sticker) {
glideRequests.load(new DecryptableUri(sticker.getUri()))
void bind(@NonNull RequestManager requestManager, @NonNull EventListener eventListener, @NonNull StickerRecord sticker) {
requestManager.load(new DecryptableUri(sticker.getUri()))
.transition(DrawableTransitionOptions.withCrossFade())
.fitCenter()
.into(image);

View File

@@ -17,12 +17,12 @@ import androidx.core.content.ContextCompat;
import com.annimon.stream.Collectors;
import com.annimon.stream.Stream;
import com.bumptech.glide.RequestManager;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.avatar.view.AvatarView;
import org.thoughtcrime.securesms.badges.BadgeImageView;
import org.thoughtcrime.securesms.database.model.StoryViewState;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.ContextUtil;
import org.thoughtcrime.securesms.util.DrawableUtil;
@@ -106,7 +106,7 @@ public class ConversationTitleView extends ConstraintLayout {
updateSubtitleVisibility();
}
public void setTitle(@NonNull GlideRequests glideRequests, @Nullable Recipient recipient) {
public void setTitle(@NonNull RequestManager requestManager, @Nullable Recipient recipient) {
isSelf = recipient != null && recipient.isSelf();
this.subtitleContainer.setVisibility(View.VISIBLE);
@@ -144,7 +144,7 @@ public class ConversationTitleView extends ConstraintLayout {
title.setCompoundDrawablesRelativeWithIntrinsicBounds(startDrawable, null, endDrawable, null);
if (recipient != null) {
this.avatar.displayChatAvatar(glideRequests, recipient, false);
this.avatar.displayChatAvatar(requestManager, recipient, false);
}
if (recipient == null || recipient.isSelf()) {

View File

@@ -20,6 +20,7 @@ import androidx.lifecycle.LiveData;
import androidx.lifecycle.Observer;
import androidx.lifecycle.Transformations;
import com.bumptech.glide.RequestManager;
import com.google.android.material.button.MaterialButton;
import com.google.common.collect.Sets;
@@ -37,7 +38,6 @@ import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.UpdateDescription;
import org.thoughtcrime.securesms.groups.LiveGroup;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.recipients.LiveRecipient;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.DateUtils;
@@ -116,7 +116,7 @@ public final class ConversationUpdateItem extends FrameLayout
@NonNull ConversationMessage conversationMessage,
@NonNull Optional<MessageRecord> previousMessageRecord,
@NonNull Optional<MessageRecord> nextMessageRecord,
@NonNull GlideRequests glideRequests,
@NonNull RequestManager requestManager,
@NonNull Locale locale,
@NonNull Set<MultiselectPart> batchSelected,
@NonNull Recipient conversationRecipient,

View File

@@ -12,6 +12,7 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.signal.core.util.StreamUtil
import org.signal.core.util.concurrent.LifecycleDisposable
@@ -38,7 +39,6 @@ import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ProjectionPlayerHolder
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ProjectionRecycler
import org.thoughtcrime.securesms.groups.GroupId
import org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange
import org.thoughtcrime.securesms.mms.GlideApp
import org.thoughtcrime.securesms.mms.PartAuthority
import org.thoughtcrime.securesms.mms.TextSlide
import org.thoughtcrime.securesms.recipients.Recipient
@@ -91,7 +91,7 @@ class ScheduledMessagesBottomSheet : FixedRoundedCornerBottomSheetDialogFragment
val colorizer = Colorizer()
messageAdapter = ConversationAdapter(requireContext(), viewLifecycleOwner, GlideApp.with(this), Locale.getDefault(), ConversationAdapterListener(), conversationRecipient.hasWallpaper(), colorizer).apply {
messageAdapter = ConversationAdapter(requireContext(), viewLifecycleOwner, Glide.with(this), Locale.getDefault(), ConversationAdapterListener(), conversationRecipient.hasWallpaper(), colorizer).apply {
setCondensedMode(ConversationItemDisplayMode.Condensed(scheduleMessageMode = true))
}

View File

@@ -4,6 +4,7 @@ import android.content.Context
import android.net.Uri
import android.text.Spannable
import android.text.SpannableString
import com.bumptech.glide.Glide
import io.reactivex.rxjava3.core.Maybe
import io.reactivex.rxjava3.schedulers.Schedulers
import org.signal.core.util.Base64
@@ -33,7 +34,6 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.keyboard.KeyboardUtil
import org.thoughtcrime.securesms.mediasend.Media
import org.thoughtcrime.securesms.mms.GifSlide
import org.thoughtcrime.securesms.mms.GlideApp
import org.thoughtcrime.securesms.mms.ImageSlide
import org.thoughtcrime.securesms.mms.PartAuthority
import org.thoughtcrime.securesms.mms.QuoteId
@@ -97,7 +97,7 @@ class DraftRepository(
}
if (shareMedia != null && shareContentType != null && borderless) {
val details = KeyboardUtil.getImageDetails(GlideApp.with(context), shareMedia)
val details = KeyboardUtil.getImageDetails(Glide.with(context), shareMedia)
if (details == null || !details.hasTransparency) {
return ShareOrDraftData.SetMedia(shareMedia, shareMediaType!!, null) to null

View File

@@ -10,6 +10,7 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import org.signal.core.util.concurrent.LifecycleDisposable
@@ -35,7 +36,6 @@ import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ProjectionRecycler
import org.thoughtcrime.securesms.groups.GroupId
import org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange
import org.thoughtcrime.securesms.linkpreview.LinkPreview
import org.thoughtcrime.securesms.mms.GlideApp
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.util.BottomSheetUtil
@@ -73,7 +73,7 @@ class MessageQuotesBottomSheet : FixedRoundedCornerBottomSheetDialogFragment() {
val colorizer = Colorizer()
messageAdapter = ConversationAdapter(requireContext(), viewLifecycleOwner, GlideApp.with(this), Locale.getDefault(), ConversationAdapterListener(), conversationRecipient.hasWallpaper(), colorizer).apply {
messageAdapter = ConversationAdapter(requireContext(), viewLifecycleOwner, Glide.with(this), Locale.getDefault(), ConversationAdapterListener(), conversationRecipient.hasWallpaper(), colorizer).apply {
setCondensedMode(ConversationItemDisplayMode.Condensed(scheduleMessageMode = false))
}

View File

@@ -10,6 +10,7 @@ import androidx.core.view.doOnNextLayout
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.bumptech.glide.Glide
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import io.reactivex.rxjava3.kotlin.subscribeBy
@@ -36,7 +37,6 @@ import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ProjectionPlayerHolder
import org.thoughtcrime.securesms.giph.mp4.GiphyMp4ProjectionRecycler
import org.thoughtcrime.securesms.groups.GroupId
import org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange
import org.thoughtcrime.securesms.mms.GlideApp
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.util.BottomSheetUtil
@@ -85,7 +85,7 @@ class EditMessageHistoryDialog : FixedRoundedCornerBottomSheetDialogFragment() {
val messageAdapter = ConversationAdapter(
requireContext(),
viewLifecycleOwner,
GlideApp.with(this),
Glide.with(this),
Locale.getDefault(),
ConversationAdapterListener(),
conversationRecipient.hasWallpaper(),

View File

@@ -13,6 +13,7 @@ import androidx.core.view.children
import androidx.lifecycle.LifecycleOwner
import androidx.media3.common.MediaItem
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.RequestManager
import org.signal.core.util.logging.Log
import org.signal.core.util.toOptional
import org.thoughtcrime.securesms.BindableConversationItem
@@ -50,7 +51,6 @@ import org.thoughtcrime.securesms.giph.mp4.GiphyMp4PlaybackPolicyEnforcer
import org.thoughtcrime.securesms.groups.v2.GroupDescriptionUtil
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.messagerequests.MessageRequestState
import org.thoughtcrime.securesms.mms.GlideRequests
import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.util.CachedInflater
@@ -63,7 +63,7 @@ import java.util.Optional
class ConversationAdapterV2(
private val lifecycleOwner: LifecycleOwner,
override val glideRequests: GlideRequests,
override val requestManager: RequestManager,
override val clickListener: ItemClickListener,
private var hasWallpaper: Boolean,
private val colorizer: Colorizer,
@@ -336,7 +336,7 @@ class ConversationAdapterV2(
model.conversationMessage,
previousMessage,
nextMessage,
glideRequests,
requestManager,
Locale.getDefault(),
_selected,
model.conversationMessage.threadRecipient,
@@ -364,7 +364,7 @@ class ConversationAdapterV2(
model.conversationMessage,
previousMessage,
nextMessage,
glideRequests,
requestManager,
Locale.getDefault(),
_selected,
model.conversationMessage.threadRecipient,
@@ -392,7 +392,7 @@ class ConversationAdapterV2(
model.conversationMessage,
previousMessage,
nextMessage,
glideRequests,
requestManager,
Locale.getDefault(),
_selected,
model.conversationMessage.threadRecipient,
@@ -420,7 +420,7 @@ class ConversationAdapterV2(
model.conversationMessage,
previousMessage,
nextMessage,
glideRequests,
requestManager,
Locale.getDefault(),
_selected,
model.conversationMessage.threadRecipient,
@@ -448,7 +448,7 @@ class ConversationAdapterV2(
model.conversationMessage,
previousMessage,
nextMessage,
glideRequests,
requestManager,
Locale.getDefault(),
_selected,
model.conversationMessage.threadRecipient,
@@ -569,7 +569,7 @@ class ConversationAdapterV2(
val (recipient, groupInfo, sharedGroups, messageRequestState) = model.recipientInfo
val isSelf = recipient.id == Recipient.self().id
conversationBanner.setAvatar(glideRequests, recipient)
conversationBanner.setAvatar(requestManager, recipient)
conversationBanner.showBackgroundBubble(recipient.hasWallpaper())
val title: String = conversationBanner.setTitle(recipient)
conversationBanner.setAbout(recipient)

View File

@@ -66,6 +66,7 @@ import androidx.recyclerview.widget.ConcatAdapter
import androidx.recyclerview.widget.ConversationLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.BaseTransientBottomBar.Duration
import com.google.android.material.snackbar.Snackbar
@@ -246,7 +247,6 @@ import org.thoughtcrime.securesms.messagerequests.MessageRequestState
import org.thoughtcrime.securesms.mms.AttachmentManager
import org.thoughtcrime.securesms.mms.AudioSlide
import org.thoughtcrime.securesms.mms.GifSlide
import org.thoughtcrime.securesms.mms.GlideApp
import org.thoughtcrime.securesms.mms.ImageSlide
import org.thoughtcrime.securesms.mms.MediaConstraints
import org.thoughtcrime.securesms.mms.QuoteModel
@@ -1203,7 +1203,7 @@ class ConversationFragment :
)
conversationActivityResultContracts.launchMediaEditor(listOf(media), recipientId, composeText.textTrimmed)
} else {
attachmentManager.setMedia(GlideApp.with(this), uri, mediaType, MediaConstraints.getPushMediaConstraints(), width, height)
attachmentManager.setMedia(Glide.with(this), uri, mediaType, MediaConstraints.getPushMediaConstraints(), width, height)
}
}
@@ -1299,7 +1299,7 @@ class ConversationFragment :
val titleView = binding.conversationTitleView.root
titleView.setTitle(GlideApp.with(this), recipient)
titleView.setTitle(Glide.with(this), recipient)
if (recipient.expiresInSeconds > 0) {
titleView.showExpiring(recipient)
} else {
@@ -1443,7 +1443,7 @@ class ConversationFragment :
is ShareOrDraftData.SetLocation -> attachmentManager.setLocation(data.location, MediaConstraints.getPushMediaConstraints())
is ShareOrDraftData.SetEditMessage -> {
composeText.setDraftText(data.draftText)
inputPanel.enterEditMessageMode(GlideApp.with(this), data.messageEdit, true)
inputPanel.enterEditMessageMode(Glide.with(this), data.messageEdit, true)
}
is ShareOrDraftData.SetMedia -> {
@@ -1531,7 +1531,7 @@ class ConversationFragment :
adapter = ConversationAdapterV2(
lifecycleOwner = viewLifecycleOwner,
glideRequests = GlideApp.with(this),
requestManager = Glide.with(this),
clickListener = ConversationItemClickListener(),
hasWallpaper = args.wallpaper != null,
colorizer = colorizer,
@@ -1539,7 +1539,7 @@ class ConversationFragment :
chatColorsDataProvider = viewModel::chatColorsSnapshot
)
typingIndicatorAdapter = ConversationTypingIndicatorAdapter(GlideApp.with(this))
typingIndicatorAdapter = ConversationTypingIndicatorAdapter(Glide.with(this))
scrollToPositionDelegate = ScrollToPositionDelegate(
recyclerView = binding.conversationItemRecycler,
@@ -1640,7 +1640,7 @@ class ConversationFragment :
} else if (state.hasLinks() && !state.linkPreview.isPresent) {
inputPanel.setLinkPreviewNoPreview(state.error)
} else {
inputPanel.setLinkPreview(GlideApp.with(this), state.linkPreview)
inputPanel.setLinkPreview(Glide.with(this), state.linkPreview)
}
updateToggleButtonState()
@@ -1853,7 +1853,7 @@ class ConversationFragment :
composeTextEventsListener?.typingStatusEnabled = false
composeText.setText("")
composeTextEventsListener?.typingStatusEnabled = true
attachmentManager.clear(GlideApp.with(this@ConversationFragment), false)
attachmentManager.clear(Glide.with(this@ConversationFragment), false)
inputPanel.clearQuote()
}
scrollToPositionDelegate.markListCommittedVersion()
@@ -2129,7 +2129,7 @@ class ConversationFragment :
val author = conversationMessage.messageRecord.fromRecipient
inputPanel.setQuote(
GlideApp.with(this),
Glide.with(this),
conversationMessage.messageRecord.dateSent,
author,
body,
@@ -2147,7 +2147,7 @@ class ConversationFragment :
viewModel.resolveMessageToEdit(conversationMessage)
.subscribeBy { updatedMessage ->
inputPanel.enterEditMessageMode(GlideApp.with(this), updatedMessage, false)
inputPanel.enterEditMessageMode(Glide.with(this), updatedMessage, false)
}
.addTo(disposables)
}
@@ -3120,7 +3120,7 @@ class ConversationFragment :
requireActivity().registerReceiver(pinnedShortcutReceiver, IntentFilter(ACTION_PINNED_SHORTCUT))
}
viewModel.getContactPhotoIcon(requireContext(), GlideApp.with(this@ConversationFragment))
viewModel.getContactPhotoIcon(requireContext(), Glide.with(this@ConversationFragment))
.subscribe { infoCompat ->
val intent = Intent(ACTION_PINNED_SHORTCUT)
val callback = PendingIntent.getBroadcast(requireContext(), 902, intent, PendingIntentFlags.mutable())

View File

@@ -13,6 +13,8 @@ import android.os.Build
import android.text.SpannableStringBuilder
import androidx.core.content.pm.ShortcutInfoCompat
import androidx.core.graphics.drawable.IconCompat
import com.bumptech.glide.Glide
import com.bumptech.glide.RequestManager
import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
@@ -75,8 +77,6 @@ import org.thoughtcrime.securesms.keyboard.KeyboardUtil
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.linkpreview.LinkPreview
import org.thoughtcrime.securesms.messagerequests.MessageRequestState
import org.thoughtcrime.securesms.mms.GlideApp
import org.thoughtcrime.securesms.mms.GlideRequests
import org.thoughtcrime.securesms.mms.OutgoingMessage
import org.thoughtcrime.securesms.mms.PartAuthority
import org.thoughtcrime.securesms.mms.QuoteModel
@@ -123,7 +123,7 @@ class ConversationRepository(
*/
fun getKeyboardImageDetails(uri: Uri): Maybe<KeyboardUtil.ImageDetails> {
return MaybeCompat.fromCallable {
KeyboardUtil.getImageDetails(GlideApp.with(applicationContext), uri)
KeyboardUtil.getImageDetails(Glide.with(applicationContext), uri)
}.subscribeOn(Schedulers.io())
}
@@ -474,12 +474,12 @@ class ConversationRepository(
.joinTo(buffer = SpannableStringBuilder(), separator = "\n")
}
fun getRecipientContactPhotoBitmap(context: Context, glideRequests: GlideRequests, recipient: Recipient): Single<ShortcutInfoCompat> {
fun getRecipientContactPhotoBitmap(context: Context, requestManager: RequestManager, recipient: Recipient): Single<ShortcutInfoCompat> {
val fallback = recipient.fallbackContactPhoto.asDrawable(context, recipient.avatarColor, false)
return Single
.create { emitter ->
glideRequests
requestManager
.asBitmap()
.load(recipient.contactPhoto)
.error(fallback)

View File

@@ -8,14 +8,14 @@ package org.thoughtcrime.securesms.conversation.v2
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.RequestManager
import org.signal.core.util.toInt
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.ConversationTypingView
import org.thoughtcrime.securesms.mms.GlideRequests
import org.thoughtcrime.securesms.recipients.Recipient
class ConversationTypingIndicatorAdapter(
private val glideRequests: GlideRequests
private val requestManager: RequestManager
) : RecyclerView.Adapter<ConversationTypingIndicatorAdapter.ViewHolder>() {
private var state: State = State()
@@ -42,16 +42,16 @@ class ConversationTypingIndicatorAdapter(
override fun getItemCount(): Int = state.typists.isNotEmpty().toInt()
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(glideRequests, state)
holder.bind(requestManager, state)
}
class ViewHolder(private val conversationTypingView: ConversationTypingView) : RecyclerView.ViewHolder(conversationTypingView) {
fun bind(
glideRequests: GlideRequests,
requestManager: RequestManager,
state: State
) {
conversationTypingView.setTypists(
glideRequests,
requestManager,
state.typists,
state.isGroupThread,
state.hasWallpaper

View File

@@ -11,6 +11,7 @@ import android.net.Uri
import android.os.Build
import androidx.core.content.pm.ShortcutInfoCompat
import androidx.lifecycle.ViewModel
import com.bumptech.glide.RequestManager
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.BackpressureStrategy
import io.reactivex.rxjava3.core.Completable
@@ -58,7 +59,6 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.linkpreview.LinkPreview
import org.thoughtcrime.securesms.messagerequests.MessageRequestRepository
import org.thoughtcrime.securesms.messagerequests.MessageRequestState
import org.thoughtcrime.securesms.mms.GlideRequests
import org.thoughtcrime.securesms.mms.QuoteModel
import org.thoughtcrime.securesms.mms.Slide
import org.thoughtcrime.securesms.mms.SlideDeck
@@ -348,9 +348,9 @@ class ConversationViewModel(
.addTo(disposables)
}
fun getContactPhotoIcon(context: Context, glideRequests: GlideRequests): Single<ShortcutInfoCompat> {
fun getContactPhotoIcon(context: Context, requestManager: RequestManager): Single<ShortcutInfoCompat> {
return recipient.firstOrError().flatMap {
repository.getRecipientContactPhotoBitmap(context, glideRequests, it)
repository.getRecipientContactPhotoBitmap(context, requestManager, it)
}
}

View File

@@ -5,19 +5,19 @@
package org.thoughtcrime.securesms.conversation.v2.items
import com.bumptech.glide.RequestManager
import org.thoughtcrime.securesms.conversation.ConversationAdapter
import org.thoughtcrime.securesms.conversation.ConversationItemDisplayMode
import org.thoughtcrime.securesms.conversation.colors.Colorizer
import org.thoughtcrime.securesms.conversation.mutiselect.MultiselectPart
import org.thoughtcrime.securesms.database.model.MessageRecord
import org.thoughtcrime.securesms.mms.GlideRequests
/**
* Describes the Adapter "context" that would normally have been
* visible to an inner class.
*/
interface V2ConversationContext {
val glideRequests: GlideRequests
val requestManager: RequestManager
val displayMode: ConversationItemDisplayMode
val clickListener: ConversationAdapter.ItemClickListener
val selectedItems: Set<MultiselectPart>

View File

@@ -77,7 +77,7 @@ class V2ConversationItemMediaViewHolder<Model : MappingModel<Model>>(
binding.quoteStub.visibility = View.VISIBLE
quoteView.setQuote(
conversationContext.glideRequests,
conversationContext.requestManager,
quote.id,
Recipient.live(quote.author).get(),
quote.displayText,

View File

@@ -531,8 +531,8 @@ open class V2ConversationItemTextOnlyViewHolder<Model : MappingModel<Model>>(
binding.senderBadge.visible = shape.isEndingShape
binding.senderName.text = sender.getDisplayName(context)
binding.senderPhoto.setAvatar(conversationContext.glideRequests, sender, false)
binding.senderBadge.setBadgeFromRecipient(sender, conversationContext.glideRequests)
binding.senderPhoto.setAvatar(conversationContext.requestManager, sender, false)
binding.senderBadge.setBadgeFromRecipient(sender, conversationContext.requestManager)
binding.senderPhoto.setOnClickListener {
conversationContext.clickListener.onGroupMemberClicked(
conversationMessage.messageRecord.fromRecipient.id,

View File

@@ -115,10 +115,10 @@ class V2ConversationItemThumbnail @JvmOverloads constructor(
thumbnailSlide = thumbnail
this.fastPreflightId = fastPreflightId
conversationContext.glideRequests.clear(this)
conversationContext.requestManager.clear(this)
if (placeholderTarget != null) {
conversationContext.glideRequests.clear(placeholderTarget)
conversationContext.requestManager.clear(placeholderTarget)
}
val thumbnailUri = thumbnail.uri
@@ -147,7 +147,7 @@ class V2ConversationItemThumbnail @JvmOverloads constructor(
if (thumbnailBlur != null) {
val placeholderTarget = PlaceholderTarget(this)
conversationContext
.glideRequests
.requestManager
.load(thumbnailBlur)
.centerInside()
.dontAnimate()
@@ -159,7 +159,7 @@ class V2ConversationItemThumbnail @JvmOverloads constructor(
if (thumbnailUri != null) {
conversationContext
.glideRequests
.requestManager
.load(DecryptableStreamUriLoader.DecryptableUri(thumbnailUri))
.centerInside()
.dontAnimate()