Pass error message to feedback activity

This commit is contained in:
Sebastian Kürten
2021-06-11 13:30:33 +02:00
parent 83bf3f4ca7
commit 052eb03c9e
6 changed files with 29 additions and 7 deletions

View File

@@ -72,7 +72,7 @@ public class HotspotErrorFragment extends BaseFragment {
Button feedbackButton = v.findViewById(R.id.feedbackButton);
feedbackButton.setOnClickListener(
button -> triggerFeedback(requireContext()));
button -> triggerFeedback(requireContext(), errorMessage));
FallbackFragment fallbackFragment = new FallbackFragment();
FragmentTransaction ta = getChildFragmentManager().beginTransaction();

View File

@@ -34,7 +34,7 @@ class BriarExceptionHandler implements UncaughtExceptionHandler {
// activity runs in its own process, so we can kill the old one
startDevReportActivity(app.getApplicationContext(),
CrashReportActivity.class, e, appStartTime, logKey);
CrashReportActivity.class, e, appStartTime, logKey, null);
Process.killProcess(Process.myPid());
System.exit(10);
}

View File

@@ -33,6 +33,7 @@ import static java.util.Objects.requireNonNull;
public class CrashReportActivity extends BaseActivity
implements BaseFragmentListener {
public static final String EXTRA_INITIAL_COMMENT = "initialComment";
public static final String EXTRA_THROWABLE = "throwable";
public static final String EXTRA_APP_START_TIME = "appStartTime";
public static final String EXTRA_APP_LOGCAT = "logcat";
@@ -55,10 +56,11 @@ public class CrashReportActivity extends BaseActivity
setContentView(R.layout.activity_dev_report);
Intent intent = getIntent();
String initialComment = intent.getStringExtra(EXTRA_INITIAL_COMMENT);
Throwable t = (Throwable) intent.getSerializableExtra(EXTRA_THROWABLE);
long appStartTime = intent.getLongExtra(EXTRA_APP_START_TIME, -1);
byte[] logKey = intent.getByteArrayExtra(EXTRA_APP_LOGCAT);
viewModel.init(t, appStartTime, logKey);
viewModel.init(t, appStartTime, logKey, initialComment);
viewModel.getShowReport().observeEvent(this, show -> {
if (show) displayFragment(true);
});

View File

@@ -78,6 +78,9 @@ public class ReportFormFragment extends BaseFragment {
list = v.findViewById(R.id.list);
progress = v.findViewById(R.id.progress_wheel);
if (viewModel.getInitialComment() != null)
userCommentView.setText(viewModel.getInitialComment());
if (viewModel.isFeedback()) {
includeDebugReport
.setText(getString(R.string.include_debug_report_feedback));

View File

@@ -64,6 +64,8 @@ class ReportViewModel extends AndroidViewModel {
private final MutableLiveEvent<Integer> closeReport =
new MutableLiveEvent<>();
private boolean isFeedback;
@Nullable
private String initialComment;
@Inject
ReportViewModel(@NonNull Application application,
@@ -80,7 +82,8 @@ class ReportViewModel extends AndroidViewModel {
}
void init(@Nullable Throwable t, long appStartTime,
@Nullable byte[] logKey) {
@Nullable byte[] logKey, @Nullable String initialComment) {
this.initialComment = initialComment;
isFeedback = t == null;
if (reportData.getValue() == null) new SingleShotAndroidExecutor(() -> {
String decryptedLogs;
@@ -103,6 +106,11 @@ class ReportViewModel extends AndroidViewModel {
}).start();
}
@Nullable
String getInitialComment() {
return initialComment;
}
boolean isFeedback() {
return isFeedback;
}
@@ -140,7 +148,7 @@ class ReportViewModel extends AndroidViewModel {
/**
* The content of the report that will be loaded after
* {@link #init(Throwable, long, byte[])} was called.
* {@link #init(Throwable, long, byte[], String)} was called.
*/
LiveData<ReportData> getReportData() {
return reportData;

View File

@@ -118,6 +118,7 @@ import static org.briarproject.briar.BuildConfig.APPLICATION_ID;
import static org.briarproject.briar.android.TestingConstants.EXPIRY_DATE;
import static org.briarproject.briar.android.reporting.CrashReportActivity.EXTRA_APP_LOGCAT;
import static org.briarproject.briar.android.reporting.CrashReportActivity.EXTRA_APP_START_TIME;
import static org.briarproject.briar.android.reporting.CrashReportActivity.EXTRA_INITIAL_COMMENT;
import static org.briarproject.briar.android.reporting.CrashReportActivity.EXTRA_THROWABLE;
@MethodsNotNullByDefault
@@ -434,17 +435,25 @@ public class UiUtils {
}
public static void triggerFeedback(Context ctx) {
startDevReportActivity(ctx, FeedbackActivity.class, null, null, null);
triggerFeedback(ctx, null);
}
public static void triggerFeedback(Context ctx,
@Nullable String initialComment) {
startDevReportActivity(ctx, FeedbackActivity.class, null, null, null,
initialComment);
}
public static void startDevReportActivity(Context ctx,
Class<? extends FragmentActivity> activity, @Nullable Throwable t,
@Nullable Long appStartTime, @Nullable byte[] logKey) {
@Nullable Long appStartTime, @Nullable byte[] logKey, @Nullable
String initialComment) {
final Intent dialogIntent = new Intent(ctx, activity);
dialogIntent.setFlags(FLAG_ACTIVITY_NEW_TASK);
dialogIntent.putExtra(EXTRA_THROWABLE, t);
dialogIntent.putExtra(EXTRA_APP_START_TIME, appStartTime);
dialogIntent.putExtra(EXTRA_APP_LOGCAT, logKey);
dialogIntent.putExtra(EXTRA_INITIAL_COMMENT, initialComment);
ctx.startActivity(dialogIntent);
}