diff --git a/forge-gui-android/pom.xml b/forge-gui-android/pom.xml index f3352c5dc0d..42081a5bdbe 100644 --- a/forge-gui-android/pom.xml +++ b/forge-gui-android/pom.xml @@ -283,6 +283,7 @@ + diff --git a/forge-gui-android/proguard.cfg b/forge-gui-android/proguard.cfg index c72ce7ede22..e6a1ef032c5 100644 --- a/forge-gui-android/proguard.cfg +++ b/forge-gui-android/proguard.cfg @@ -25,13 +25,15 @@ -dontwarn java.awt.** -dontwarn java.util.** -dontwarn java.lang.** - +-dontwarn org.slf4j.** +-dontwarn javax.** -keep class forge.** { *; } -keep class com.thoughtworks.xstream.** { *; } -keep class org.apache.commons.lang3.** { *; } -keep class com.google.guava.** { *; } -keep class com.google.common.** { *; } +-keep class io.sentry.event.Event { *; } -keepclassmembers class com.badlogic.gdx.backends.android.AndroidInput* { (com.badlogic.gdx.Application, android.content.Context, java.lang.Object, com.badlogic.gdx.backends.android.AndroidApplicationConfiguration); @@ -81,3 +83,8 @@ -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } + +-keepattributes LineNumberTable,SourceFile + +# https://stackoverflow.com/a/32615580 +-optimizations !class/unboxing/enum \ No newline at end of file diff --git a/forge-gui-mobile-dev/sentry.properties b/forge-gui-mobile-dev/sentry.properties new file mode 100644 index 00000000000..683ff25e08a --- /dev/null +++ b/forge-gui-mobile-dev/sentry.properties @@ -0,0 +1,14 @@ +# ideally this should be using HTTPS, but this is fine for now +dsn=http://a0b8dbad9b8a49cfa51bf65d462e8dae@sentry.cardforge.org:9000/2 +stacktrace.app.packages=forge + +# where to store events if offline or can't reach the above server +buffer.dir=sentry-events +buffer.size=100 + +# allow ample time for graceful shutdown +buffer.shutdowntimeout=5000 +async.shutdowntimeout=5000 + +# allow longer messages +maxmessagelength=1500 \ No newline at end of file diff --git a/forge-gui-mobile/src/forge/error/BugReportDialog.java b/forge-gui-mobile/src/forge/error/BugReportDialog.java index aadff53dea2..807a61f6e38 100644 --- a/forge-gui-mobile/src/forge/error/BugReportDialog.java +++ b/forge-gui-mobile/src/forge/error/BugReportDialog.java @@ -29,11 +29,11 @@ public class BugReportDialog extends FScreen { //use screen rather than dialog s Forge.openScreen(new BugReportDialog(title, text, showExitAppBtn)); } - private final FTextArea lblHeader = add(new FTextArea(false, BugReporter.HELP_TEXT)); + private final FTextArea lblHeader = add(new FTextArea(false, "Report Bug")); private final TemplateView tvDetails; private final FButton btnReport = add(new FButton(BugReporter.REPORT)); private final FButton btnSave = add(new FButton(BugReporter.SAVE)); - private final FButton btnContinue = add(new FButton(BugReporter.CONTINUE)); + private final FButton btnDiscard = add(new FButton(BugReporter.DISCARD)); private final FButton btnExit = add(new FButton(BugReporter.EXIT)); private BugReportDialog(String title, String text0, boolean showExitAppBtn) { @@ -43,7 +43,8 @@ public class BugReportDialog extends FScreen { //use screen rather than dialog s btnReport.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - BugReporter.copyAndGoToForums(tvDetails.text); + BugReporter.sendSentry(); + Forge.back(); } }); btnSave.setCommand(new FEventHandler() { @@ -52,7 +53,7 @@ public class BugReportDialog extends FScreen { //use screen rather than dialog s BugReporter.saveToFile(tvDetails.text); } }); - btnContinue.setCommand(new FEventHandler() { + btnDiscard.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { Forge.back(); @@ -115,11 +116,11 @@ public class BugReportDialog extends FScreen { //use screen rather than dialog s y += buttonHeight + PADDING; } if (btnExit.isVisible()) { - btnContinue.setBounds(x, y, buttonWidth, buttonHeight); + btnDiscard.setBounds(x, y, buttonWidth, buttonHeight); btnExit.setBounds(x + buttonWidth + PADDING, y, buttonWidth, buttonHeight); } else { - btnContinue.setBounds(x, y, 2 * buttonWidth + PADDING, buttonHeight); + btnDiscard.setBounds(x, y, 2 * buttonWidth + PADDING, buttonHeight); } } diff --git a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java index 7d76e3f190d..375e7d94b84 100644 --- a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java @@ -78,6 +78,10 @@ public class SettingsPage extends TabPage { "Minimize on Screen Lock", "Minimize Forge when screen is locked (enable if you experience graphic glitches after locking your screen)."), 0); + lstSettings.addItem(new BooleanSetting(FPref.USE_SENTRY, + "Automatic Bug Reports", + "Automatically send bug reports to the developers, without prompting."), + 0); //Gameplay Options lstSettings.addItem(new CustomSelectSetting(FPref.UI_CURRENT_AI_PROFILE,