381 lines
19 KiB
Java
381 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.u(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 K = a.K("State(activeStream=");
|
|
K.append(this.activeStream);
|
|
K.append(", rtcConnection=");
|
|
K.append(this.rtcConnection);
|
|
K.append(", meId=");
|
|
return a.A(K, 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.v.a) TooltipManager.a.b.getValue(), (Set) TooltipManager.a.f2122c.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.u(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.u(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;
|
|
}
|
|
}
|
|
}
|