Signal-Android/app/src/main/java/org/thoughtcrime/securesms/util/SignalUncaughtExceptionHand...

35 wiersze
1.2 KiB
Java

package org.thoughtcrime.securesms.util;
import androidx.annotation.NonNull;
import org.signal.core.util.ExceptionUtil;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import io.reactivex.rxjava3.exceptions.OnErrorNotImplementedException;
public class SignalUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
private static final String TAG = Log.tag(SignalUncaughtExceptionHandler.class);
private final Thread.UncaughtExceptionHandler originalHandler;
public SignalUncaughtExceptionHandler(@NonNull Thread.UncaughtExceptionHandler originalHandler) {
this.originalHandler = originalHandler;
}
@Override
public void uncaughtException(@NonNull Thread t, @NonNull Throwable e) {
if (e instanceof OnErrorNotImplementedException && e.getCause() != null) {
e = e.getCause();
}
Log.e(TAG, "", e, true);
SignalStore.blockUntilAllWritesFinished();
Log.blockUntilAllWritesFinished();
ApplicationDependencies.getJobManager().flush();
originalHandler.uncaughtException(t, ExceptionUtil.joinStackTraceAndMessage(e));
}
}