Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2021-03-21 17:48:45 +0300
committerGitHub <noreply@github.com>2021-03-21 17:48:45 +0300
commit729896a88b17723bf5ee699ae586381cf46d0c64 (patch)
tree1d93cb0fe802b2004eccabefffbd2119235c0240 /app/src/main/java/it/niedermann
parent0df58bfd1b8d81943e66e8f077701bbaef7ae236 (diff)
Make debug-logs accessable
Fix #880 Make debug-logs accessable
Diffstat (limited to 'app/src/main/java/it/niedermann')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java23
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/DeckLog.java34
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/MainViewModel.java7
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java13
5 files changed, 71 insertions, 10 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java b/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java
index 5518e8e9e..cef8ec355 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/DeckApplication.java
@@ -17,14 +17,35 @@ public class DeckApplication extends MultiDexApplication {
public static final long NO_STACK_ID = -1L;
private static String PREF_KEY_THEME;
+ private static String PREF_KEY_DEBUGGING;
@Override
public void onCreate() {
PREF_KEY_THEME = getString(R.string.pref_key_dark_theme);
- setAppTheme(getAppTheme(getApplicationContext()));
+ PREF_KEY_DEBUGGING = getString(R.string.pref_key_debugging);
+ setAppTheme(getAppTheme(this));
+ DeckLog.enablePeristentLogs(isPersistentLoggingEnabled(this));
super.onCreate();
}
+ @Override
+ public void onLowMemory() {
+ super.onLowMemory();
+ DeckLog.clearDebugLog();
+ DeckLog.error("--- cleared log because of low memory ---");
+ }
+
+ // ---------
+ // Debugging
+ // ---------
+
+ public static boolean isPersistentLoggingEnabled(@NonNull Context context) {
+ final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ boolean enabled = sharedPreferences.getBoolean(PREF_KEY_DEBUGGING, false);
+ DeckLog.log("--- Read: " + PREF_KEY_DEBUGGING + " | " + enabled);
+ return enabled;
+ }
+
// -----------------
// Day / Night theme
// -----------------
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/DeckLog.java b/app/src/main/java/it/niedermann/nextcloud/deck/DeckLog.java
index 47a0385e3..838a69265 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/DeckLog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/DeckLog.java
@@ -8,8 +8,18 @@ import java.io.PrintWriter;
import java.io.StringWriter;
public class DeckLog {
+
+ private static final StringBuffer DEBUG_LOG = new StringBuffer();
+ private static boolean PERSIST_LOGS = false;
private static final String TAG = DeckLog.class.getSimpleName();
+ public static void enablePeristentLogs(boolean persistLogs) {
+ PERSIST_LOGS = persistLogs;
+ if (!persistLogs) {
+ clearDebugLog();
+ }
+ }
+
public enum Severity {
VERBOSE, DEBUG, LOG, INFO, WARN, ERROR
}
@@ -39,17 +49,15 @@ public class DeckLog {
}
private static void log(String message, Severity severity, int stackTracePosition) {
- final String print;
- if (BuildConfig.DEBUG) {
- final StackTraceElement caller = Thread.currentThread().getStackTrace()[stackTracePosition];
- print = caller.getMethodName() + "() (" + caller.getFileName() + ":" + caller.getLineNumber() + ") → " + message;
- } else {
- print = message;
+ if (!(PERSIST_LOGS || BuildConfig.DEBUG)) {
+ return;
+ }
+ final StackTraceElement caller = Thread.currentThread().getStackTrace()[stackTracePosition];
+ final String print = caller.getMethodName() + "() (" + caller.getFileName() + ":" + caller.getLineNumber() + ") → " + message;
+ if (PERSIST_LOGS) {
+ DEBUG_LOG.append(print).append("\n");
}
switch (severity) {
- case VERBOSE:
- Log.v(TAG, print);
- break;
case DEBUG:
Log.d(TAG, print);
break;
@@ -106,4 +114,12 @@ public class DeckLog {
}
return buff.toString();
}
+
+ public static String getDebugLog() {
+ return DEBUG_LOG.toString();
+ }
+
+ public static void clearDebugLog() {
+ DEBUG_LOG.setLength(0);
+ }
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
index 877a5d977..b6011b247 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
@@ -53,6 +53,7 @@ import java.util.Objects;
import it.niedermann.android.crosstabdnd.CrossTabDragAndDrop;
import it.niedermann.android.tablayouthelper.TabLayoutHelper;
import it.niedermann.android.tablayouthelper.TabTitleGenerator;
+import it.niedermann.android.util.ClipboardUtil;
import it.niedermann.nextcloud.deck.DeckApplication;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
@@ -191,6 +192,8 @@ public class MainActivity extends BrandedActivity implements DeleteStackListener
binding.navigationView.setNavigationItemSelectedListener(this);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ mainViewModel.isDebugModeEnabled().observe(this, (enabled) -> headerBinding.copyDebugLogs.setVisibility(enabled ? View.VISIBLE : View.GONE));
+ headerBinding.copyDebugLogs.setOnClickListener((v) -> ClipboardUtil.INSTANCE.copyToClipboard(this, DeckLog.getDebugLog()));
switchMap(mainViewModel.hasAccounts(), hasAccounts -> {
if (hasAccounts) {
return mainViewModel.readAccounts();
@@ -415,6 +418,7 @@ public class MainActivity extends BrandedActivity implements DeleteStackListener
headerBinding.headerView.setBackgroundColor(mainColor);
@ColorInt final int headerTextColor = contrastRatioIsSufficientBigAreas(mainColor, Color.WHITE) ? Color.WHITE : Color.BLACK;
DrawableCompat.setTint(headerBinding.logo.getDrawable(), headerTextColor);
+ DrawableCompat.setTint(headerBinding.copyDebugLogs.getDrawable(), headerTextColor);
headerBinding.appName.setTextColor(headerTextColor);
DrawableCompat.setTint(binding.filterIndicator.getDrawable(), getSecondaryForegroundColorDependingOnTheme(this, mainColor));
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainViewModel.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainViewModel.java
index 62642971e..e7e754034 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainViewModel.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainViewModel.java
@@ -9,10 +9,13 @@ import androidx.core.util.Pair;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
+import androidx.preference.PreferenceManager;
import java.io.File;
import java.util.List;
+import it.niedermann.android.sharedpreferences.SharedPreferenceBooleanLiveData;
+import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.api.IResponseCallback;
import it.niedermann.nextcloud.deck.model.AccessControl;
import it.niedermann.nextcloud.deck.model.Account;
@@ -48,6 +51,10 @@ public class MainViewModel extends AndroidViewModel {
this.syncManager = new SyncManager(application);
}
+ public LiveData<Boolean> isDebugModeEnabled() {
+ return new SharedPreferenceBooleanLiveData(PreferenceManager.getDefaultSharedPreferences(getApplication()), getApplication().getString(R.string.pref_key_debugging), false);
+ }
+
public Account getCurrentAccount() {
return currentAccount.getValue();
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
index 1cf675f54..abc345bb7 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
@@ -24,6 +24,7 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Brande
private BrandedSwitchPreference wifiOnlyPref;
private BrandedSwitchPreference brandingPref;
private BrandedSwitchPreference compactPref;
+ private BrandedSwitchPreference debuggingPref;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
@@ -77,6 +78,17 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Brande
} else {
DeckLog.error("Could not find preference with key: \"" + getString(R.string.pref_key_background_sync) + "\"");
}
+
+ debuggingPref = findPreference(getString(R.string.pref_key_debugging));
+ if (debuggingPref != null) {
+ debuggingPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> {
+ DeckLog.enablePeristentLogs((Boolean) newValue);
+ DeckLog.log("persistet debug logs: " + newValue);
+ return true;
+ });
+ } else {
+ DeckLog.error("Could not find preference with key: \"" + getString(R.string.pref_key_debugging) + "\"");
+ }
}
@Override
@@ -93,5 +105,6 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Brande
wifiOnlyPref.applyBrand(mainColor);
brandingPref.applyBrand(mainColor);
compactPref.applyBrand(mainColor);
+ debuggingPref.applyBrand(mainColor);
}
}