Skip to content

Commit aec95c2

Browse files
authored
fix: Feedback report sources (#575)
* fix: Feedback report sources - Separate device info from the main feedback message body. - When generating a feedback report, search multiple output tabs (Build, App Logs, IDE Logs) for a stack trace to include, instead of only checking the currently active tab. - Add a "Stack trace unavailable" message to the feedback body if no logs are found. * refactor(FeedbackManager): Change information order, first App, system and device info, then user message and stack trace.
1 parent c64f17b commit aec95c2

3 files changed

Lines changed: 45 additions & 21 deletions

File tree

app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,11 @@ abstract class BaseEditorActivity :
576576
}
577577

578578
feedbackButtonManager =
579-
FeedbackButtonManager(activity = this, feedbackFab = binding.fabFeedback)
579+
FeedbackButtonManager(
580+
activity = this,
581+
feedbackFab = binding.fabFeedback,
582+
getLogContent = ::getLogContent,
583+
)
580584
feedbackButtonManager?.setupDraggableFab()
581585

582586
setupMemUsageChart()
@@ -1280,17 +1284,25 @@ abstract class BaseEditorActivity :
12801284
}
12811285

12821286
private fun getLogContent(): String? {
1283-
if (bottomSheetViewModel.sheetBehaviorState == BottomSheetBehavior.STATE_COLLAPSED) {
1284-
return null
1287+
val pagerAdapter = binding.content.bottomSheet.pagerAdapter
1288+
1289+
val candidateTabs = buildList {
1290+
add(bottomSheetViewModel.currentTab)
1291+
add(BottomSheetViewModel.TAB_BUILD_OUTPUT)
1292+
add(BottomSheetViewModel.TAB_APPLICATION_LOGS)
1293+
add(BottomSheetViewModel.TAB_IDE_LOGS)
1294+
}.distinct()
1295+
1296+
candidateTabs.forEach { tabIndex ->
1297+
val fragment = pagerAdapter.getFragmentAtIndex<Fragment>(tabIndex)
1298+
if (fragment is ShareableOutputFragment) {
1299+
val shareable = fragment.getShareableContent().trim()
1300+
if (shareable.isNotEmpty()) {
1301+
return shareable
1302+
}
1303+
}
12851304
}
12861305

1287-
val fragment = this.binding.content.bottomSheet.pagerAdapter.getFragmentAtIndex<Fragment>(
1288-
bottomSheetViewModel.currentTab
1289-
)
1290-
1291-
return when (fragment) {
1292-
is ShareableOutputFragment -> fragment.getShareableContent()
1293-
else -> null
1294-
}
1306+
return null
12951307
}
12961308
}

common/src/main/java/com/itsaky/androidide/utils/FeedbackManager.kt

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -290,13 +290,26 @@ object FeedbackManager {
290290
val feedbackRecipient = activity.getString(R.string.feedback_email)
291291
val feedbackSubject =
292292
activity.getString(R.string.feedback_subject, getCurrentScreenName(activity))
293+
val stackTraceSection =
294+
logContent?.trim().takeIf { it?.isNotEmpty() == true }
295+
?: activity.getString(R.string.feedback_stack_trace_unavailable)
293296
val feedbackBody =
294-
activity.getString(
295-
R.string.feedback_message,
296-
BuildInfo.VERSION_NAME_SIMPLE,
297-
Build.VERSION.RELEASE,
298-
"${Build.MANUFACTURER} ${Build.MODEL}",
299-
)
297+
buildString {
298+
append(
299+
activity.getString(
300+
R.string.feedback_device_info,
301+
BuildInfo.VERSION_NAME_SIMPLE,
302+
Build.VERSION.RELEASE,
303+
"${Build.MANUFACTURER} ${Build.MODEL}",
304+
),
305+
)
306+
append(
307+
activity.getString(
308+
R.string.feedback_message,
309+
stackTraceSection,
310+
),
311+
)
312+
}
300313

301314
val emailIntent =
302315
handler.prepareEmailIntent(

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -806,10 +806,9 @@
806806
<string name="email_feedback_warning_prompt"> To send a private message to feedback@appdevforall.org, tap <b>OK</b>. If you aren’t connected to the Internet, the message will not be sent immediately. Do you want to continue?
807807
</string>
808808
<string name="feedback_subject">Feedback for %1$s Screen</string>
809-
<string name="feedback_message">Please enter your feedback in the space below. If you are reporting a problem, please include as
810-
much information as possible about the issue.\n\nThanks!\n\nVersion: %1$s\n\n-------------stack
811-
trace----------\n%2$s</string>
812-
<string name="feedback_device_info">\n\nApp Version: %1$s\n\nAndroid Version: %2$s\n\nDevice: %3$s</string>
809+
<string name="feedback_message">\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</string>
810+
<string name="feedback_device_info">App Version: %1$s\n\nAndroid Version: %2$s\n\nDevice: %3$s</string>
811+
<string name="feedback_stack_trace_unavailable">Stack trace unavailable. Please describe the issue you encountered.</string>
813812
<string name="send_feedback">Send feedback</string>
814813
<string name="alert_message">Send feedback</string>
815814
<string name="fab_more">More</string>

0 commit comments

Comments
 (0)