Added: Add multi process support in TermuxAppSharedPreferences since plugin apps may need to read values modified by termux app process

This commit is contained in:
agnostic-apollo
2022-03-16 20:59:48 +05:00
parent 621545dd0a
commit 4b07e4f4c0
4 changed files with 23 additions and 8 deletions

View File

@@ -648,7 +648,7 @@ public final class TermuxService extends Service implements AppShell.AppShellCli
} else { } else {
TermuxAppSharedPreferences preferences = TermuxAppSharedPreferences.build(this); TermuxAppSharedPreferences preferences = TermuxAppSharedPreferences.build(this);
if (preferences == null) return; if (preferences == null) return;
if (preferences.arePluginErrorNotificationsEnabled()) if (preferences.arePluginErrorNotificationsEnabled(false))
Logger.showToast(this, this.getString(R.string.error_display_over_other_apps_permission_not_granted), true); Logger.showToast(this, this.getString(R.string.error_display_over_other_apps_permission_not_granted), true);
} }
} }

View File

@@ -144,9 +144,9 @@ class DebuggingPreferencesDataStore extends PreferenceDataStore {
case "terminal_view_key_logging_enabled": case "terminal_view_key_logging_enabled":
return mPreferences.isTerminalViewKeyLoggingEnabled(); return mPreferences.isTerminalViewKeyLoggingEnabled();
case "plugin_error_notifications_enabled": case "plugin_error_notifications_enabled":
return mPreferences.arePluginErrorNotificationsEnabled(); return mPreferences.arePluginErrorNotificationsEnabled(false);
case "crash_report_notifications_enabled": case "crash_report_notifications_enabled":
return mPreferences.areCrashReportNotificationsEnabled(); return mPreferences.areCrashReportNotificationsEnabled(false);
default: default:
return false; return false;
} }

View File

@@ -241,7 +241,7 @@ public class PluginUtils {
if (preferences == null) return; if (preferences == null) return;
// If user has disabled notifications for plugin commands, then just return // If user has disabled notifications for plugin commands, then just return
if (!preferences.arePluginErrorNotificationsEnabled() && !forceNotification) if (!preferences.arePluginErrorNotificationsEnabled(true) && !forceNotification)
return; return;
logTag = DataUtils.getDefaultIfNull(logTag, LOG_TAG); logTag = DataUtils.getDefaultIfNull(logTag, LOG_TAG);

View File

@@ -20,6 +20,7 @@ public class TermuxAppSharedPreferences {
private final Context mContext; private final Context mContext;
private final SharedPreferences mSharedPreferences; private final SharedPreferences mSharedPreferences;
private final SharedPreferences mMultiProcessSharedPreferences;
private int MIN_FONTSIZE; private int MIN_FONTSIZE;
private int MAX_FONTSIZE; private int MAX_FONTSIZE;
@@ -30,6 +31,8 @@ public class TermuxAppSharedPreferences {
private TermuxAppSharedPreferences(@NonNull Context context) { private TermuxAppSharedPreferences(@NonNull Context context) {
mContext = context; mContext = context;
mSharedPreferences = getPrivateSharedPreferences(mContext); mSharedPreferences = getPrivateSharedPreferences(mContext);
mMultiProcessSharedPreferences = getPrivateAndMultiProcessSharedPreferences(mContext);
setFontVariables(context); setFontVariables(context);
} }
@@ -73,6 +76,12 @@ public class TermuxAppSharedPreferences {
} }
private static SharedPreferences getPrivateAndMultiProcessSharedPreferences(Context context) {
if (context == null) return null;
return SharedPreferenceUtils.getPrivateAndMultiProcessSharedPreferences(context, TermuxConstants.TERMUX_DEFAULT_PREFERENCES_FILE_BASENAME_WITHOUT_EXTENSION);
}
public boolean shouldShowTerminalToolbar() { public boolean shouldShowTerminalToolbar() {
return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_SHOW_TERMINAL_TOOLBAR, TERMUX_APP.DEFAULT_VALUE_SHOW_TERMINAL_TOOLBAR); return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_SHOW_TERMINAL_TOOLBAR, TERMUX_APP.DEFAULT_VALUE_SHOW_TERMINAL_TOOLBAR);
@@ -218,7 +227,10 @@ public class TermuxAppSharedPreferences {
public boolean arePluginErrorNotificationsEnabled() { public boolean arePluginErrorNotificationsEnabled(boolean readFromFile) {
if (readFromFile)
return SharedPreferenceUtils.getBoolean(mMultiProcessSharedPreferences, TERMUX_APP.KEY_PLUGIN_ERROR_NOTIFICATIONS_ENABLED, TERMUX_APP.DEFAULT_VALUE_PLUGIN_ERROR_NOTIFICATIONS_ENABLED);
else
return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_PLUGIN_ERROR_NOTIFICATIONS_ENABLED, TERMUX_APP.DEFAULT_VALUE_PLUGIN_ERROR_NOTIFICATIONS_ENABLED); return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_PLUGIN_ERROR_NOTIFICATIONS_ENABLED, TERMUX_APP.DEFAULT_VALUE_PLUGIN_ERROR_NOTIFICATIONS_ENABLED);
} }
@@ -228,7 +240,10 @@ public class TermuxAppSharedPreferences {
public boolean areCrashReportNotificationsEnabled() { public boolean areCrashReportNotificationsEnabled(boolean readFromFile) {
if (readFromFile)
return SharedPreferenceUtils.getBoolean(mMultiProcessSharedPreferences, TERMUX_APP.KEY_CRASH_REPORT_NOTIFICATIONS_ENABLED, TERMUX_APP.DEFAULT_VALUE_CRASH_REPORT_NOTIFICATIONS_ENABLED);
else
return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_CRASH_REPORT_NOTIFICATIONS_ENABLED, TERMUX_APP.DEFAULT_VALUE_CRASH_REPORT_NOTIFICATIONS_ENABLED); return SharedPreferenceUtils.getBoolean(mSharedPreferences, TERMUX_APP.KEY_CRASH_REPORT_NOTIFICATIONS_ENABLED, TERMUX_APP.DEFAULT_VALUE_CRASH_REPORT_NOTIFICATIONS_ENABLED);
} }