mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-24 10:51:27 +01:00
Group link preview and info display bottom sheet.
This commit is contained in:
committed by
Greyson Parrelli
parent
477bb45df7
commit
09d167c16d
@@ -1,6 +1,7 @@
|
||||
package org.thoughtcrime.securesms.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
@@ -67,13 +68,22 @@ public final class AvatarUtil {
|
||||
public static void loadIconIntoImageView(@NonNull Recipient recipient, @NonNull ImageView target) {
|
||||
Context context = target.getContext();
|
||||
|
||||
request(GlideApp.with(context).asDrawable(), context, recipient).into(target);
|
||||
requestCircle(GlideApp.with(context).asDrawable(), context, recipient).into(target);
|
||||
}
|
||||
|
||||
public static Bitmap loadIconBitmapSquare(@NonNull Context context,
|
||||
@NonNull Recipient recipient,
|
||||
int width,
|
||||
int height)
|
||||
throws ExecutionException, InterruptedException
|
||||
{
|
||||
return requestSquare(GlideApp.with(context).asBitmap(), context, recipient).submit(width, height).get();
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
public static IconCompat getIconForNotification(@NonNull Context context, @NonNull Recipient recipient) {
|
||||
try {
|
||||
return IconCompat.createWithBitmap(request(GlideApp.with(context).asBitmap(), context, recipient).submit().get());
|
||||
return IconCompat.createWithBitmap(requestCircle(GlideApp.with(context).asBitmap(), context, recipient).submit().get());
|
||||
} catch (ExecutionException | InterruptedException e) {
|
||||
return null;
|
||||
}
|
||||
@@ -88,10 +98,17 @@ public final class AvatarUtil {
|
||||
.diskCacheStrategy(DiskCacheStrategy.ALL);
|
||||
}
|
||||
|
||||
private static <T> GlideRequest<T> requestCircle(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient) {
|
||||
return request(glideRequest, context, recipient).circleCrop();
|
||||
}
|
||||
|
||||
private static <T> GlideRequest<T> requestSquare(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient) {
|
||||
return request(glideRequest, context, recipient).centerCrop();
|
||||
}
|
||||
|
||||
private static <T> GlideRequest<T> request(@NonNull GlideRequest<T> glideRequest, @NonNull Context context, @NonNull Recipient recipient) {
|
||||
return glideRequest.load(new ProfileContactPhoto(recipient, recipient.getProfileAvatar()))
|
||||
.error(getFallback(context, recipient))
|
||||
.circleCrop()
|
||||
.diskCacheStrategy(DiskCacheStrategy.ALL);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,9 @@ import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.WebRtcCallActivity;
|
||||
import org.thoughtcrime.securesms.conversation.ConversationActivity;
|
||||
import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||
import org.thoughtcrime.securesms.database.GroupDatabase;
|
||||
import org.thoughtcrime.securesms.groups.GroupId;
|
||||
import org.thoughtcrime.securesms.groups.ui.invitesandrequests.joining.GroupJoinBottomSheetDialogFragment;
|
||||
import org.thoughtcrime.securesms.groups.ui.invitesandrequests.joining.GroupJoinUpdateRequiredBottomSheetDialogFragment;
|
||||
import org.thoughtcrime.securesms.groups.v2.GroupInviteLinkUrl;
|
||||
import org.thoughtcrime.securesms.logging.Log;
|
||||
@@ -194,19 +196,22 @@ public class CommunicationActions {
|
||||
{
|
||||
GroupId.V2 groupId = GroupId.v2(groupInviteLinkUrl.getGroupMasterKey());
|
||||
|
||||
SimpleTask.run(SignalExecutors.BOUNDED, () ->
|
||||
DatabaseFactory.getGroupDatabase(activity)
|
||||
.getGroup(groupId)
|
||||
.transform(groupRecord -> Recipient.resolved(groupRecord.getRecipientId()))
|
||||
.orNull(),
|
||||
recipient -> {
|
||||
if (recipient != null) {
|
||||
CommunicationActions.startConversation(activity, recipient, null);
|
||||
Toast.makeText(activity, R.string.GroupJoinBottomSheetDialogFragment_you_are_already_a_member, Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
GroupJoinUpdateRequiredBottomSheetDialogFragment.show(activity.getSupportFragmentManager());
|
||||
}
|
||||
});
|
||||
SimpleTask.run(SignalExecutors.BOUNDED, () -> {
|
||||
GroupDatabase.GroupRecord group = DatabaseFactory.getGroupDatabase(activity)
|
||||
.getGroup(groupId)
|
||||
.orNull();
|
||||
|
||||
return group != null && group.isActive() ? Recipient.resolved(group.getRecipientId())
|
||||
: null;
|
||||
},
|
||||
recipient -> {
|
||||
if (recipient != null) {
|
||||
CommunicationActions.startConversation(activity, recipient, null);
|
||||
Toast.makeText(activity, R.string.GroupJoinBottomSheetDialogFragment_you_are_already_a_member, Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
GroupJoinBottomSheetDialogFragment.show(activity.getSupportFragmentManager(), groupInviteLinkUrl);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void startInsecureCallInternal(@NonNull Activity activity, @NonNull Recipient recipient) {
|
||||
|
||||
@@ -30,15 +30,16 @@ import android.os.Build.VERSION_CODES;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.provider.Telephony;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresPermission;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.TextUtils;
|
||||
import android.text.style.StyleSpan;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresPermission;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.google.android.mms.pdu_alt.CharacterSets;
|
||||
import com.google.android.mms.pdu_alt.EncodedStringValue;
|
||||
@@ -339,6 +340,10 @@ public class Util {
|
||||
return Optional.fromNullable(simCountryIso != null ? simCountryIso.toUpperCase() : null);
|
||||
}
|
||||
|
||||
public static @NonNull <T> T firstNonNull(@Nullable T optional, @NonNull T fallback) {
|
||||
return optional != null ? optional : fallback;
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
public static @NonNull <T> T firstNonNull(T ... ts) {
|
||||
for (T t : ts) {
|
||||
|
||||
Reference in New Issue
Block a user