discord-jadx/app/src/main/java/com/discord/utilities/rx/LeadingEdgeThrottle.java

179 lines
6.1 KiB
Java

package com.discord.utilities.rx;
import androidx.recyclerview.widget.RecyclerView;
import c.q.a.k.a;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.Scheduler;
import rx.Subscriber;
import rx.functions.Action0;
import rx.observers.SerializedSubscriber;
import rx.subscriptions.SerialSubscription;
public class LeadingEdgeThrottle<T> implements Observable.b<T, T> {
public final Scheduler scheduler;
public final long timeInMilliseconds;
/* renamed from: com.discord.utilities.rx.LeadingEdgeThrottle$1 reason: invalid class name */
public class AnonymousClass1 extends Subscriber<T> {
public long lastOnNext = -1;
public final Subscriber<?> self = this;
public final DebounceState<T> state = new DebounceState<>();
public final /* synthetic */ SerializedSubscriber val$s;
public final /* synthetic */ SerialSubscription val$serial;
public final /* synthetic */ Scheduler.Worker val$worker;
/* renamed from: com.discord.utilities.rx.LeadingEdgeThrottle$1$1 reason: invalid class name */
public class AnonymousClass1 implements Action0 {
public final /* synthetic */ int val$index;
public AnonymousClass1(int i) {
this.val$index = i;
}
@Override // rx.functions.Action0
public void call() {
AnonymousClass1 r0 = AnonymousClass1.this;
r0.state.emit(this.val$index, r0.val$s, r0.self);
}
}
/* JADX INFO: super call moved to the top of the method (can break code semantics) */
public AnonymousClass1(Subscriber subscriber, SerializedSubscriber serializedSubscriber, SerialSubscription serialSubscription, Scheduler.Worker worker) {
super(subscriber);
this.val$s = serializedSubscriber;
this.val$serial = serialSubscription;
this.val$worker = worker;
}
@Override // j0.g
public void onCompleted() {
this.state.emitAndComplete(this.val$s, this);
}
@Override // j0.g
public void onError(Throwable th) {
this.val$s.i.onError(th);
unsubscribe();
this.state.clear();
}
@Override // j0.g
public void onNext(T t) {
Objects.requireNonNull(LeadingEdgeThrottle.this.scheduler);
long currentTimeMillis = System.currentTimeMillis();
int next = this.state.next(t);
long j = this.lastOnNext;
if (j == -1 || currentTimeMillis - j >= LeadingEdgeThrottle.this.timeInMilliseconds) {
this.lastOnNext = currentTimeMillis;
this.state.emit(next, this.val$s, this.self);
return;
}
this.val$serial.a(this.val$worker.b(new AnonymousClass1(next), LeadingEdgeThrottle.this.timeInMilliseconds, TimeUnit.MILLISECONDS));
}
@Override // rx.Subscriber
public void onStart() {
request(RecyclerView.FOREVER_NS);
}
}
public static final class DebounceState<T> {
public boolean emitting;
public boolean hasValue;
public int index;
public boolean terminate;
public T value;
public synchronized void clear() {
this.index++;
this.value = null;
this.hasValue = false;
}
public void emit(int i, Subscriber<T> subscriber, Subscriber<?> subscriber2) {
T t;
synchronized (this) {
if (!this.emitting && this.hasValue) {
if (i == this.index) {
t = this.value;
this.value = null;
this.hasValue = false;
this.emitting = true;
}
}
return;
}
try {
subscriber.onNext(t);
synchronized (this) {
if (!this.terminate) {
this.emitting = false;
} else {
subscriber.onCompleted();
}
}
} catch (Throwable th) {
a.b0(th, subscriber2, t);
}
}
public void emitAndComplete(Subscriber<T> subscriber, Subscriber<?> subscriber2) {
T t;
boolean z2;
synchronized (this) {
if (this.emitting) {
this.terminate = true;
return;
}
t = this.value;
z2 = this.hasValue;
this.value = null;
this.hasValue = false;
this.emitting = true;
}
if (z2) {
try {
subscriber.onNext(t);
} catch (Throwable th) {
a.b0(th, subscriber2, t);
return;
}
}
subscriber.onCompleted();
}
public synchronized int next(T t) {
int i;
this.value = t;
this.hasValue = true;
i = this.index + 1;
this.index = i;
return i;
}
}
public LeadingEdgeThrottle(long j, TimeUnit timeUnit) {
this(j, timeUnit, j0.p.a.a());
}
public LeadingEdgeThrottle(long j, TimeUnit timeUnit, Scheduler scheduler) {
this.timeInMilliseconds = timeUnit.toMillis(j);
this.scheduler = scheduler;
}
@Override // j0.k.b
public /* bridge */ /* synthetic */ Object call(Object obj) {
return call((Subscriber) ((Subscriber) obj));
}
public Subscriber<? super T> call(Subscriber<? super T> subscriber) {
Scheduler.Worker a = this.scheduler.a();
SerializedSubscriber serializedSubscriber = new SerializedSubscriber(subscriber);
SerialSubscription serialSubscription = new SerialSubscription();
serializedSubscriber.add(a);
serializedSubscriber.add(serialSubscription);
return new AnonymousClass1(subscriber, serializedSubscriber, serialSubscription, a);
}
}