mirror of
https://github.com/KokaKiwi/BarInsta
synced 2026-03-05 03:51:36 +00:00
Add sentry to github builds
This commit adds github and fdroid product flavors. Sentry is added only to github builds. Sentry is opt-in.
This commit is contained in:
parent
16ac573859
commit
5bdfb7df51
22 changed files with 553 additions and 216 deletions
10
app/src/github/AndroidManifest.xml
Normal file
10
app/src/github/AndroidManifest.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="awais.instagrabber">
|
||||
|
||||
<application>
|
||||
<meta-data
|
||||
android:name="io.sentry.auto-init"
|
||||
android:value="false" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
package awais.instagrabber.fragments.settings;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import awais.instagrabber.R;
|
||||
import awais.instagrabber.dialogs.ConfirmDialogFragment;
|
||||
|
||||
import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_ENABLE_SENTRY;
|
||||
import static awais.instagrabber.utils.Utils.settingsHelper;
|
||||
|
||||
public final class FlavorSettings implements IFlavorSettings {
|
||||
|
||||
private static FlavorSettings instance;
|
||||
|
||||
private FlavorSettings() {
|
||||
}
|
||||
|
||||
public static FlavorSettings getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new FlavorSettings();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public List<Preference> getPreferences(@NonNull final Context context,
|
||||
@NonNull final FragmentManager fragmentManager,
|
||||
@NonNull final SettingCategory settingCategory) {
|
||||
switch (settingCategory) {
|
||||
case GENERAL:
|
||||
return getGeneralPrefs(context, fragmentManager);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
private List<Preference> getGeneralPrefs(@NonNull final Context context,
|
||||
@NonNull final FragmentManager fragmentManager) {
|
||||
return ImmutableList.of(
|
||||
getSentryPreference(context, fragmentManager)
|
||||
);
|
||||
}
|
||||
|
||||
private Preference getSentryPreference(@NonNull final Context context,
|
||||
@NonNull final FragmentManager fragmentManager) {
|
||||
if (!settingsHelper.hasPreference(PREF_ENABLE_SENTRY)) {
|
||||
// disabled by default
|
||||
settingsHelper.putBoolean(PREF_ENABLE_SENTRY, false);
|
||||
}
|
||||
return PreferenceHelper.getSwitchPreference(
|
||||
context,
|
||||
PREF_ENABLE_SENTRY,
|
||||
R.string.enable_sentry,
|
||||
R.string.sentry_summary,
|
||||
false,
|
||||
(preference, newValue) -> {
|
||||
if (!(newValue instanceof Boolean)) return true;
|
||||
final boolean enabled = (Boolean) newValue;
|
||||
if (enabled) {
|
||||
final ConfirmDialogFragment dialogFragment = ConfirmDialogFragment.newInstance(
|
||||
111,
|
||||
0,
|
||||
R.string.sentry_start_next_launch,
|
||||
R.string.ok,
|
||||
0,
|
||||
0);
|
||||
dialogFragment.show(fragmentManager, "sentry_dialog");
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
||||
59
app/src/github/java/awaisomereport/CrashHandler.java
Normal file
59
app/src/github/java/awaisomereport/CrashHandler.java
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
package awaisomereport;
|
||||
|
||||
import android.app.Application;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import awais.instagrabber.BuildConfig;
|
||||
import awais.instagrabber.fragments.settings.PreferenceKeys;
|
||||
import io.sentry.SentryLevel;
|
||||
import io.sentry.android.core.SentryAndroid;
|
||||
import io.sentry.protocol.Contexts;
|
||||
import io.sentry.protocol.Device;
|
||||
|
||||
import static awais.instagrabber.utils.Utils.settingsHelper;
|
||||
|
||||
public class CrashHandler implements ICrashHandler {
|
||||
private static final String TAG = CrashHandler.class.getSimpleName();
|
||||
|
||||
private final Application application;
|
||||
private final boolean enabled;
|
||||
|
||||
public CrashHandler(@NonNull final Application application) {
|
||||
this.application = application;
|
||||
if (!settingsHelper.hasPreference(PreferenceKeys.PREF_ENABLE_SENTRY)) {
|
||||
// disabled by default (change to true if we need enabled by default)
|
||||
enabled = false;
|
||||
} else {
|
||||
enabled = settingsHelper.getBoolean(PreferenceKeys.PREF_ENABLE_SENTRY);
|
||||
}
|
||||
if (!enabled) return;
|
||||
SentryAndroid.init(application, options -> {
|
||||
options.setDsn(BuildConfig.dsn);
|
||||
options.setDiagnosticLevel(SentryLevel.ERROR);
|
||||
options.setBeforeSend((event, hint) -> {
|
||||
// Removing unneeded info from event
|
||||
final Contexts contexts = event.getContexts();
|
||||
final Device device = contexts.getDevice();
|
||||
device.setName(null);
|
||||
device.setTimezone(null);
|
||||
device.setCharging(null);
|
||||
device.setBootTime(null);
|
||||
device.setFreeStorage(null);
|
||||
device.setBatteryTemperature(null);
|
||||
return event;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uncaughtException(@NonNull final Thread t,
|
||||
@NonNull final Throwable exception,
|
||||
@NonNull final Thread.UncaughtExceptionHandler defaultEH) {
|
||||
// When enabled, Sentry auto captures unhandled exceptions
|
||||
if (!enabled) {
|
||||
CrashReporterHelper.startErrorReporterActivity(application, exception);
|
||||
}
|
||||
defaultEH.uncaughtException(t, exception);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue