discord-jadx/app/src/main/java/com/discord/utilities/voice/VoiceEngineForegroundServic...

508 lines
28 KiB
Java

package com.discord.utilities.voice;
import android.app.Application;
import android.app.IntentService;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.net.wifi.WifiManager;
import android.os.Binder;
import android.os.IBinder;
import android.os.PowerManager;
import androidx.core.content.ContextCompat;
import c.a.d.n;
import c.d.b.a.a;
import com.discord.app.AppActivity;
import com.discord.app.AppComponent;
import com.discord.app.AppLog;
import com.discord.utilities.extensions.PendingIntentExtensionsKt;
import com.discord.utilities.logging.Logger;
import com.discord.utilities.rx.ObservableExtensionsKt;
import com.discord.utilities.system.SystemServiceExtensionsKt;
import com.discord.widgets.stage.StageChannelAPI;
import com.discord.widgets.stage.StageChannelNotifications;
import com.discord.widgets.voice.fullscreen.WidgetCallFullscreen;
import d0.z.d.m;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.DefaultConstructorMarker;
import rx.Observable;
import rx.subjects.PublishSubject;
import rx.subjects.Subject;
/* compiled from: VoiceEngineForegroundService.kt */
public final class VoiceEngineForegroundService extends IntentService implements AppComponent {
public static final Companion Companion = new Companion(null);
private static final String LOG_TAG = "DiscordVoiceService";
private static final int NOTIFICATION_ID = 101;
private static final long WAKELOCK_TIMEOUT = 7200000;
private static Function0<Unit> onDisconnect = VoiceEngineForegroundService$Companion$onDisconnect$1.INSTANCE;
private static Function0<Unit> onToggleSelfDeafen = VoiceEngineForegroundService$Companion$onToggleSelfDeafen$1.INSTANCE;
private static Function0<Unit> onToggleSelfMute = VoiceEngineForegroundService$Companion$onToggleSelfMute$1.INSTANCE;
private final LocalBinder binder = new LocalBinder(this);
private final CallSoundManager ringManager = new CallSoundManager(this, null, null, 6, null);
private ScreenShareManager screenShareManager;
private final Subject<Void, Void> unsubscribeSignal;
private PowerManager.WakeLock wakeLockPartial;
private PowerManager.WakeLock wakeLockProximity;
private WifiManager.WifiLock wakeLockWifi;
/* compiled from: VoiceEngineForegroundService.kt */
public static final class Companion {
/* compiled from: VoiceEngineForegroundService.kt */
public interface ACTION {
public static final C0177Companion Companion = C0177Companion.$$INSTANCE;
public static final String DISCONNECT = "com.discord.utilities.voice.action.disconnect";
public static final String MAIN_ACTION = "com.discord.utilities.voice.action.main";
public static final String STAGE_INVITE_ACCEPT = "com.discord.utilities.voice.action.stage_invite_accept";
public static final String STAGE_INVITE_DECLINE = "com.discord.utilities.voice.action.stage_invite_decline";
public static final String START_FOREGROUND = "com.discord.utilities.voice.action.start_foreground";
public static final String START_STREAM = "com.discord.utilities.voice.action.start_stream";
public static final String STOP_SERVICE = "com.discord.utilities.voice.action.stop";
public static final String STOP_STREAM = "com.discord.utilities.voice.action.stop_stream";
public static final String TOGGLE_DEAFENED = "com.discord.utilities.voice.action.toggle_deafened";
public static final String TOGGLE_MUTED = "com.discord.utilities.voice.action.toggle_muted";
/* compiled from: VoiceEngineForegroundService.kt */
/* renamed from: com.discord.utilities.voice.VoiceEngineForegroundService$Companion$ACTION$Companion reason: collision with other inner class name */
public static final class C0177Companion {
public static final /* synthetic */ C0177Companion $$INSTANCE = new C0177Companion();
public static final String DISCONNECT = "com.discord.utilities.voice.action.disconnect";
public static final String MAIN_ACTION = "com.discord.utilities.voice.action.main";
public static final String STAGE_INVITE_ACCEPT = "com.discord.utilities.voice.action.stage_invite_accept";
public static final String STAGE_INVITE_DECLINE = "com.discord.utilities.voice.action.stage_invite_decline";
public static final String START_FOREGROUND = "com.discord.utilities.voice.action.start_foreground";
public static final String START_STREAM = "com.discord.utilities.voice.action.start_stream";
public static final String STOP_SERVICE = "com.discord.utilities.voice.action.stop";
public static final String STOP_STREAM = "com.discord.utilities.voice.action.stop_stream";
public static final String TOGGLE_DEAFENED = "com.discord.utilities.voice.action.toggle_deafened";
public static final String TOGGLE_MUTED = "com.discord.utilities.voice.action.toggle_muted";
private C0177Companion() {
}
}
}
/* compiled from: VoiceEngineForegroundService.kt */
public interface EXTRA {
public static final String CHANNEL_ID = "com.discord.utilities.voice.extra.channel_id";
public static final C0178Companion Companion = C0178Companion.$$INSTANCE;
public static final String GUILD_ID = "com.discord.utilities.voice.extra.guild_id";
public static final String ITEM_CAN_SPEAK = "com.discord.utilities.voice.extra.item_can_speak";
public static final String ITEM_DEAFENED = "com.discord.utilities.voice.extra.item_deafened";
public static final String ITEM_MUTED = "com.discord.utilities.voice.extra.item_muted";
public static final String ITEM_STREAMING = "com.discord.utilities.voice.extra.item_streaming";
public static final String PROXIMITY_LOCK_ENABLED = "com.discord.utilities.voice.extra.proximity_lock_enabled";
public static final String TITLE = "com.discord.utilities.voice.extra.title";
public static final String TITLE_SUBTEXT = "com.discord.utilities.voice.extra.title_subtext";
/* compiled from: VoiceEngineForegroundService.kt */
/* renamed from: com.discord.utilities.voice.VoiceEngineForegroundService$Companion$EXTRA$Companion reason: collision with other inner class name */
public static final class C0178Companion {
public static final /* synthetic */ C0178Companion $$INSTANCE = new C0178Companion();
public static final String CHANNEL_ID = "com.discord.utilities.voice.extra.channel_id";
public static final String GUILD_ID = "com.discord.utilities.voice.extra.guild_id";
public static final String ITEM_CAN_SPEAK = "com.discord.utilities.voice.extra.item_can_speak";
public static final String ITEM_DEAFENED = "com.discord.utilities.voice.extra.item_deafened";
public static final String ITEM_MUTED = "com.discord.utilities.voice.extra.item_muted";
public static final String ITEM_STREAMING = "com.discord.utilities.voice.extra.item_streaming";
public static final String PROXIMITY_LOCK_ENABLED = "com.discord.utilities.voice.extra.proximity_lock_enabled";
public static final String TITLE = "com.discord.utilities.voice.extra.title";
public static final String TITLE_SUBTEXT = "com.discord.utilities.voice.extra.title_subtext";
private C0178Companion() {
}
}
}
private Companion() {
}
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
public final Function0<Unit> getOnDisconnect() {
return VoiceEngineForegroundService.access$getOnDisconnect$cp();
}
public final Function0<Unit> getOnToggleSelfDeafen() {
return VoiceEngineForegroundService.access$getOnToggleSelfDeafen$cp();
}
public final Function0<Unit> getOnToggleSelfMute() {
return VoiceEngineForegroundService.access$getOnToggleSelfMute$cp();
}
public final void setOnDisconnect(Function0<Unit> function0) {
m.checkNotNullParameter(function0, "<set-?>");
VoiceEngineForegroundService.access$setOnDisconnect$cp(function0);
}
public final void setOnToggleSelfDeafen(Function0<Unit> function0) {
m.checkNotNullParameter(function0, "<set-?>");
VoiceEngineForegroundService.access$setOnToggleSelfDeafen$cp(function0);
}
public final void setOnToggleSelfMute(Function0<Unit> function0) {
m.checkNotNullParameter(function0, "<set-?>");
VoiceEngineForegroundService.access$setOnToggleSelfMute$cp(function0);
}
public final Intent stageInviteAckIntent(Context context, long j, boolean z2) {
m.checkNotNullParameter(context, "context");
boolean z3 = ContextCompat.checkSelfPermission(context, "android.permission.RECORD_AUDIO") == 0;
if (!z2 || z3) {
Intent intent = new Intent(context, VoiceEngineForegroundService.class);
intent.setAction(z2 ? "com.discord.utilities.voice.action.stage_invite_accept" : "com.discord.utilities.voice.action.stage_invite_decline");
intent.putExtra("com.discord.utilities.voice.extra.channel_id", j);
return intent;
}
Intent intent2 = new Intent(context, WidgetCallFullscreen.class);
intent2.putExtra("com.discord.intent.extra.EXTRA_CHANNEL_ID", j);
return intent2;
}
public final PendingIntent stageInviteAckPendingIntent(Context context, long j, boolean z2) {
m.checkNotNullParameter(context, "context");
PendingIntent service = PendingIntent.getService(context, 0, stageInviteAckIntent(context, j, z2), PendingIntentExtensionsKt.immutablePendingIntentFlag(1207959552));
m.checkNotNullExpressionValue(service, "PendingIntent.getService…AG_UPDATE_CURRENT),\n )");
return service;
}
public final void startForegroundAndBind(Connection connection, CharSequence charSequence, CharSequence charSequence2, boolean z2, boolean z3, boolean z4, long j, Long l, boolean z5, boolean z6) {
m.checkNotNullParameter(connection, "connection");
m.checkNotNullParameter(charSequence, "title");
m.checkNotNullParameter(charSequence2, "subtitle");
try {
Logger.v$default(AppLog.g, "DiscordVoiceService", "Bind service connection.", null, 4, null);
Context context = connection.getContext();
Intent intent = new Intent(connection.getContext(), VoiceEngineForegroundService.class);
intent.setAction("com.discord.utilities.voice.action.start_foreground");
intent.putExtra("com.discord.utilities.voice.extra.title", charSequence);
intent.putExtra("com.discord.utilities.voice.extra.title_subtext", charSequence2);
intent.putExtra("com.discord.utilities.voice.extra.item_muted", z2);
intent.putExtra("com.discord.utilities.voice.extra.item_deafened", z3);
intent.putExtra("com.discord.utilities.voice.extra.item_streaming", z4);
intent.putExtra("com.discord.utilities.voice.extra.item_can_speak", z6);
intent.putExtra("com.discord.utilities.voice.extra.proximity_lock_enabled", z5);
intent.putExtra("com.discord.utilities.voice.extra.channel_id", j);
intent.putExtra("com.discord.utilities.voice.extra.guild_id", l);
context.startService(intent);
connection.getContext().bindService(new Intent(connection.getContext(), VoiceEngineForegroundService.class), connection.getConnection(), 1);
} catch (Exception e) {
AppLog.g.v("DiscordVoiceService", "Unable to bind service connection.", e);
}
}
public final void startStream(Connection connection, Intent intent) {
m.checkNotNullParameter(connection, "connection");
m.checkNotNullParameter(intent, "permissionIntent");
Context context = connection.getContext();
Intent intent2 = new Intent(context, VoiceEngineForegroundService.class);
intent2.setAction("com.discord.utilities.voice.action.start_stream");
intent2.putExtra("android.intent.extra.INTENT", intent);
context.startService(intent2);
}
public final void stopForegroundAndUnbind(Connection connection) {
m.checkNotNullParameter(connection, "connection");
try {
if (connection.getService() != null && !connection.isUnbinding()) {
Logger.v$default(AppLog.g, "DiscordVoiceService", "Unbind service connection.", null, 4, null);
connection.setUnbinding(true);
Context context = connection.getContext();
Intent intent = new Intent(connection.getContext(), VoiceEngineForegroundService.class);
intent.setAction("com.discord.utilities.voice.action.stop");
context.startService(intent);
connection.getContext().unbindService(connection.getConnection());
}
} catch (Exception e) {
AppLog.g.v("DiscordVoiceService", "Unable to unbind service connection.", e);
}
}
public final void stopStream(Connection connection) {
m.checkNotNullParameter(connection, "connection");
Context context = connection.getContext();
Intent intent = new Intent(context, VoiceEngineForegroundService.class);
intent.setAction("com.discord.utilities.voice.action.stop_stream");
context.startService(intent);
}
}
/* compiled from: VoiceEngineForegroundService.kt */
public static final class Connection {
private final ServiceConnection connection = new VoiceEngineForegroundService$Connection$connection$1(this);
private final Context context;
private boolean isUnbinding;
private VoiceEngineForegroundService service;
public Connection(Context context) {
m.checkNotNullParameter(context, "context");
this.context = context;
}
public static final /* synthetic */ VoiceEngineForegroundService access$getService$p(Connection connection) {
return connection.service;
}
public static final /* synthetic */ void access$setService$p(Connection connection, VoiceEngineForegroundService voiceEngineForegroundService) {
connection.service = voiceEngineForegroundService;
}
public final ServiceConnection getConnection() {
return this.connection;
}
public final Context getContext() {
return this.context;
}
public final VoiceEngineForegroundService getService() {
return this.service;
}
public final synchronized boolean isUnbinding() {
return this.isUnbinding;
}
public final synchronized void setUnbinding(boolean z2) {
this.isUnbinding = z2;
}
}
/* compiled from: VoiceEngineForegroundService.kt */
public static final class LocalBinder extends Binder {
private final VoiceEngineForegroundService service;
public LocalBinder(VoiceEngineForegroundService voiceEngineForegroundService) {
this.service = voiceEngineForegroundService;
}
public final VoiceEngineForegroundService getService() {
return this.service;
}
}
public VoiceEngineForegroundService() {
super("VoiceEngineForegroundService");
PublishSubject k0 = PublishSubject.k0();
m.checkNotNullExpressionValue(k0, "PublishSubject.create()");
this.unsubscribeSignal = k0;
}
public static final /* synthetic */ Function0 access$getOnDisconnect$cp() {
return onDisconnect;
}
public static final /* synthetic */ Function0 access$getOnToggleSelfDeafen$cp() {
return onToggleSelfDeafen;
}
public static final /* synthetic */ Function0 access$getOnToggleSelfMute$cp() {
return onToggleSelfMute;
}
public static final /* synthetic */ void access$setOnDisconnect$cp(Function0 function0) {
onDisconnect = function0;
}
public static final /* synthetic */ void access$setOnToggleSelfDeafen$cp(Function0 function0) {
onToggleSelfDeafen = function0;
}
public static final /* synthetic */ void access$setOnToggleSelfMute$cp(Function0 function0) {
onToggleSelfMute = function0;
}
private final void ackStageInvite(Intent intent, boolean z2) {
long longExtra = intent.getLongExtra("com.discord.utilities.voice.extra.channel_id", 0);
Observable<Void> ackInvitationToSpeak = StageChannelAPI.INSTANCE.ackInvitationToSpeak(longExtra, z2);
if (ackInvitationToSpeak != null) {
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui(ObservableExtensionsKt.restSubscribeOn$default(ackInvitationToSpeak, false, 1, null)), VoiceEngineForegroundService.class, (Context) null, (Function1) null, new VoiceEngineForegroundService$ackStageInvite$1(longExtra), (Function0) null, (Function0) null, new VoiceEngineForegroundService$ackStageInvite$2(this, z2, longExtra), 54, (Object) null);
} else {
Logger.w$default(AppLog.g, "DiscordVoiceService", a.o("Unable to ack stage invite for unknown channel ", longExtra), null, 4, null);
}
}
@Override // com.discord.app.AppComponent
public Subject<Void, Void> getUnsubscribeSignal() {
return this.unsubscribeSignal;
}
@Override // android.app.IntentService, android.app.Service
public IBinder onBind(Intent intent) {
m.checkNotNullParameter(intent, "intent");
return this.binder;
}
@Override // android.app.IntentService, android.app.Service
public void onCreate() {
super.onCreate();
Logger.v$default(AppLog.g, "DiscordVoiceService", "Service created.", null, 4, null);
n.f44c.a(this);
Application application = getApplication();
m.checkNotNullExpressionValue(application, "application");
WifiManager.WifiLock createWifiLock$default = SystemServiceExtensionsKt.createWifiLock$default(application, false, 0, null, 7, null);
this.wakeLockWifi = createWifiLock$default;
if (createWifiLock$default != null) {
createWifiLock$default.acquire();
}
Application application2 = getApplication();
m.checkNotNullExpressionValue(application2, "application");
PowerManager.WakeLock createPartialWakeLock$default = SystemServiceExtensionsKt.createPartialWakeLock$default(application2, false, null, 3, null);
this.wakeLockPartial = createPartialWakeLock$default;
if (createPartialWakeLock$default != null) {
createPartialWakeLock$default.acquire(7200000);
}
Application application3 = getApplication();
m.checkNotNullExpressionValue(application3, "application");
PowerManager.WakeLock createProximityScreenWakeLock$default = SystemServiceExtensionsKt.createProximityScreenWakeLock$default(application3, false, null, 3, null);
this.wakeLockProximity = createProximityScreenWakeLock$default;
if (createProximityScreenWakeLock$default != null) {
createProximityScreenWakeLock$default.acquire(7200000);
}
}
@Override // android.app.IntentService, android.app.Service
public void onDestroy() {
super.onDestroy();
Logger.v$default(AppLog.g, "DiscordVoiceService", "Service destroyed.", null, 4, null);
StageChannelNotifications.Companion.getINSTANCE().onInviteToSpeakRescinded();
n.f44c.b(this);
WifiManager.WifiLock wifiLock = this.wakeLockWifi;
if (wifiLock != null) {
wifiLock.release();
}
PowerManager.WakeLock wakeLock = this.wakeLockPartial;
if (wakeLock != null) {
wakeLock.release();
}
PowerManager.WakeLock wakeLock2 = this.wakeLockProximity;
if (wakeLock2 != null) {
wakeLock2.release();
}
}
/* JADX WARNING: Code restructure failed: missing block: B:36:0x00af, code lost:
if ((!d0.z.d.m.areEqual(r0 != null ? r0.getGuildId() : null, r4)) != false) goto L_0x00b1;
*/
/* JADX WARNING: Removed duplicated region for block: B:44:0x00ee */
/* JADX WARNING: Removed duplicated region for block: B:45:0x00f1 */
/* JADX WARNING: Removed duplicated region for block: B:48:0x00f9 */
/* JADX WARNING: Removed duplicated region for block: B:49:0x00fe */
@Override // android.app.IntentService
public void onHandleIntent(Intent intent) {
String action;
ScreenShareManager screenShareManager;
Intent intent2;
ScreenShareManager screenShareManager2;
String str;
Long l;
if (intent != null && (action = intent.getAction()) != null) {
m.checkNotNullExpressionValue(action, "intent?.action ?: return");
Logger.v$default(AppLog.g, "DiscordVoiceService", a.s("Received action: ", action), null, 4, null);
switch (action.hashCode()) {
case -2024885008:
if (action.equals("com.discord.utilities.voice.action.toggle_deafened")) {
onToggleSelfDeafen.mo1invoke();
return;
}
return;
case -1497102229:
if (action.equals("com.discord.utilities.voice.action.stop")) {
stopForeground(true);
stopSelf();
return;
}
return;
case -1440499724:
if (action.equals("com.discord.utilities.voice.action.stage_invite_accept")) {
ackStageInvite(intent, true);
return;
}
return;
case -712636972:
if (action.equals("com.discord.utilities.voice.action.stop_stream") && (screenShareManager = this.screenShareManager) != null) {
screenShareManager.stopStream();
return;
}
return;
case -702962107:
if (action.equals("com.discord.utilities.voice.action.disconnect")) {
onDisconnect.mo1invoke();
return;
}
return;
case 162053478:
if (action.equals("com.discord.utilities.voice.action.start_stream") && (intent2 = (Intent) intent.getParcelableExtra("android.intent.extra.INTENT")) != null && (screenShareManager2 = this.screenShareManager) != null) {
screenShareManager2.startStream(intent2);
return;
}
return;
case 541488169:
if (action.equals("com.discord.utilities.voice.action.start_foreground")) {
if (intent.getBooleanExtra("com.discord.utilities.voice.extra.proximity_lock_enabled", false)) {
PowerManager.WakeLock wakeLock = this.wakeLockProximity;
if (wakeLock != null) {
wakeLock.acquire(7200000);
}
} else {
PowerManager.WakeLock wakeLock2 = this.wakeLockProximity;
if (wakeLock2 != null) {
wakeLock2.release();
}
}
Long l2 = (Long) intent.getSerializableExtra("com.discord.utilities.voice.extra.guild_id");
Long l3 = (Long) intent.getSerializableExtra("com.discord.utilities.voice.extra.channel_id");
if (l3 != null) {
this.ringManager.subscribeToStoreState(l3.longValue());
ScreenShareManager screenShareManager3 = this.screenShareManager;
if (!(!m.areEqual(screenShareManager3 != null ? Long.valueOf(screenShareManager3.getChannelId()) : null, l3))) {
ScreenShareManager screenShareManager4 = this.screenShareManager;
break;
}
ScreenShareManager screenShareManager5 = this.screenShareManager;
if (screenShareManager5 != null) {
screenShareManager5.release();
}
l = l3;
str = "com.discord.utilities.voice.action.toggle_muted";
this.screenShareManager = new ScreenShareManager(this, l3.longValue(), l2, null, null, null, null, null, null, null, 1016, null);
startForeground(101, VoiceEngineNotificationBuilder.INSTANCE.buildNotification(this, "com.discord.utilities.voice.action.main", "com.discord.utilities.voice.action.disconnect", "com.discord.utilities.voice.action.stop_stream", !intent.getBooleanExtra("com.discord.utilities.voice.extra.item_can_speak", true) ? str : null, "com.discord.utilities.voice.action.toggle_deafened", VoiceEngineForegroundService.class, "Media Connections", l == null ? l.longValue() : 0, intent.getCharSequenceExtra("com.discord.utilities.voice.extra.title"), intent.getCharSequenceExtra("com.discord.utilities.voice.extra.title_subtext"), AppActivity.Main.class, intent.getBooleanExtra("com.discord.utilities.voice.extra.item_streaming", false), intent.getBooleanExtra("com.discord.utilities.voice.extra.item_muted", false), intent.getBooleanExtra("com.discord.utilities.voice.extra.item_deafened", false)));
return;
}
l = l3;
str = "com.discord.utilities.voice.action.toggle_muted";
if (!intent.getBooleanExtra("com.discord.utilities.voice.extra.item_can_speak", true)) {
}
startForeground(101, VoiceEngineNotificationBuilder.INSTANCE.buildNotification(this, "com.discord.utilities.voice.action.main", "com.discord.utilities.voice.action.disconnect", "com.discord.utilities.voice.action.stop_stream", !intent.getBooleanExtra("com.discord.utilities.voice.extra.item_can_speak", true) ? str : null, "com.discord.utilities.voice.action.toggle_deafened", VoiceEngineForegroundService.class, "Media Connections", l == null ? l.longValue() : 0, intent.getCharSequenceExtra("com.discord.utilities.voice.extra.title"), intent.getCharSequenceExtra("com.discord.utilities.voice.extra.title_subtext"), AppActivity.Main.class, intent.getBooleanExtra("com.discord.utilities.voice.extra.item_streaming", false), intent.getBooleanExtra("com.discord.utilities.voice.extra.item_muted", false), intent.getBooleanExtra("com.discord.utilities.voice.extra.item_deafened", false)));
return;
}
break;
case 1014152586:
if (action.equals("com.discord.utilities.voice.action.stage_invite_decline")) {
ackStageInvite(intent, false);
break;
}
break;
case 1602537513:
if (action.equals("com.discord.utilities.voice.action.toggle_muted")) {
onToggleSelfMute.mo1invoke();
break;
}
break;
}
}
}
@Override // android.app.Service
public boolean onUnbind(Intent intent) {
getUnsubscribeSignal().onNext(null);
return super.onUnbind(intent);
}
}