Skip to content

Commit 939338a

Browse files
Allow users to report an issue from terminal transcript by selection "Report Issue" from context menu
1 parent 067709b commit 939338a

File tree

5 files changed

+50
-20
lines changed

5 files changed

+50
-20
lines changed

app/src/main/java/com/termux/app/TermuxActivity.java

+18-18
Original file line numberDiff line numberDiff line change
@@ -135,15 +135,14 @@ public final class TermuxActivity extends Activity implements ServiceConnection
135135

136136
private static final int CONTEXT_MENU_SELECT_URL_ID = 0;
137137
private static final int CONTEXT_MENU_SHARE_TRANSCRIPT_ID = 1;
138-
private static final int CONTEXT_MENU_PASTE_ID = 3;
138+
private static final int CONTEXT_MENU_AUTOFILL_ID = 2;
139+
private static final int CONTEXT_MENU_RESET_TERMINAL_ID = 3;
139140
private static final int CONTEXT_MENU_KILL_PROCESS_ID = 4;
140-
private static final int CONTEXT_MENU_RESET_TERMINAL_ID = 5;
141-
private static final int CONTEXT_MENU_STYLING_ID = 6;
142-
private static final int CONTEXT_MENU_HELP_ID = 8;
143-
private static final int CONTEXT_MENU_TOGGLE_KEEP_SCREEN_ON = 9;
144-
private static final int CONTEXT_MENU_AUTOFILL_ID = 10;
145-
private static final int CONTEXT_MENU_SETTINGS_ID = 11;
146-
141+
private static final int CONTEXT_MENU_STYLING_ID = 5;
142+
private static final int CONTEXT_MENU_TOGGLE_KEEP_SCREEN_ON = 6;
143+
private static final int CONTEXT_MENU_HELP_ID = 7;
144+
private static final int CONTEXT_MENU_SETTINGS_ID = 8;
145+
private static final int CONTEXT_MENU_REPORT_ID = 9;
147146

148147
private static final int REQUESTCODE_PERMISSION_STORAGE = 1234;
149148

@@ -526,6 +525,7 @@ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuIn
526525
menu.add(Menu.NONE, CONTEXT_MENU_TOGGLE_KEEP_SCREEN_ON, Menu.NONE, R.string.action_toggle_keep_screen_on).setCheckable(true).setChecked(mPreferences.getKeepScreenOn());
527526
menu.add(Menu.NONE, CONTEXT_MENU_HELP_ID, Menu.NONE, R.string.action_open_help);
528527
menu.add(Menu.NONE, CONTEXT_MENU_SETTINGS_ID, Menu.NONE, R.string.action_open_settings);
528+
menu.add(Menu.NONE, CONTEXT_MENU_REPORT_ID, Menu.NONE, R.string.action_report_issue);
529529
}
530530

531531
/** Hook system menu to show context menu instead. */
@@ -546,29 +546,29 @@ public boolean onContextItemSelected(MenuItem item) {
546546
case CONTEXT_MENU_SHARE_TRANSCRIPT_ID:
547547
mTermuxViewClient.shareSessionTranscript();
548548
return true;
549-
case CONTEXT_MENU_PASTE_ID:
550-
mTermuxViewClient.doPaste();
551-
return true;
552-
case CONTEXT_MENU_KILL_PROCESS_ID:
553-
showKillSessionDialog(session);
549+
case CONTEXT_MENU_AUTOFILL_ID:
550+
requestAutoFill();
554551
return true;
555552
case CONTEXT_MENU_RESET_TERMINAL_ID:
556553
resetSession(session);
557554
return true;
555+
case CONTEXT_MENU_KILL_PROCESS_ID:
556+
showKillSessionDialog(session);
557+
return true;
558558
case CONTEXT_MENU_STYLING_ID:
559559
showStylingDialog();
560560
return true;
561+
case CONTEXT_MENU_TOGGLE_KEEP_SCREEN_ON:
562+
toggleKeepScreenOn();
563+
return true;
561564
case CONTEXT_MENU_HELP_ID:
562565
startActivity(new Intent(this, HelpActivity.class));
563566
return true;
564567
case CONTEXT_MENU_SETTINGS_ID:
565568
startActivity(new Intent(this, SettingsActivity.class));
566569
return true;
567-
case CONTEXT_MENU_TOGGLE_KEEP_SCREEN_ON:
568-
toggleKeepScreenOn();
569-
return true;
570-
case CONTEXT_MENU_AUTOFILL_ID:
571-
requestAutoFill();
570+
case CONTEXT_MENU_REPORT_ID:
571+
mTermuxViewClient.reportIssueFromTranscript();
572572
return true;
573573
default:
574574
return super.onContextItemSelected(item);

app/src/main/java/com/termux/app/models/UserAction.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
public enum UserAction {
44

55
PLUGIN_EXECUTION_COMMAND("plugin execution command"),
6-
CRASH_REPORT("crash report");
6+
CRASH_REPORT("crash report"),
7+
REPORT_ISSUE_FROM_TRANSCRIPT("report issue from transcript");
78

89
private final String name;
910

app/src/main/java/com/termux/app/terminal/TermuxViewClient.java

+28
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,17 @@
2020

2121
import com.termux.R;
2222
import com.termux.app.TermuxActivity;
23+
import com.termux.app.TermuxConstants;
24+
import com.termux.app.activities.ReportActivity;
25+
import com.termux.app.models.ReportInfo;
26+
import com.termux.app.models.UserAction;
2327
import com.termux.app.terminal.io.KeyboardShortcut;
2428
import com.termux.app.terminal.io.extrakeys.ExtraKeysView;
2529
import com.termux.app.settings.properties.TermuxPropertyConstants;
2630
import com.termux.app.utils.DataUtils;
2731
import com.termux.app.utils.Logger;
32+
import com.termux.app.utils.MarkdownUtils;
33+
import com.termux.app.utils.TermuxUtils;
2834
import com.termux.terminal.KeyHandler;
2935
import com.termux.terminal.TerminalEmulator;
3036
import com.termux.terminal.TerminalSession;
@@ -394,6 +400,28 @@ public void showUrlSelection() {
394400
dialog.show();
395401
}
396402

403+
public void reportIssueFromTranscript() {
404+
TerminalSession session = mActivity.getCurrentSession();
405+
if (session == null) return;
406+
407+
String transcriptText = session.getEmulator().getScreen().getTranscriptTextWithoutJoinedLines().trim();
408+
if (transcriptText == null) return;
409+
410+
transcriptText = DataUtils.getTruncatedCommandOutput(transcriptText, DataUtils.TRANSACTION_SIZE_LIMIT_IN_BYTES, false, true, false).trim();
411+
412+
StringBuilder reportString = new StringBuilder();
413+
414+
String title = TermuxConstants.TERMUX_APP_NAME + " Report Issue";
415+
416+
reportString.append("## Transcript\n");
417+
reportString.append("\n").append(MarkdownUtils.getMarkdownCodeForString(transcriptText, true));
418+
419+
reportString.append("\n\n").append(TermuxUtils.getAppInfoMarkdownString(mActivity, true));
420+
reportString.append("\n\n").append(TermuxUtils.getDeviceInfoMarkdownString(mActivity));
421+
422+
ReportActivity.startReportActivity(mActivity, new ReportInfo(UserAction.REPORT_ISSUE_FROM_TRANSCRIPT, TermuxConstants.TERMUX_APP.TERMUX_ACTIVITY_NAME, title, null, reportString.toString(), "\n\n" + TermuxUtils.getReportIssueMarkdownString(mActivity), false));
423+
}
424+
397425
public void doPaste() {
398426
TerminalSession session = mActivity.getCurrentSession();
399427
if (session == null) return;

app/src/main/java/com/termux/app/utils/TermuxUtils.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ public static String getReportIssueMarkdownString(@NonNull final Context context
250250

251251
StringBuilder markdownString = new StringBuilder();
252252

253-
markdownString.append("## Report Issue");
253+
markdownString.append("## Where To Report An Issue");
254254

255255
markdownString.append("\n\n").append(context.getString(R.string.msg_report_issue)).append("\n");
256256

app/src/main/res/values/strings.xml

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
<string name="action_toggle_keep_screen_on">Keep screen on</string>
7373
<string name="action_open_help">Help</string>
7474
<string name="action_open_settings">Settings</string>
75+
<string name="action_report_issue">Report Issue</string>
7576

7677
<string name="error_styling_not_installed">The &TERMUX_STYLING_APP_NAME; Plugin App is not installed.</string>
7778
<string name="action_styling_install">Install</string>

0 commit comments

Comments
 (0)