aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/src/main/java/com/wireguard/android/fragment (follow)
Commit message (Collapse)AuthorAgeFilesLines
* ui: animate fab position in tunnel deletion flowHarsh Shandilya2020-04-081-0/+19
| | | | | | | | When tunnel deletion is triggered we don't bother with animation theatrics because the resulting Snackbar needs this fab to be its anchor, which it can't do if its outside the screen or busy animating. Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* TunnelListFragment: onCreateActionMode is called before adapter is aliveJason A. Donenfeld2020-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Long press a tunnel item. SIGKILL the app. Reenter it. Boom: kotlin.KotlinNullPointerException: at com.wireguard.android.fragment.TunnelListFragment$ActionModeListener.onCreateActionMode (TunnelListFragment.java:347) at androidx.appcompat.app.AppCompatDelegateImpl$ActionModeCallbackWrapperV9.onCreateActionMode (AppCompatDelegateImpl.java:2442) at androidx.appcompat.app.WindowDecorActionBar$ActionModeImpl.dispatchOnCreate (WindowDecorActionBar.java:1062) at androidx.appcompat.app.WindowDecorActionBar.startActionMode (WindowDecorActionBar.java:530) at androidx.appcompat.app.AppCompatDelegateImpl.startSupportActionMode (AppCompatDelegateImpl.java:1055) at androidx.appcompat.app.AppCompatActivity.startSupportActionMode (AppCompatActivity.java:316) at com.wireguard.android.fragment.TunnelListFragment$ActionModeListener.setItemChecked (TunnelListFragment.java:371) at com.wireguard.android.fragment.TunnelListFragment.onActivityCreated (TunnelListFragment.java:174) at androidx.fragment.app.Fragment.performActivityCreated (Fragment.java:2717) at androidx.fragment.app.FragmentStateManager.activityCreated (FragmentStateManager.java:346) at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1188) at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:161) at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1356) at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:5) at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState (FragmentManager.java:1434) at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState (FragmentManager.java:5) at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1497) at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:389) at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:2625) at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:677) at androidx.fragment.app.FragmentManager.dispatchActivityCreated (FragmentManager.java:2577) at androidx.fragment.app.FragmentManager.dispatchActivityCreated (FragmentManager.java:9) at androidx.fragment.app.FragmentController.dispatchActivityCreated (FragmentController.java:247) at androidx.fragment.app.FragmentActivity.onStart (FragmentActivity.java:541) at androidx.appcompat.app.AppCompatActivity.onStart (AppCompatActivity.java:201) at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1440) at android.app.Activity.performStart (Activity.java:8109) at android.app.ActivityThread.handleStartActivity (ActivityThread.java:3806) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:235) at android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:215) at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:187) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:105) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2386) at android.os.Handler.dispatchMessage (Handler.java:107) at android.os.Looper.loop (Looper.java:213) at android.app.ActivityThread.main (ActivityThread.java:8178) at java.lang.reflect.Method.invoke (Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1101) This commit avoids the crash. But it's not clear to me that this is really the right solution. However, in testing it appears to work. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: misc cleanups to AppListDialogFragmentHarsh Shandilya2020-04-062-14/+14
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* AppListDialogFragment: support both inclusion and exclusionJason A. Donenfeld2020-04-062-33/+79
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* TunnelEditorFragment: don't show bioauth if already visibleJason A. Donenfeld2020-03-301-0/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* global: cleanup code styleJason A. Donenfeld2020-03-302-2/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* BiometricAuthenticator: rework logic and bugsJason A. Donenfeld2020-03-301-5/+10
| | | | | | | Otherwise there's a frameworks bug that causes the fragment's activity to become null. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* BiometricAuthenticator: implement biometric authentication for sensitive operationsHarsh Shandilya2020-03-301-5/+20
| | | | | | | | When biometric hardware is available, it will be used to authenticate the user before private keys are shown on screen or when zip exports are executed. Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* TunnelEditorFragment: add hooks for biometric authJason A. Donenfeld2020-03-301-2/+20
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* AddTunnelsSheet: Make behaviour nullableHarsh Shandilya2020-03-291-3/+3
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* global: hardcode tags so that minification doesn't ruin the logJason A. Donenfeld2020-03-283-3/+3
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: Remove unnecessary non-null assertion in TAG fieldsHarsh Shandilya2020-03-283-3/+3
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* ui: use kotlin class instead of java class for tagJason A. Donenfeld2020-03-283-3/+3
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* TunnelEditor: move generate button to inside boxJason A. Donenfeld2020-03-281-0/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* Disable screen capture in tunnel editorHarsh Shandilya2020-03-281-0/+3
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* ui: Replace ErrorMessages getter with indexing operatorHarsh Shandilya2020-03-274-8/+8
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* databinding: rewrite in kotlinJason A. Donenfeld2020-03-272-17/+19
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* TunnelManager: convert to kotlinJason A. Donenfeld2020-03-261-4/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ObservableTunnel: port to kotlinJason A. Donenfeld2020-03-262-4/+4
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: cleanup various pieces of kotlinJason A. Donenfeld2020-03-263-8/+8
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: squelch warningsJason A. Donenfeld2020-03-241-1/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* viewmodel: port to kotlinJason A. Donenfeld2020-03-211-4/+4
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* EdgeToEdge: move into widgetJason A. Donenfeld2020-03-203-9/+7
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* TunnelListFragment: cleanup list typeJason A. Donenfeld2020-03-191-4/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* TunnelListFragment: catch all parsing exceptionsJason A. Donenfeld2020-03-191-4/+1
| | | | | | | Otherwise we crash if weird things happen. Reported-by: Luis Ressel <aranea@aixah.de> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* Use more Kotlin-esque code where applicableHarsh Shandilya2020-03-197-90/+70
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* ui: Convert fragment package to KotlinHarsh Shandilya2020-03-1912-1271/+1119
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* ui: Codestyle cleanupsHarsh Shandilya2020-03-102-37/+36
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* BaseFragment: Always anchor Snackbars to FABHarsh Shandilya2020-03-101-1/+1
| | | | | | This makes tunnel list fragment correctly render them above the FAB. Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* TunnelDetailFragment: avoid integer overflowJason A. Donenfeld2020-03-091-1/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* global: format codeJason A. Donenfeld2020-03-092-42/+42
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* global: optimize importsJason A. Donenfeld2020-03-096-40/+35
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* global: get rid of nonnull gradle hackJason A. Donenfeld2020-03-096-0/+18
| | | | | | | | | | Hacking things up via gradle is not right, and package-info.java poses problems with two modules, so instead we just apply it manually to every class. Remember to add this to new classes! Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* Rename app module to uiHarsh Shandilya2020-03-097-0/+1365
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>