From b48f788a9451ec0168e2ab2f8470c63b1177c9bb Mon Sep 17 00:00:00 2001 From: agnostic-apollo Date: Thu, 17 Mar 2022 02:50:37 +0500 Subject: [PATCH] Changed: Share terminal transcript with `ShareUtils` --- .../app/terminal/TermuxTerminalViewClient.java | 16 ++++------------ .../com/termux/shared/interact/ShareUtils.java | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java b/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java index e91172be..f1ed05bc 100644 --- a/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java +++ b/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java @@ -6,7 +6,6 @@ import android.content.ActivityNotFoundException; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; -import android.content.Intent; import android.media.AudioManager; import android.net.Uri; import android.os.Environment; @@ -647,17 +646,10 @@ public class TermuxTerminalViewClient extends TermuxTerminalViewClientBase { String transcriptText = ShellUtils.getTerminalSessionTranscriptText(session, false, true); if (transcriptText == null) return; - try { - // See https://github.com/termux/termux-app/issues/1166. - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType("text/plain"); - transcriptText = DataUtils.getTruncatedCommandOutput(transcriptText, DataUtils.TRANSACTION_SIZE_LIMIT_IN_BYTES, false, true, false).trim(); - intent.putExtra(Intent.EXTRA_TEXT, transcriptText); - intent.putExtra(Intent.EXTRA_SUBJECT, mActivity.getString(R.string.title_share_transcript)); - mActivity.startActivity(Intent.createChooser(intent, mActivity.getString(R.string.title_share_transcript_with))); - } catch (Exception e) { - Logger.logStackTraceWithMessage(LOG_TAG,"Failed to get share session transcript of length " + transcriptText.length(), e); - } + // See https://github.com/termux/termux-app/issues/1166. + transcriptText = DataUtils.getTruncatedCommandOutput(transcriptText, DataUtils.TRANSACTION_SIZE_LIMIT_IN_BYTES, false, true, false).trim(); + ShareUtils.shareText(mActivity, mActivity.getString(R.string.title_share_transcript), + transcriptText, mActivity.getString(R.string.title_share_transcript_with)); } public void showUrlSelection() { diff --git a/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java b/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java index 030ce47d..4daa8109 100644 --- a/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java @@ -23,6 +23,8 @@ import com.termux.shared.packages.PermissionUtils; import java.nio.charset.Charset; +import javax.annotation.Nullable; + public class ShareUtils { private static final String LOG_TAG = "ShareUtils"; @@ -56,6 +58,18 @@ public class ShareUtils { * @param text The text to share. */ public static void shareText(final Context context, final String subject, final String text) { + shareText(context, subject, text, null); + } + + /** + * Share text. + * + * @param context The context for operations. + * @param subject The subject for sharing. + * @param text The text to share. + * @param title The title for share menu. + */ + public static void shareText(final Context context, final String subject, final String text, @Nullable final String title) { if (context == null || text == null) return; final Intent shareTextIntent = new Intent(Intent.ACTION_SEND); @@ -63,7 +77,7 @@ public class ShareUtils { shareTextIntent.putExtra(Intent.EXTRA_SUBJECT, subject); shareTextIntent.putExtra(Intent.EXTRA_TEXT, DataUtils.getTruncatedCommandOutput(text, DataUtils.TRANSACTION_SIZE_LIMIT_IN_BYTES, true, false, false)); - openSystemAppChooser(context, shareTextIntent, context.getString(R.string.title_share_with)); + openSystemAppChooser(context, shareTextIntent, DataUtils.isNullOrEmpty(title) ? context.getString(R.string.title_share_with) : title); } /**