diff options
| author | 2018-06-05 05:31:27 +0200 | |
|---|---|---|
| committer | 2018-06-05 06:17:00 +0200 | |
| commit | a17ec6b1f755ad2bbe733393bba340ef474deeae (patch) | |
| tree | 8b1bc32bfab35c9bda0a0ce22f7e6132aa96ecc1 /app/src/main/java/com/wireguard/android/preference/ToolsInstallerPreference.java | |
| parent | libwg-go: better error when using unpatched Go (diff) | |
| download | wireguard-android-a17ec6b1f755ad2bbe733393bba340ef474deeae.tar.xz wireguard-android-a17ec6b1f755ad2bbe733393bba340ef474deeae.zip | |
ToolsInstaller: allow installing as Magisk module
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/android/preference/ToolsInstallerPreference.java')
| -rw-r--r-- | app/src/main/java/com/wireguard/android/preference/ToolsInstallerPreference.java | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/app/src/main/java/com/wireguard/android/preference/ToolsInstallerPreference.java b/app/src/main/java/com/wireguard/android/preference/ToolsInstallerPreference.java index 437d05e3..4d9e0fa8 100644 --- a/app/src/main/java/com/wireguard/android/preference/ToolsInstallerPreference.java +++ b/app/src/main/java/com/wireguard/android/preference/ToolsInstallerPreference.java @@ -26,7 +26,7 @@ import com.wireguard.android.util.ToolsInstaller; public class ToolsInstallerPreference extends Preference { private final AsyncWorker asyncWorker; private final ToolsInstaller toolsInstaller; - private State state = State.INITIAL; + private State state; @SuppressWarnings({"SameParameterValue", "WeakerAccess"}) public ToolsInstallerPreference(final Context context, final AttributeSet attrs) { @@ -34,6 +34,7 @@ public class ToolsInstallerPreference extends Preference { final ApplicationComponent applicationComponent = Application.getComponent(); asyncWorker = applicationComponent.getAsyncWorker(); toolsInstaller = applicationComponent.getToolsInstaller(); + state = initialState(); } @Override @@ -54,12 +55,12 @@ public class ToolsInstallerPreference extends Preference { private void onCheckResult(final Integer result, final Throwable throwable) { setState(throwable == null && result == OsConstants.EALREADY ? - State.ALREADY : State.INITIAL); + State.ALREADY : initialState()); } @Override protected void onClick() { - setState(State.WORKING); + setState(workingState()); asyncWorker.supplyAsync(toolsInstaller::install).whenComplete(this::onInstallResult); } @@ -68,7 +69,7 @@ public class ToolsInstallerPreference extends Preference { if (throwable != null) nextState = State.FAILURE; else if (result == OsConstants.EXIT_SUCCESS) - nextState = State.SUCCESS; + nextState = successState(); else if (result == OsConstants.EALREADY) nextState = State.ALREADY; else @@ -85,12 +86,25 @@ public class ToolsInstallerPreference extends Preference { notifyChanged(); } + private State initialState() { + return toolsInstaller.willInstallAsMagiskModule() ? State.INITIAL_MAGISK : State.INITIAL_SYSTEM; + } + private State workingState() { + return toolsInstaller.willInstallAsMagiskModule() ? State.WORKING_MAGISK : State.WORKING_SYSTEM; + } + private State successState() { + return toolsInstaller.willInstallAsMagiskModule() ? State.SUCCESS_MAGISK : State.SUCCESS_SYSTEM; + } + private enum State { ALREADY(R.string.tools_installer_already, false), FAILURE(R.string.tools_installer_failure, true), - INITIAL(R.string.tools_installer_initial, true), - SUCCESS(R.string.tools_installer_success, false), - WORKING(R.string.tools_installer_working, false); + INITIAL_SYSTEM(R.string.tools_installer_initial_system, true), + SUCCESS_SYSTEM(R.string.tools_installer_success_system, false), + WORKING_SYSTEM(R.string.tools_installer_working_system, false), + INITIAL_MAGISK(R.string.tools_installer_initial_magisk, true), + SUCCESS_MAGISK(R.string.tools_installer_success_magisk, false), + WORKING_MAGISK(R.string.tools_installer_working_magisk, false); private final int messageResourceId; private final boolean shouldEnableView; |
