discord-jadx/app/src/main/java/com/discord/utilities/fcm/NotificationActions.java

296 lines
17 KiB
Java

package com.discord.utilities.fcm;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationManagerCompat;
import androidx.core.app.RemoteInput;
import androidx.work.BackoffPolicy;
import androidx.work.Constraints;
import androidx.work.Data;
import androidx.work.NetworkType;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkManager;
import c.d.b.a.a;
import com.discord.app.AppLog;
import com.discord.app.DiscordConnectService;
import com.discord.utilities.logging.Logger;
import com.discord.workers.CallActionWorker;
import com.discord.workers.MessageAckWorker;
import com.discord.workers.MessageSendWorker;
import com.discord.workers.TimedMuteWorker;
import d0.g0.s;
import d0.g0.t;
import d0.o;
import d0.t.h0;
import d0.z.d.m;
import java.util.concurrent.TimeUnit;
import kotlin.Pair;
import kotlin.jvm.internal.DefaultConstructorMarker;
/* compiled from: NotificationActions.kt */
public final class NotificationActions extends BroadcastReceiver {
public static final Companion Companion = new Companion(null);
private static final String NOTIFICATION_CHANNEL_ID = "com.discord.NOTIFICATION_DELETED_CHANNEL_ID";
private static final String NOTIFICATION_ID = "com.discord.NOTIFICATION_ID";
/* compiled from: NotificationActions.kt */
public static final class Companion {
private Companion() {
}
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
public final Intent callAction(Context context, long j, long j2, boolean z2) {
m.checkNotNullParameter(context, "context");
String str = z2 ? "accept" : "decline";
return new Intent("com.discord.intent.action.ENQUEUE_WORK", Uri.parse("discord://action/channel/call/" + str + "?channelId=" + j + "&messageId=" + j2), context, NotificationActions.class);
}
public final Intent cancel(Context context, int i) {
m.checkNotNullParameter(context, "context");
Intent putExtra = new Intent("com.discord.intent.action.NOTIFICATION_CANCEL", Uri.parse("discord://action/notif/cancel?id=" + i), context, NotificationActions.class).putExtra("com.discord.NOTIFICATION_ID", i);
m.checkNotNullExpressionValue(putExtra, "Intent(\n Intent…ATION_ID, notificationId)");
return putExtra;
}
public final Intent delete(Context context, long j) {
m.checkNotNullParameter(context, "context");
Intent putExtra = new Intent("com.discord.intent.action.NOTIFICATION_DELETED", Uri.parse("discord://action/notif/delete?channelId=" + j), context, NotificationActions.class).putExtra("com.discord.NOTIFICATION_DELETED_CHANNEL_ID", j);
m.checkNotNullExpressionValue(putExtra, "Intent(\n Intent…ON_CHANNEL_ID, channelId)");
return putExtra;
}
public final Intent directReply(Context context, long j, CharSequence charSequence) {
m.checkNotNullParameter(context, "context");
Intent intent = new Intent("com.discord.intent.action.ENQUEUE_WORK", Uri.parse("discord://action/message/reply?channelId=" + j), context, NotificationActions.class);
intent.putExtra("com.discord.intent.extra.EXTRA_CHANNEL_NAME", charSequence);
return intent;
}
public final Intent markAsRead(Context context, long j, long j2) {
m.checkNotNullParameter(context, "context");
return new Intent("com.discord.intent.action.ENQUEUE_WORK", Uri.parse("discord://action/message/ack?channelId=" + j + "&messageId=" + j2), context, NotificationActions.class);
}
public final Intent timedMute(Context context, long j, long j2, long j3) {
m.checkNotNullParameter(context, "context");
return new Intent("com.discord.intent.action.ENQUEUE_WORK", Uri.parse("discord://action/channel/mute").buildUpon().appendQueryParameter("guildId", String.valueOf(j)).appendQueryParameter("channelId", String.valueOf(j2)).appendQueryParameter("until", String.valueOf(j3)).build(), context, NotificationActions.class);
}
}
private final void enqueueAckMessage(Context context, Intent intent) {
Long longOrNull;
Long longOrNull2;
Uri data = intent.getData();
if (data != null) {
m.checkNotNullExpressionValue(data, "intent.data ?: return");
String queryParameter = data.getQueryParameter("channelId");
if (queryParameter != null && (longOrNull = s.toLongOrNull(queryParameter)) != null) {
long longValue = longOrNull.longValue();
String queryParameter2 = data.getQueryParameter("messageId");
if (queryParameter2 != null && (longOrNull2 = s.toLongOrNull(queryParameter2)) != null) {
long longValue2 = longOrNull2.longValue();
m.checkNotNullParameter(context, "context");
Data build = new Data.Builder().putAll(h0.mapOf(o.to("com.discord.intent.extra.EXTRA_CHANNEL_ID", Long.valueOf(longValue)), o.to("com.discord.intent.extra.EXTRA_MESSAGE_ID", Long.valueOf(longValue2)))).build();
m.checkNotNullExpressionValue(build, "Data.Builder()\n … )\n .build()");
OneTimeWorkRequest build2 = new OneTimeWorkRequest.Builder(MessageAckWorker.class).setInputData(build).setBackoffCriteria(BackoffPolicy.LINEAR, 1, TimeUnit.SECONDS).addTag("message").addTag("ack").setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()).build();
m.checkNotNullExpressionValue(build2, "OneTimeWorkRequestBuilde… )\n .build()");
WorkManager.getInstance(context).enqueue(build2);
NotificationClient.clear$default(NotificationClient.INSTANCE, longValue, context, false, 4, null);
}
}
}
}
/* JADX DEBUG: Can't convert new array creation: APUT found in different block: 0x0075: APUT
(r8v1 kotlin.Pair[])
(1 ??[boolean, int, float, short, byte, char])
(wrap: kotlin.Pair : 0x0071: INVOKE (r0v4 kotlin.Pair) = ("com.discord.intent.extra.EXTRA_CHANNEL_NAME"), (r1v3 java.lang.String) type: STATIC call: d0.o.to(java.lang.Object, java.lang.Object):kotlin.Pair)
*/
private final void enqueueDirectReply(Context context, Intent intent) {
String queryParameter;
Long longOrNull;
CharSequence charSequence;
String obj;
Uri data = intent.getData();
if (data != null && (queryParameter = data.getQueryParameter("channelId")) != null && (longOrNull = s.toLongOrNull(queryParameter)) != null) {
long longValue = longOrNull.longValue();
CharSequence charSequenceExtra = intent.getCharSequenceExtra("com.discord.intent.extra.EXTRA_CHANNEL_NAME");
Bundle resultsFromIntent = RemoteInput.getResultsFromIntent(intent);
if (!(resultsFromIntent == null || (charSequence = resultsFromIntent.getCharSequence("discord_notif_text_input")) == null)) {
m.checkNotNullExpressionValue(charSequence, "it");
if (!(!t.isBlank(charSequence))) {
charSequence = null;
}
if (!(charSequence == null || (obj = charSequence.toString()) == null)) {
NotificationCache.INSTANCE.setIgnoreNextClearForAck(longValue, true);
m.checkNotNullParameter(context, "context");
m.checkNotNullParameter(obj, "message");
Data.Builder builder = new Data.Builder();
Pair[] pairArr = new Pair[5];
pairArr[0] = o.to("com.discord.intent.extra.EXTRA_CHANNEL_ID", Long.valueOf(longValue));
pairArr[1] = o.to("com.discord.intent.extra.EXTRA_CHANNEL_NAME", charSequenceExtra != null ? charSequenceExtra.toString() : null);
pairArr[2] = o.to("com.discord.intent.extra.EXTRA_MESSAGE_ID", null);
pairArr[3] = o.to("MESSAGE_CONTENT", obj);
pairArr[4] = o.to("com.discord.intent.extra.EXTRA_STICKER_ID", null);
Data build = builder.putAll(h0.mapOf(pairArr)).build();
m.checkNotNullExpressionValue(build, "Data.Builder()\n … )\n .build()");
OneTimeWorkRequest build2 = new OneTimeWorkRequest.Builder(MessageSendWorker.class).setInputData(build).addTag("message").addTag("send").setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()).build();
m.checkNotNullExpressionValue(build2, "OneTimeWorkRequestBuilde… )\n .build()");
WorkManager.getInstance(context).enqueue(build2);
return;
}
}
NotificationClient.clear$default(NotificationClient.INSTANCE, longValue, context, false, 4, null);
}
}
private final void enqueueTimedMute(Context context, Intent intent) {
Long longOrNull;
Long longOrNull2;
Long longOrNull3;
Uri data = intent.getData();
if (data != null) {
m.checkNotNullExpressionValue(data, "intent.data ?: return");
String queryParameter = data.getQueryParameter("guildId");
if (queryParameter != null && (longOrNull = s.toLongOrNull(queryParameter)) != null) {
long longValue = longOrNull.longValue();
String queryParameter2 = data.getQueryParameter("channelId");
if (queryParameter2 != null && (longOrNull2 = s.toLongOrNull(queryParameter2)) != null) {
long longValue2 = longOrNull2.longValue();
String queryParameter3 = data.getQueryParameter("until");
if (queryParameter3 != null && (longOrNull3 = s.toLongOrNull(queryParameter3)) != null) {
long longValue3 = longOrNull3.longValue();
m.checkNotNullParameter(context, "context");
Data build = new Data.Builder().putAll(h0.mapOf(o.to("com.discord.intent.extra.EXTRA_GUILD_ID", Long.valueOf(longValue)), o.to("com.discord.intent.extra.EXTRA_CHANNEL_ID", Long.valueOf(longValue2)), o.to("com.discord.intent.extra.EXTRA_UNTIL_TIMESTAMP_MS", Long.valueOf(longValue3)))).build();
m.checkNotNullExpressionValue(build, "Data.Builder()\n … )\n .build()");
OneTimeWorkRequest build2 = new OneTimeWorkRequest.Builder(TimedMuteWorker.class).setInputData(build).setBackoffCriteria(BackoffPolicy.LINEAR, 1, TimeUnit.SECONDS).addTag("channel").addTag("mute").setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()).build();
m.checkNotNullExpressionValue(build2, "OneTimeWorkRequestBuilde… )\n .build()");
WorkManager.getInstance(context).enqueue(build2);
NotificationClient.clear$default(NotificationClient.INSTANCE, longValue2, context, false, 4, null);
}
}
}
}
}
@RequiresApi(24)
private final void executeCallAction(Context context, Intent intent, boolean z2) {
Long longOrNull;
Long longOrNull2;
Uri data = intent.getData();
if (data != null) {
m.checkNotNullExpressionValue(data, "intent.data ?: return");
String queryParameter = data.getQueryParameter("channelId");
if (queryParameter != null && (longOrNull = s.toLongOrNull(queryParameter)) != null) {
long longValue = longOrNull.longValue();
String queryParameter2 = data.getQueryParameter("messageId");
if (queryParameter2 != null && (longOrNull2 = s.toLongOrNull(queryParameter2)) != null) {
long longValue2 = longOrNull2.longValue();
if (z2) {
DiscordConnectService.i.b(context, longValue);
} else {
m.checkNotNullParameter(context, "context");
Data build = new Data.Builder().putAll(h0.mapOf(o.to("com.discord.intent.extra.EXTRA_CHANNEL_ID", Long.valueOf(longValue)), o.to("com.discord.intent.extra.EXTRA_MESSAGE_ID", Long.valueOf(longValue2)))).build();
m.checkNotNullExpressionValue(build, "Data.Builder()\n … )\n .build()");
BackoffPolicy backoffPolicy = BackoffPolicy.LINEAR;
TimeUnit timeUnit = TimeUnit.SECONDS;
OneTimeWorkRequest build2 = new OneTimeWorkRequest.Builder(CallActionWorker.class).setInputData(build).setBackoffCriteria(backoffPolicy, 1, timeUnit).addTag("call").addTag("decline").setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).setTriggerContentMaxDelay(10, timeUnit).build()).build();
m.checkNotNullExpressionValue(build2, "OneTimeWorkRequestBuilde… )\n .build()");
WorkManager.getInstance(context).enqueue(build2);
}
NotificationClient.clear$default(NotificationClient.INSTANCE, longValue, context, false, 4, null);
}
}
}
}
@RequiresApi(24)
public final void enqueue(Context context, Intent intent) {
m.checkNotNullParameter(context, "context");
m.checkNotNullParameter(intent, "intent");
Uri data = intent.getData();
if (!m.areEqual(data != null ? data.getAuthority() : null, "action")) {
data = null;
}
if (data != null) {
m.checkNotNullExpressionValue(data, "intent.data.takeIf { it?…y == \"action\" } ?: return");
String path = data.getPath();
if (path != null) {
switch (path.hashCode()) {
case -1030684332:
if (path.equals("/channel/mute")) {
enqueueTimedMute(context, intent);
return;
}
break;
case -581403885:
if (path.equals("/message/reply")) {
enqueueDirectReply(context, intent);
return;
}
break;
case 254025278:
if (path.equals("/channel/call/accept")) {
executeCallAction(context, intent, true);
return;
}
break;
case 897701618:
if (path.equals("/message/ack")) {
enqueueAckMessage(context, intent);
return;
}
break;
case 2004820096:
if (path.equals("/channel/call/decline")) {
executeCallAction(context, intent, false);
return;
}
break;
}
}
AppLog appLog = AppLog.g;
StringBuilder L = a.L("Unknown work action ");
L.append(data.getPath());
Logger.w$default(appLog, L.toString(), null, 2, null);
}
}
@Override // android.content.BroadcastReceiver
@RequiresApi(24)
public void onReceive(Context context, Intent intent) {
m.checkNotNullParameter(context, "context");
m.checkNotNullParameter(intent, "intent");
AppLog.i("Got notification action: " + intent);
String action = intent.getAction();
if (action != null) {
int hashCode = action.hashCode();
if (hashCode != -1599864135) {
if (hashCode != -1350900838) {
if (hashCode == -26919171 && action.equals("com.discord.intent.action.ENQUEUE_WORK")) {
enqueue(context, intent);
}
} else if (action.equals("com.discord.intent.action.NOTIFICATION_DELETED")) {
AppLog.i("Got notification deleted: " + intent);
Bundle extras = intent.getExtras();
if (extras != null) {
NotificationClient.clear$default(NotificationClient.INSTANCE, extras.getLong("com.discord.NOTIFICATION_DELETED_CHANNEL_ID"), context, false, 4, null);
}
}
} else if (action.equals("com.discord.intent.action.NOTIFICATION_CANCEL")) {
AppLog.i("Got notification cancel: " + intent);
Bundle extras2 = intent.getExtras();
if (extras2 != null) {
NotificationManagerCompat.from(context).cancel(extras2.getInt("com.discord.NOTIFICATION_ID"));
}
}
}
}
}