mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-19 16:19:33 +01:00
Add rendering and handling for various disabled input states in CFv2.
This commit is contained in:
@@ -6,6 +6,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.WorkerThread;
|
||||
import androidx.core.util.Consumer;
|
||||
|
||||
import org.signal.core.util.Result;
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroup;
|
||||
@@ -24,7 +25,6 @@ import org.thoughtcrime.securesms.jobs.MultiDeviceMessageRequestResponseJob;
|
||||
import org.thoughtcrime.securesms.jobs.ReportSpamJob;
|
||||
import org.thoughtcrime.securesms.jobs.SendViewedReceiptJob;
|
||||
import org.thoughtcrime.securesms.notifications.MarkReadReceiver;
|
||||
import org.thoughtcrime.securesms.recipients.LiveRecipient;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientUtil;
|
||||
@@ -38,6 +38,11 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import io.reactivex.rxjava3.core.Observable;
|
||||
import io.reactivex.rxjava3.core.Single;
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
import kotlin.Unit;
|
||||
|
||||
public final class MessageRequestRepository {
|
||||
|
||||
private static final String TAG = Log.tag(MessageRequestRepository.class);
|
||||
@@ -149,6 +154,19 @@ public final class MessageRequestRepository {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public @NonNull Single<Result<Unit, GroupChangeFailureReason>> acceptMessageRequest(@NonNull RecipientId recipientId, long threadId) {
|
||||
//noinspection CodeBlock2Expr
|
||||
return Single.<Result<Unit, GroupChangeFailureReason>>create(emitter -> {
|
||||
acceptMessageRequest(
|
||||
recipientId,
|
||||
threadId,
|
||||
() -> emitter.onSuccess(Result.success(Unit.INSTANCE)),
|
||||
reason -> emitter.onSuccess(Result.failure(reason))
|
||||
);
|
||||
}).subscribeOn(Schedulers.io());
|
||||
}
|
||||
|
||||
public void acceptMessageRequest(@NonNull RecipientId recipientId,
|
||||
long threadId,
|
||||
@NonNull Runnable onMessageRequestAccepted,
|
||||
@@ -192,6 +210,19 @@ public final class MessageRequestRepository {
|
||||
});
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public @NonNull Single<Result<Unit, GroupChangeFailureReason>> deleteMessageRequest(@NonNull RecipientId recipientId, long threadId) {
|
||||
//noinspection CodeBlock2Expr
|
||||
return Single.<Result<Unit, GroupChangeFailureReason>>create(emitter -> {
|
||||
deleteMessageRequest(
|
||||
recipientId,
|
||||
threadId,
|
||||
() -> emitter.onSuccess(Result.success(Unit.INSTANCE)),
|
||||
reason -> emitter.onSuccess(Result.failure(reason))
|
||||
);
|
||||
}).subscribeOn(Schedulers.io());
|
||||
}
|
||||
|
||||
public void deleteMessageRequest(@NonNull RecipientId recipientId,
|
||||
long threadId,
|
||||
@NonNull Runnable onMessageRequestDeleted,
|
||||
@@ -229,6 +260,18 @@ public final class MessageRequestRepository {
|
||||
});
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public @NonNull Single<Result<Unit, GroupChangeFailureReason>> blockMessageRequest(@NonNull RecipientId recipientId) {
|
||||
//noinspection CodeBlock2Expr
|
||||
return Single.<Result<Unit, GroupChangeFailureReason>>create(emitter -> {
|
||||
blockMessageRequest(
|
||||
recipientId,
|
||||
() -> emitter.onSuccess(Result.success(Unit.INSTANCE)),
|
||||
reason -> emitter.onSuccess(Result.failure(reason))
|
||||
);
|
||||
}).subscribeOn(Schedulers.io());
|
||||
}
|
||||
|
||||
public void blockMessageRequest(@NonNull RecipientId recipientId,
|
||||
@NonNull Runnable onMessageRequestBlocked,
|
||||
@NonNull GroupChangeErrorCallback error)
|
||||
@@ -252,6 +295,19 @@ public final class MessageRequestRepository {
|
||||
});
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public @NonNull Single<Result<Unit, GroupChangeFailureReason>> blockAndReportSpamMessageRequest(@NonNull RecipientId recipientId, long threadId) {
|
||||
//noinspection CodeBlock2Expr
|
||||
return Single.<Result<Unit, GroupChangeFailureReason>>create(emitter -> {
|
||||
blockAndReportSpamMessageRequest(
|
||||
recipientId,
|
||||
threadId,
|
||||
() -> emitter.onSuccess(Result.success(Unit.INSTANCE)),
|
||||
reason -> emitter.onSuccess(Result.failure(reason))
|
||||
);
|
||||
}).subscribeOn(Schedulers.io());
|
||||
}
|
||||
|
||||
public void blockAndReportSpamMessageRequest(@NonNull RecipientId recipientId,
|
||||
long threadId,
|
||||
@NonNull Runnable onMessageRequestBlocked,
|
||||
@@ -278,6 +334,17 @@ public final class MessageRequestRepository {
|
||||
});
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public @NonNull Single<Result<Unit, GroupChangeFailureReason>> unblockAndAccept(@NonNull RecipientId recipientId) {
|
||||
//noinspection CodeBlock2Expr
|
||||
return Single.<Result<Unit, GroupChangeFailureReason>>create(emitter -> {
|
||||
unblockAndAccept(
|
||||
recipientId,
|
||||
() -> emitter.onSuccess(Result.success(Unit.INSTANCE))
|
||||
);
|
||||
}).subscribeOn(Schedulers.io());
|
||||
}
|
||||
|
||||
public void unblockAndAccept(@NonNull RecipientId recipientId, @NonNull Runnable onMessageRequestUnblocked) {
|
||||
executor.execute(() -> {
|
||||
Recipient recipient = Recipient.resolved(recipientId);
|
||||
|
||||
@@ -43,6 +43,7 @@ public class MessageRequestsBottomView extends ConstraintLayout {
|
||||
|
||||
public MessageRequestsBottomView(Context context) {
|
||||
super(context);
|
||||
onFinishInflate();
|
||||
}
|
||||
|
||||
public MessageRequestsBottomView(Context context, AttributeSet attrs) {
|
||||
|
||||
Reference in New Issue
Block a user