forked from GitHub-Mirror/riotX-android
Report suggestion feature
This commit is contained in:
parent
40bf3a15cd
commit
a550743f2f
@ -165,12 +165,10 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable {
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
// TODO Remove
|
||||
// R.id.sliding_menu_sign_out -> {
|
||||
// SignOutUiWorker(this, notificationDrawerManager)
|
||||
// .perform(Matrix.getInstance().currentSession!!)
|
||||
// return true
|
||||
// }
|
||||
R.id.menu_home_suggestion -> {
|
||||
BugReporter.openBugReportScreen(this, true)
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
|
@ -28,7 +28,6 @@ import im.vector.riotredesign.core.di.ScreenComponent
|
||||
import im.vector.riotredesign.core.platform.VectorBaseActivity
|
||||
import kotlinx.android.synthetic.main.activity_bug_report.*
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
* Form to send a bug report
|
||||
@ -42,6 +41,8 @@ class BugReportActivity : VectorBaseActivity() {
|
||||
|
||||
override fun getLayoutRes() = R.layout.activity_bug_report
|
||||
|
||||
private var forSuggestion: Boolean = false
|
||||
|
||||
override fun initUiAndData() {
|
||||
configureToolbar(bugReportToolbar)
|
||||
|
||||
@ -52,6 +53,26 @@ class BugReportActivity : VectorBaseActivity() {
|
||||
bug_report_button_include_screenshot.isChecked = false
|
||||
bug_report_button_include_screenshot.isEnabled = false
|
||||
}
|
||||
|
||||
forSuggestion = intent.getBooleanExtra("FOR_SUGGESTION", false)
|
||||
|
||||
// Default screen is for bug report, so modify it for suggestion
|
||||
if (forSuggestion) {
|
||||
supportActionBar?.setTitle(R.string.send_suggestion)
|
||||
|
||||
bug_report_first_text.setText(R.string.send_suggestion_content)
|
||||
bug_report_text_input_layout.hint = getString(R.string.send_suggestion_report_placeholder)
|
||||
|
||||
bug_report_logs_description.isVisible = false
|
||||
|
||||
bug_report_button_include_logs.isChecked = false
|
||||
bug_report_button_include_logs.isVisible = false
|
||||
|
||||
bug_report_button_include_crash_logs.isChecked = false
|
||||
bug_report_button_include_crash_logs.isVisible = false
|
||||
|
||||
// Keep the screenshot
|
||||
}
|
||||
}
|
||||
|
||||
override fun getMenuRes() = R.menu.bug_report
|
||||
@ -95,6 +116,7 @@ class BugReportActivity : VectorBaseActivity() {
|
||||
bug_report_progress_view.progress = 0
|
||||
|
||||
bugReporter.sendBugReport(this,
|
||||
forSuggestion,
|
||||
bug_report_button_include_logs.isChecked,
|
||||
bug_report_button_include_crash_logs.isChecked,
|
||||
bug_report_button_include_screenshot.isChecked,
|
||||
@ -103,8 +125,13 @@ class BugReportActivity : VectorBaseActivity() {
|
||||
override fun onUploadFailed(reason: String?) {
|
||||
try {
|
||||
if (!TextUtils.isEmpty(reason)) {
|
||||
Toast.makeText(this@BugReportActivity,
|
||||
getString(R.string.send_bug_report_failed, reason), Toast.LENGTH_LONG).show()
|
||||
if (forSuggestion) {
|
||||
Toast.makeText(this@BugReportActivity,
|
||||
getString(R.string.send_suggestion_failed, reason), Toast.LENGTH_LONG).show()
|
||||
} else {
|
||||
Toast.makeText(this@BugReportActivity,
|
||||
getString(R.string.send_bug_report_failed, reason), Toast.LENGTH_LONG).show()
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "## onUploadFailed() : failed to display the toast " + e.message)
|
||||
@ -131,7 +158,11 @@ class BugReportActivity : VectorBaseActivity() {
|
||||
|
||||
override fun onUploadSucceed() {
|
||||
try {
|
||||
Toast.makeText(this@BugReportActivity, R.string.send_bug_report_sent, Toast.LENGTH_LONG).show()
|
||||
if (forSuggestion) {
|
||||
Toast.makeText(this@BugReportActivity, R.string.send_suggestion_sent, Toast.LENGTH_LONG).show()
|
||||
} else {
|
||||
Toast.makeText(this@BugReportActivity, R.string.send_bug_report_sent, Toast.LENGTH_LONG).show()
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "## onUploadSucceed() : failed to dismiss the toast " + e.message)
|
||||
}
|
||||
|
@ -128,6 +128,7 @@ class BugReporter @Inject constructor(private val activeSessionHolder: ActiveSes
|
||||
* Send a bug report.
|
||||
*
|
||||
* @param context the application context
|
||||
* @param forSuggestion true to send a suggestion
|
||||
* @param withDevicesLogs true to include the device log
|
||||
* @param withCrashLogs true to include the crash logs
|
||||
* @param withScreenshot true to include the screenshot
|
||||
@ -136,6 +137,7 @@ class BugReporter @Inject constructor(private val activeSessionHolder: ActiveSes
|
||||
*/
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
fun sendBugReport(context: Context,
|
||||
forSuggestion: Boolean,
|
||||
withDevicesLogs: Boolean,
|
||||
withCrashLogs: Boolean,
|
||||
withScreenshot: Boolean,
|
||||
@ -208,9 +210,17 @@ class BugReporter @Inject constructor(private val activeSessionHolder: ActiveSes
|
||||
}
|
||||
|
||||
if (!mIsCancelled) {
|
||||
val text = "[RiotX] " +
|
||||
if (forSuggestion) {
|
||||
"[Suggestion] "
|
||||
} else {
|
||||
""
|
||||
} +
|
||||
bugDescription
|
||||
|
||||
// build the multi part request
|
||||
val builder = BugReporterMultipartBody.Builder()
|
||||
.addFormDataPart("text", "[RiotX] $bugDescription")
|
||||
.addFormDataPart("text", text)
|
||||
.addFormDataPart("app", "riot-android")
|
||||
.addFormDataPart("user_agent", Matrix.getInstance(context).getUserAgent())
|
||||
.addFormDataPart("user_id", userId)
|
||||
@ -276,6 +286,11 @@ class BugReporter @Inject constructor(private val activeSessionHolder: ActiveSes
|
||||
// Special for RiotX
|
||||
builder.addFormDataPart("label", "[RiotX]")
|
||||
|
||||
// Suggestion
|
||||
if (forSuggestion) {
|
||||
builder.addFormDataPart("label", "[Suggestion]")
|
||||
}
|
||||
|
||||
if (getCrashFile(context).exists()) {
|
||||
builder.addFormDataPart("label", "crash")
|
||||
deleteCrashFile(context)
|
||||
@ -418,10 +433,11 @@ class BugReporter @Inject constructor(private val activeSessionHolder: ActiveSes
|
||||
/**
|
||||
* Send a bug report either with email or with Vector.
|
||||
*/
|
||||
fun openBugReportScreen(activity: Activity) {
|
||||
fun openBugReportScreen(activity: Activity, forSuggestion: Boolean = true) {
|
||||
screenshot = takeScreenshot(activity)
|
||||
|
||||
val intent = Intent(activity, BugReportActivity::class.java)
|
||||
intent.putExtra("FOR_SUGGESTION", forSuggestion)
|
||||
activity.startActivity(intent)
|
||||
}
|
||||
|
||||
|
@ -61,6 +61,7 @@
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bug_report_first_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
@ -71,6 +72,7 @@
|
||||
android:textColor="?riotx_text_primary" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/bug_report_text_input_layout"
|
||||
style="@style/VectorTextInputLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@ -79,13 +81,13 @@
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:hint="@string/send_bug_report_placeholder"
|
||||
android:textColorHint="?attr/vctr_default_text_hint_color">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/bug_report_edit_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/send_bug_report_placeholder"
|
||||
android:minHeight="40dp"
|
||||
android:textColor="?riotx_text_primary" />
|
||||
|
||||
@ -103,6 +105,7 @@
|
||||
android:textSize="12sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/bug_report_logs_description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
|
@ -2,8 +2,8 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@+id/sliding_menu_sign_out"
|
||||
android:icon="@drawable/ic_material_exit_to_app"
|
||||
android:title="@string/action_sign_out" />
|
||||
android:id="@+id/menu_home_suggestion"
|
||||
android:icon="@drawable/ic_material_bug_report"
|
||||
android:title="@string/send_suggestion" />
|
||||
|
||||
</menu>
|
@ -40,4 +40,10 @@
|
||||
|
||||
<string name="settings_troubleshoot_test_token_registration_quick_fix">Register token</string>
|
||||
|
||||
<string name="send_suggestion">Propose a suggestion</string>
|
||||
<string name="send_suggestion_content">Please write your suggestion below.</string>
|
||||
<string name="send_suggestion_report_placeholder">Describe your suggestion here</string>
|
||||
<string name="send_suggestion_sent">Thanks, the suggestion has been successfully sent</string>
|
||||
<string name="send_suggestion_failed">The suggestion failed to be sent (%s)</string>
|
||||
|
||||
</resources>
|
Loading…
Reference in New Issue
Block a user