mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-24 02:25:19 +00:00
feat: add share logs dialogs into settings activity
This commit is contained in:
parent
17b58b09e3
commit
a295cc384c
@ -123,7 +123,7 @@ class LogFile {
|
|||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String readEntry() throws IOException {
|
String readEntry() throws IOException {
|
||||||
try {
|
try {
|
||||||
Util.readFully(inputStream, ivBuffer);
|
Util.readFully(inputStream, ivBuffer);
|
||||||
Util.readFully(inputStream, intBuffer);
|
Util.readFully(inputStream, intBuffer);
|
||||||
|
@ -108,13 +108,18 @@ public class PersistentLogger extends Log.Logger {
|
|||||||
|
|
||||||
executor.execute(() -> {
|
executor.execute(() -> {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
|
long entriesWritten = 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
File[] logs = getSortedLogFiles();
|
File[] logs = getSortedLogFiles();
|
||||||
for (int i = logs.length - 1; i >= 0; i--) {
|
for (int i = logs.length - 1; i >= 0 && entriesWritten <= MAX_LOG_EXPORT; i--) {
|
||||||
try {
|
try {
|
||||||
LogFile.Reader reader = new LogFile.Reader(secret, logs[i]);
|
LogFile.Reader reader = new LogFile.Reader(secret, logs[i]);
|
||||||
builder.append(reader.readAll());
|
String entry;
|
||||||
|
while ((entry = reader.readEntry()) != null) {
|
||||||
|
entriesWritten++;
|
||||||
|
builder.append(entry).append('\n');
|
||||||
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
android.util.Log.w(TAG, "Failed to read log at index " + i + ". Removing reference.");
|
android.util.Log.w(TAG, "Failed to read log at index " + i + ". Removing reference.");
|
||||||
logs[i].delete();
|
logs[i].delete();
|
||||||
|
@ -85,6 +85,7 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
|
|||||||
helpTranslateButton.setOnClickListener { helpTranslate() }
|
helpTranslateButton.setOnClickListener { helpTranslate() }
|
||||||
seedButton.setOnClickListener { showSeed() }
|
seedButton.setOnClickListener { showSeed() }
|
||||||
clearAllDataButton.setOnClickListener { clearAllData() }
|
clearAllDataButton.setOnClickListener { clearAllData() }
|
||||||
|
supportButton.setOnClickListener { shareLogs() }
|
||||||
val isLightMode = UiModeUtilities.isDayUiMode(this)
|
val isLightMode = UiModeUtilities.isDayUiMode(this)
|
||||||
oxenLogoImageView.setImageResource(if (isLightMode) R.drawable.oxen_light_mode else R.drawable.oxen_dark_mode)
|
oxenLogoImageView.setImageResource(if (isLightMode) R.drawable.oxen_light_mode else R.drawable.oxen_dark_mode)
|
||||||
versionTextView.text = String.format(getString(R.string.version_s), "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})")
|
versionTextView.text = String.format(getString(R.string.version_s), "${BuildConfig.VERSION_NAME} (${BuildConfig.VERSION_CODE})")
|
||||||
@ -321,6 +322,10 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() {
|
|||||||
ClearAllDataDialog().show(supportFragmentManager, "Clear All Data Dialog")
|
ClearAllDataDialog().show(supportFragmentManager, "Clear All Data Dialog")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun shareLogs() {
|
||||||
|
ShareLogsDialog().show(supportFragmentManager,"Share Logs Dialog")
|
||||||
|
}
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
private inner class DisplayNameEditActionModeCallback: ActionMode.Callback {
|
private inner class DisplayNameEditActionModeCallback: ActionMode.Callback {
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
package org.thoughtcrime.securesms.preferences
|
||||||
|
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import kotlinx.android.synthetic.main.dialog_share_logs.view.*
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.Job
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import network.loki.messenger.R
|
||||||
|
import org.thoughtcrime.securesms.conversation.v2.utilities.BaseDialog
|
||||||
|
|
||||||
|
class ShareLogsDialog : BaseDialog() {
|
||||||
|
|
||||||
|
private var shareJob: Job? = null
|
||||||
|
|
||||||
|
override fun setContentView(builder: AlertDialog.Builder) {
|
||||||
|
val contentView =
|
||||||
|
LayoutInflater.from(requireContext()).inflate(R.layout.dialog_share_logs, null)
|
||||||
|
contentView.cancelButton.setOnClickListener {
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
contentView.shareButton.setOnClickListener {
|
||||||
|
// start the export and share
|
||||||
|
shareLogs()
|
||||||
|
}
|
||||||
|
builder.setView(contentView)
|
||||||
|
builder.setCancelable(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun shareLogs() {
|
||||||
|
shareJob?.cancel()
|
||||||
|
shareJob = lifecycleScope.launch(Dispatchers.IO) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -227,6 +227,18 @@
|
|||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="@string/activity_settings_survey_feedback" />
|
android:text="@string/activity_settings_survey_feedback" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:padding="@dimen/small_spacing"
|
||||||
|
android:id="@+id/supportButton"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/medium_spacing"
|
||||||
|
android:textColor="@color/text"
|
||||||
|
android:textSize="@dimen/medium_font_size"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/activity_settings_support" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:padding="@dimen/small_spacing"
|
android:padding="@dimen/small_spacing"
|
||||||
android:id="@+id/helpTranslateButton"
|
android:id="@+id/helpTranslateButton"
|
||||||
|
64
app/src/main/res/layout/dialog_share_logs.xml
Normal file
64
app/src/main/res/layout/dialog_share_logs.xml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:background="@drawable/default_dialog_background_inset"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:elevation="4dp"
|
||||||
|
android:padding="32dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/dialog_share_logs_title"
|
||||||
|
android:textColor="@color/text"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:textSize="@dimen/medium_font_size" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/dialogDescriptionText"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/large_spacing"
|
||||||
|
android:text="@string/dialog_share_logs_explanation"
|
||||||
|
android:textColor="@color/text"
|
||||||
|
android:textSize="@dimen/small_font_size"
|
||||||
|
android:textAlignment="center" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/large_spacing"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<Button
|
||||||
|
style="@style/Widget.Session.Button.Dialog.Unimportant"
|
||||||
|
android:id="@+id/cancelButton"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="@dimen/small_button_height"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/cancel" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
style="@style/Widget.Session.Button.Dialog"
|
||||||
|
android:id="@+id/shareButton"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_marginStart="@dimen/medium_spacing"
|
||||||
|
android:text="@string/share" />
|
||||||
|
|
||||||
|
<com.github.ybq.android.spinkit.SpinKitView
|
||||||
|
style="@style/SpinKitView.Small.ThreeBounce"
|
||||||
|
android:id="@+id/progressBar"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="@dimen/small_button_height"
|
||||||
|
android:layout_weight="1"
|
||||||
|
app:SpinKit_Color="@color/accent"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -899,5 +899,8 @@
|
|||||||
<string name="delete_message_for_everyone">Delete for everyone</string>
|
<string name="delete_message_for_everyone">Delete for everyone</string>
|
||||||
<string name="delete_message_for_me_and_recipient">Delete for me and %s</string>
|
<string name="delete_message_for_me_and_recipient">Delete for me and %s</string>
|
||||||
<string name="activity_settings_survey_feedback">Feedback/Survey</string>
|
<string name="activity_settings_survey_feedback">Feedback/Survey</string>
|
||||||
|
<string name="activity_settings_support">Support</string>
|
||||||
|
<string name="dialog_share_logs_title">Share Logs</string>
|
||||||
|
<string name="dialog_share_logs_explanation">Would you like to export your application logs to be able to share for troubleshooting?</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user