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

382 lines
19 KiB
Java

package com.discord.utilities.voice;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import androidx.annotation.MainThread;
import c.a.j.a;
import c.d.b.a.a;
import com.discord.app.AppComponent;
import com.discord.app.AppLog;
import com.discord.models.domain.ModelApplicationStream;
import com.discord.rtcconnection.RtcConnection;
import com.discord.rtcconnection.mediaengine.ThumbnailEmitter;
import com.discord.stores.StoreApplicationStreaming;
import com.discord.stores.StoreRtcConnection;
import com.discord.stores.StoreStream;
import com.discord.stores.StoreStreamRtcConnection;
import com.discord.stores.StoreUser;
import com.discord.tooltips.TooltipManager;
import com.discord.utilities.images.ImageEncoder;
import com.discord.utilities.rest.RestAPI;
import com.discord.utilities.rx.ObservableExtensionsKt;
import d0.z.d.m;
import java.lang.ref.WeakReference;
import java.util.Set;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.DefaultConstructorMarker;
import rx.Observable;
import rx.subjects.BehaviorSubject;
import rx.subscriptions.CompositeSubscription;
/* compiled from: ScreenShareManager.kt */
public final class ScreenShareManager {
public static final Companion Companion = new Companion(null);
public static final int JPEG_QUALITY = 92;
public static final long PREVIEW_DELAY_MS = 5000;
public static final long PREVIEW_INTERVAL_MS = 300000;
public static final int THUMBNAIL_HEIGHT_PX = 288;
public static final int THUMBNAIL_WIDTH_PX = 512;
private final AppComponent appComponent;
private final long channelId;
private final CompositeSubscription compositeSubscription;
private final Long guildId;
private final ImageEncoder imageEncoder;
private State previousState;
private final RestAPI restAPI;
private Intent screenshareIntent;
private final StoreApplicationStreaming storeApplicationStreaming;
private final StoreRtcConnection storeRtcConnection;
private final StoreStreamRtcConnection storeStreamRtcConnection;
private final StoreUser storeUser;
private final BehaviorSubject<Bitmap> thumbnailBitmapSubject;
private final TooltipManager tooltipManager;
/* compiled from: ScreenShareManager.kt */
public static final class Companion {
private Companion() {
}
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
}
/* compiled from: ScreenShareManager.kt */
public final class RtcConnectionListener extends RtcConnection.b {
public RtcConnectionListener() {
}
@Override // com.discord.rtcconnection.RtcConnection.b, com.discord.rtcconnection.RtcConnection.c
public void onStateChange(RtcConnection.StateChange stateChange) {
m.checkNotNullParameter(stateChange, "stateChange");
RtcConnection.State state = stateChange.a;
if (m.areEqual(state, RtcConnection.State.f.a)) {
State access$getPreviousState$p = ScreenShareManager.access$getPreviousState$p(ScreenShareManager.this);
RtcConnection rtcConnection = access$getPreviousState$p != null ? access$getPreviousState$p.getRtcConnection() : null;
if (rtcConnection != null) {
rtcConnection.t(ScreenShareManager.access$getScreenshareIntent$p(ScreenShareManager.this), ScreenShareManager.access$createThumbnailEmitter(ScreenShareManager.this));
ScreenShareManager.access$uploadScreenSharePreviews(ScreenShareManager.this);
}
} else if (state instanceof RtcConnection.State.d) {
ScreenShareManager.this.stopStream();
}
}
}
/* compiled from: ScreenShareManager.kt */
public static final class State {
private final StoreApplicationStreaming.ActiveApplicationStream activeStream;
private final Long meId;
private final RtcConnection rtcConnection;
public State(StoreApplicationStreaming.ActiveApplicationStream activeApplicationStream, RtcConnection rtcConnection, Long l) {
this.activeStream = activeApplicationStream;
this.rtcConnection = rtcConnection;
this.meId = l;
}
public static /* synthetic */ State copy$default(State state, StoreApplicationStreaming.ActiveApplicationStream activeApplicationStream, RtcConnection rtcConnection, Long l, int i, Object obj) {
if ((i & 1) != 0) {
activeApplicationStream = state.activeStream;
}
if ((i & 2) != 0) {
rtcConnection = state.rtcConnection;
}
if ((i & 4) != 0) {
l = state.meId;
}
return state.copy(activeApplicationStream, rtcConnection, l);
}
public final StoreApplicationStreaming.ActiveApplicationStream component1() {
return this.activeStream;
}
public final RtcConnection component2() {
return this.rtcConnection;
}
public final Long component3() {
return this.meId;
}
public final State copy(StoreApplicationStreaming.ActiveApplicationStream activeApplicationStream, RtcConnection rtcConnection, Long l) {
return new State(activeApplicationStream, rtcConnection, l);
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof State)) {
return false;
}
State state = (State) obj;
return m.areEqual(this.activeStream, state.activeStream) && m.areEqual(this.rtcConnection, state.rtcConnection) && m.areEqual(this.meId, state.meId);
}
public final StoreApplicationStreaming.ActiveApplicationStream getActiveStream() {
return this.activeStream;
}
public final Long getMeId() {
return this.meId;
}
public final RtcConnection getRtcConnection() {
return this.rtcConnection;
}
public int hashCode() {
StoreApplicationStreaming.ActiveApplicationStream activeApplicationStream = this.activeStream;
int i = 0;
int hashCode = (activeApplicationStream != null ? activeApplicationStream.hashCode() : 0) * 31;
RtcConnection rtcConnection = this.rtcConnection;
int hashCode2 = (hashCode + (rtcConnection != null ? rtcConnection.hashCode() : 0)) * 31;
Long l = this.meId;
if (l != null) {
i = l.hashCode();
}
return hashCode2 + i;
}
public String toString() {
StringBuilder L = a.L("State(activeStream=");
L.append(this.activeStream);
L.append(", rtcConnection=");
L.append(this.rtcConnection);
L.append(", meId=");
return a.C(L, this.meId, ")");
}
}
public ScreenShareManager(AppComponent appComponent, long j, Long l, StoreApplicationStreaming storeApplicationStreaming, StoreRtcConnection storeRtcConnection, StoreStreamRtcConnection storeStreamRtcConnection, StoreUser storeUser, RestAPI restAPI, ImageEncoder imageEncoder, TooltipManager tooltipManager) {
m.checkNotNullParameter(appComponent, "appComponent");
m.checkNotNullParameter(storeApplicationStreaming, "storeApplicationStreaming");
m.checkNotNullParameter(storeRtcConnection, "storeRtcConnection");
m.checkNotNullParameter(storeStreamRtcConnection, "storeStreamRtcConnection");
m.checkNotNullParameter(storeUser, "storeUser");
m.checkNotNullParameter(restAPI, "restAPI");
m.checkNotNullParameter(imageEncoder, "imageEncoder");
m.checkNotNullParameter(tooltipManager, "tooltipManager");
this.appComponent = appComponent;
this.channelId = j;
this.guildId = l;
this.storeApplicationStreaming = storeApplicationStreaming;
this.storeRtcConnection = storeRtcConnection;
this.storeStreamRtcConnection = storeStreamRtcConnection;
this.storeUser = storeUser;
this.restAPI = restAPI;
this.imageEncoder = imageEncoder;
this.tooltipManager = tooltipManager;
BehaviorSubject<Bitmap> k0 = BehaviorSubject.k0();
m.checkNotNullExpressionValue(k0, "BehaviorSubject.create()");
this.thumbnailBitmapSubject = k0;
this.compositeSubscription = new CompositeSubscription();
subscribeToStores();
}
/* JADX WARNING: Illegal instructions before constructor call */
public ScreenShareManager(AppComponent appComponent, long j, Long l, StoreApplicationStreaming storeApplicationStreaming, StoreRtcConnection storeRtcConnection, StoreStreamRtcConnection storeStreamRtcConnection, StoreUser storeUser, RestAPI restAPI, ImageEncoder imageEncoder, TooltipManager tooltipManager, int i, DefaultConstructorMarker defaultConstructorMarker) {
this(appComponent, j, l, r7, r8, r9, r10, r11, r12, r13);
TooltipManager tooltipManager2;
StoreApplicationStreaming applicationStreaming = (i & 8) != 0 ? StoreStream.Companion.getApplicationStreaming() : storeApplicationStreaming;
StoreRtcConnection rtcConnection = (i & 16) != 0 ? StoreStream.Companion.getRtcConnection() : storeRtcConnection;
StoreStreamRtcConnection streamRtcConnection = (i & 32) != 0 ? StoreStream.Companion.getStreamRtcConnection() : storeStreamRtcConnection;
StoreUser users = (i & 64) != 0 ? StoreStream.Companion.getUsers() : storeUser;
RestAPI api = (i & 128) != 0 ? RestAPI.Companion.getApi() : restAPI;
ImageEncoder imageEncoder2 = (i & 256) != 0 ? new ImageEncoder() : imageEncoder;
if ((i & 512) != 0) {
AppLog appLog = AppLog.g;
m.checkNotNullParameter(appLog, "logger");
WeakReference<c.a.j.a> weakReference = a.b.a;
TooltipManager tooltipManager3 = null;
c.a.j.a aVar = weakReference != null ? weakReference.get() : null;
if (aVar == null) {
aVar = new c.a.j.a(appLog);
a.b.a = new WeakReference<>(aVar);
}
TooltipManager.a aVar2 = TooltipManager.a.d;
m.checkNotNullParameter(aVar, "floatingViewManager");
WeakReference<TooltipManager> weakReference2 = TooltipManager.a.a;
tooltipManager3 = weakReference2 != null ? weakReference2.get() : tooltipManager3;
if (tooltipManager3 == null) {
TooltipManager tooltipManager4 = new TooltipManager((c.a.w.a) TooltipManager.a.b.getValue(), (Set) TooltipManager.a.f2108c.getValue(), 0, aVar, 4);
TooltipManager.a.a = new WeakReference<>(tooltipManager4);
tooltipManager3 = tooltipManager4;
}
tooltipManager2 = tooltipManager3;
} else {
tooltipManager2 = tooltipManager;
}
}
public static final /* synthetic */ ThumbnailEmitter access$createThumbnailEmitter(ScreenShareManager screenShareManager) {
return screenShareManager.createThumbnailEmitter();
}
public static final /* synthetic */ CompositeSubscription access$getCompositeSubscription$p(ScreenShareManager screenShareManager) {
return screenShareManager.compositeSubscription;
}
public static final /* synthetic */ ImageEncoder access$getImageEncoder$p(ScreenShareManager screenShareManager) {
return screenShareManager.imageEncoder;
}
public static final /* synthetic */ State access$getPreviousState$p(ScreenShareManager screenShareManager) {
return screenShareManager.previousState;
}
public static final /* synthetic */ RestAPI access$getRestAPI$p(ScreenShareManager screenShareManager) {
return screenShareManager.restAPI;
}
public static final /* synthetic */ Intent access$getScreenshareIntent$p(ScreenShareManager screenShareManager) {
return screenShareManager.screenshareIntent;
}
public static final /* synthetic */ BehaviorSubject access$getThumbnailBitmapSubject$p(ScreenShareManager screenShareManager) {
return screenShareManager.thumbnailBitmapSubject;
}
public static final /* synthetic */ void access$handleStartStream(ScreenShareManager screenShareManager, Intent intent) {
screenShareManager.handleStartStream(intent);
}
public static final /* synthetic */ void access$handleStateUpdate(ScreenShareManager screenShareManager, State state) {
screenShareManager.handleStateUpdate(state);
}
public static final /* synthetic */ void access$setPreviousState$p(ScreenShareManager screenShareManager, State state) {
screenShareManager.previousState = state;
}
public static final /* synthetic */ void access$setScreenshareIntent$p(ScreenShareManager screenShareManager, Intent intent) {
screenShareManager.screenshareIntent = intent;
}
public static final /* synthetic */ void access$uploadScreenSharePreviews(ScreenShareManager screenShareManager) {
screenShareManager.uploadScreenSharePreviews();
}
private final ThumbnailEmitter createThumbnailEmitter() {
return new ThumbnailEmitter(512, 288, 300000, 5000, null, new ScreenShareManager$createThumbnailEmitter$1(this), 16);
}
@MainThread
private final void handleStartStream(Intent intent) {
StoreApplicationStreaming.createStream$default(this.storeApplicationStreaming, this.channelId, this.guildId, null, 4, null);
this.screenshareIntent = intent;
}
/* JADX WARNING: Removed duplicated region for block: B:36:0x006c A[RETURN] */
/* JADX WARNING: Removed duplicated region for block: B:37:0x006d */
@MainThread
private final void handleStateUpdate(State state) {
boolean z2;
StoreApplicationStreaming.ActiveApplicationStream activeStream;
RtcConnection rtcConnection;
ModelApplicationStream stream;
RtcConnection rtcConnection2;
StoreApplicationStreaming.ActiveApplicationStream activeStream2;
ModelApplicationStream stream2;
ModelApplicationStream stream3;
State state2 = this.previousState;
RtcConnection rtcConnection3 = null;
boolean z3 = false;
if ((state2 != null ? state2.getActiveStream() : null) != null) {
StoreApplicationStreaming.ActiveApplicationStream activeStream3 = state.getActiveStream();
String encodedStreamKey = (activeStream3 == null || (stream3 = activeStream3.getStream()) == null) ? null : stream3.getEncodedStreamKey();
State state3 = this.previousState;
if (!m.areEqual(encodedStreamKey, (state3 == null || (activeStream2 = state3.getActiveStream()) == null || (stream2 = activeStream2.getStream()) == null) ? null : stream2.getEncodedStreamKey())) {
z2 = true;
if (z2 && (rtcConnection2 = state.getRtcConnection()) != null) {
rtcConnection2.t(null, null);
}
activeStream = state.getActiveStream();
if (!m.areEqual((activeStream != null || (stream = activeStream.getStream()) == null) ? null : Long.valueOf(stream.getOwnerId()), state.getMeId())) {
State state4 = this.previousState;
if (state4 != null) {
rtcConnection3 = state4.getRtcConnection();
}
if (rtcConnection3 == null && state.getRtcConnection() != null) {
z3 = true;
}
if (z3 && (rtcConnection = state.getRtcConnection()) != null) {
rtcConnection.c(new RtcConnectionListener());
}
this.previousState = state;
return;
}
return;
}
}
z2 = false;
rtcConnection2.t(null, null);
activeStream = state.getActiveStream();
if (!m.areEqual((activeStream != null || (stream = activeStream.getStream()) == null) ? null : Long.valueOf(stream.getOwnerId()), state.getMeId())) {
}
}
private final void subscribeToStores() {
Observable r = Observable.i(this.storeApplicationStreaming.observeActiveStream(), this.storeStreamRtcConnection.observeRtcConnection(), StoreUser.observeMe$default(this.storeUser, false, 1, null), ScreenShareManager$subscribeToStores$1.INSTANCE).r();
m.checkNotNullExpressionValue(r, "Observable.combineLatest… .distinctUntilChanged()");
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui$default(r, this.appComponent, null, 2, null), ScreenShareManager.class, (Context) null, new ScreenShareManager$subscribeToStores$2(this), (Function1) null, (Function0) null, (Function0) null, new ScreenShareManager$subscribeToStores$3(this), 58, (Object) null);
}
private final void uploadScreenSharePreviews() {
Observable<R> z2 = this.thumbnailBitmapSubject.z(new ScreenShareManager$uploadScreenSharePreviews$1(this));
m.checkNotNullExpressionValue(z2, "thumbnailBitmapSubject\n …>()\n }\n }");
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.restSubscribeOn$default(ObservableExtensionsKt.bindToComponentLifecycle(z2, this.appComponent), false, 1, null), ScreenShareManager.class, (Context) null, new ScreenShareManager$uploadScreenSharePreviews$2(this), (Function1) null, (Function0) null, (Function0) null, ScreenShareManager$uploadScreenSharePreviews$3.INSTANCE, 58, (Object) null);
}
public final long getChannelId() {
return this.channelId;
}
public final Long getGuildId() {
return this.guildId;
}
public final void release() {
this.compositeSubscription.unsubscribe();
}
public final void startStream(Intent intent) {
m.checkNotNullParameter(intent, "intent");
Observable<RtcConnection.Metadata> Z = this.storeRtcConnection.observeRtcConnectionMetadata().x(new ScreenShareManager$startStream$1(this)).Z(1);
m.checkNotNullExpressionValue(Z, "storeRtcConnection.obser… }\n .take(1)");
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.ui$default(Z, this.appComponent, null, 2, null), ScreenShareManager.class, (Context) null, new ScreenShareManager$startStream$2(this), (Function1) null, (Function0) null, (Function0) null, new ScreenShareManager$startStream$3(this, intent), 58, (Object) null);
}
public final void stopStream() {
StoreApplicationStreaming.ActiveApplicationStream activeStream;
State state = this.previousState;
if (state != null && (activeStream = state.getActiveStream()) != null) {
this.storeApplicationStreaming.stopStream(activeStream.getStream().getEncodedStreamKey());
this.screenshareIntent = null;
}
}
}