aboutsummaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
authorPatrick Demers <patrickdemers6@gmail.com>2022-11-02 12:16:23 +0000
committerGitHub <noreply@github.com>2022-11-02 12:16:23 +0000
commitf85959cd89ea98d583a7be01c73a6313bd292113 (patch)
tree23b44110de535224ca1ace038de3ea2e7544e2f0 /app/src/main
parent9703a46f5fcdf6973ee19c43ca20d053aef80176 (diff)
downloadinfinity-for-reddit-f85959cd89ea98d583a7be01c73a6313bd292113.tar
infinity-for-reddit-f85959cd89ea98d583a7be01c73a6313bd292113.tar.gz
infinity-for-reddit-f85959cd89ea98d583a7be01c73a6313bd292113.tar.bz2
infinity-for-reddit-f85959cd89ea98d583a7be01c73a6313bd292113.tar.lz
infinity-for-reddit-f85959cd89ea98d583a7be01c73a6313bd292113.tar.xz
infinity-for-reddit-f85959cd89ea98d583a7be01c73a6313bd292113.tar.zst
infinity-for-reddit-f85959cd89ea98d583a7be01c73a6313bd292113.zip
add button to export logs to GitHub issue (#1180)
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/settings/CrashReportsFragment.java39
-rw-r--r--app/src/main/res/menu/crash_reports_fragment.xml6
-rw-r--r--app/src/main/res/values/strings.xml1
3 files changed, 46 insertions, 0 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/settings/CrashReportsFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/settings/CrashReportsFragment.java
index 730e7a7a..602b8bdf 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/settings/CrashReportsFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/settings/CrashReportsFragment.java
@@ -2,7 +2,10 @@ package ml.docilealligator.infinityforreddit.settings;
import android.annotation.SuppressLint;
import android.content.Context;
+import android.content.Intent;
import android.content.res.ColorStateList;
+import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -20,10 +23,16 @@ import androidx.recyclerview.widget.RecyclerView;
import com.crazylegend.crashyreporter.CrashyReporter;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.List;
+
import javax.inject.Inject;
+import ml.docilealligator.infinityforreddit.BuildConfig;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
+import ml.docilealligator.infinityforreddit.activities.LinkResolverActivity;
import ml.docilealligator.infinityforreddit.activities.SettingsActivity;
import ml.docilealligator.infinityforreddit.adapters.CrashReportsRecyclerViewAdapter;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
@@ -68,10 +77,40 @@ public class CrashReportsFragment extends Fragment {
CrashyReporter.INSTANCE.purgeLogs();
Toast.makeText(activity, R.string.crash_reports_deleted, Toast.LENGTH_SHORT).show();
return true;
+ } else if (item.getItemId() == R.id.action_export_logs_crash_reports_fragment) {
+ return createGithubIssueWithLogs();
}
return false;
}
+ /**
+ * Fetch the logs from CrashyReporter and open browser to create GitHub issue page.
+ * Issue will have logs, device model, app version, and Android version prefilled.
+ * @return if successful
+ */
+ private boolean createGithubIssueWithLogs() {
+ Intent intent = new Intent(getContext(), LinkResolverActivity.class);
+ String logs, model, appVersion, androidVersion;
+ try {
+ List<String> logLines = CrashyReporter.INSTANCE.getLogsAsStrings();
+ if (logLines == null) {
+ return false;
+ }
+ logs = String.join("\n", logLines);
+ // limit size to 6800 characters to avoid `414 URI Too Long`
+ logs = URLEncoder.encode("```\n" + (logs.length() > 0 ? logs.substring(0, Math.min(6800, logs.length())) : "No logs found.") + "\n```", "UTF-8");
+ model = URLEncoder.encode(Build.MANUFACTURER + " " + Build.MODEL, "UTF-8");
+ appVersion = URLEncoder.encode(BuildConfig.VERSION_NAME, "UTF-8");
+ androidVersion = URLEncoder.encode(Build.VERSION.RELEASE, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ return false;
+ }
+ Uri githubIssueUri = Uri.parse(String.format("https://github.com/Docile-Alligator/Infinity-For-Reddit/issues/new?labels=possible-bug&device=%s&version=%s&android_version=%s&logs=%s&&template=BUG_REPORT.yml", model, appVersion, androidVersion, logs));
+ intent.setData(githubIssueUri);
+ startActivity(intent);
+ return true;
+ }
+
@SuppressLint("RestrictedApi")
protected boolean applyMenuItemTheme(Menu menu) {
if (mCustomThemeWrapper != null) {
diff --git a/app/src/main/res/menu/crash_reports_fragment.xml b/app/src/main/res/menu/crash_reports_fragment.xml
index 67bc62b5..ad1c92ec 100644
--- a/app/src/main/res/menu/crash_reports_fragment.xml
+++ b/app/src/main/res/menu/crash_reports_fragment.xml
@@ -7,4 +7,10 @@
android:title="@string/action_delete_logs"
android:icon="@drawable/ic_delete_24dp"
app:showAsAction="ifRoom" />
+ <item
+ android:id="@+id/action_export_logs_crash_reports_fragment"
+ android:orderInCategory="2"
+ android:title="@string/action_create_github_issue"
+ android:icon="@drawable/ic_open_link_24dp"
+ app:showAsAction="ifRoom" />
</menu> \ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 46ba6923..8ec9ee31 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -90,6 +90,7 @@
<string name="action_open_external_browser">Open in browser</string>
<string name="action_add_to_post_filter">Add to Post Filter</string>
<string name="action_delete_logs">Delete Logs</string>
+ <string name="action_create_github_issue">Create GitHub Issue</string>
<string name="action_share_rpan_link">Share RPAN Link</string>
<string name="action_share_post_link">Share Post Link</string>
<string name="action_go_to_wiki">Go to Wiki</string>