diff --git a/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt b/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt index 180cdb8584..7062f56c5e 100644 --- a/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt +++ b/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt @@ -576,7 +576,11 @@ abstract class BaseEditorActivity : } feedbackButtonManager = - FeedbackButtonManager(activity = this, feedbackFab = binding.fabFeedback) + FeedbackButtonManager( + activity = this, + feedbackFab = binding.fabFeedback, + getLogContent = ::getLogContent, + ) feedbackButtonManager?.setupDraggableFab() setupMemUsageChart() @@ -1280,17 +1284,25 @@ abstract class BaseEditorActivity : } private fun getLogContent(): String? { - if (bottomSheetViewModel.sheetBehaviorState == BottomSheetBehavior.STATE_COLLAPSED) { - return null + val pagerAdapter = binding.content.bottomSheet.pagerAdapter + + val candidateTabs = buildList { + add(bottomSheetViewModel.currentTab) + add(BottomSheetViewModel.TAB_BUILD_OUTPUT) + add(BottomSheetViewModel.TAB_APPLICATION_LOGS) + add(BottomSheetViewModel.TAB_IDE_LOGS) + }.distinct() + + candidateTabs.forEach { tabIndex -> + val fragment = pagerAdapter.getFragmentAtIndex(tabIndex) + if (fragment is ShareableOutputFragment) { + val shareable = fragment.getShareableContent().trim() + if (shareable.isNotEmpty()) { + return shareable + } + } } - val fragment = this.binding.content.bottomSheet.pagerAdapter.getFragmentAtIndex( - bottomSheetViewModel.currentTab - ) - - return when (fragment) { - is ShareableOutputFragment -> fragment.getShareableContent() - else -> null - } + return null } } diff --git a/common/src/main/java/com/itsaky/androidide/utils/FeedbackManager.kt b/common/src/main/java/com/itsaky/androidide/utils/FeedbackManager.kt index e5e1313f04..0cfa87735a 100644 --- a/common/src/main/java/com/itsaky/androidide/utils/FeedbackManager.kt +++ b/common/src/main/java/com/itsaky/androidide/utils/FeedbackManager.kt @@ -290,13 +290,26 @@ object FeedbackManager { val feedbackRecipient = activity.getString(R.string.feedback_email) val feedbackSubject = activity.getString(R.string.feedback_subject, getCurrentScreenName(activity)) + val stackTraceSection = + logContent?.trim().takeIf { it?.isNotEmpty() == true } + ?: activity.getString(R.string.feedback_stack_trace_unavailable) val feedbackBody = - activity.getString( - R.string.feedback_message, - BuildInfo.VERSION_NAME_SIMPLE, - Build.VERSION.RELEASE, - "${Build.MANUFACTURER} ${Build.MODEL}", - ) + buildString { + append( + activity.getString( + R.string.feedback_device_info, + BuildInfo.VERSION_NAME_SIMPLE, + Build.VERSION.RELEASE, + "${Build.MANUFACTURER} ${Build.MODEL}", + ), + ) + append( + activity.getString( + R.string.feedback_message, + stackTraceSection, + ), + ) + } val emailIntent = handler.prepareEmailIntent( diff --git a/resources/src/main/res/values/strings.xml b/resources/src/main/res/values/strings.xml index 49301d5187..eda0825d94 100644 --- a/resources/src/main/res/values/strings.xml +++ b/resources/src/main/res/values/strings.xml @@ -806,10 +806,9 @@ To send a private message to feedback@appdevforall.org, tap OK. If you aren’t connected to the Internet, the message will not be sent immediately. Do you want to continue? Feedback for %1$s Screen - Please enter your feedback in the space below. If you are reporting a problem, please include as - much information as possible about the issue.\n\nThanks!\n\nVersion: %1$s\n\n-------------stack - trace----------\n%2$s - \n\nApp Version: %1$s\n\nAndroid Version: %2$s\n\nDevice: %3$s + \n\nPlease enter your feedback in the space below. If you are reporting a problem, please include as much information as possible about the issue.\n\nThanks!\n\n-------------stack trace----------\n%1$s + App Version: %1$s\n\nAndroid Version: %2$s\n\nDevice: %3$s + Stack trace unavailable. Please describe the issue you encountered. Send feedback Send feedback More