diff --git a/ui/src/main/java/com/wireguard/android/activity/MainActivity.java b/ui/src/main/java/com/wireguard/android/activity/MainActivity.java index b2ca5f8..f3f99ed 100644 --- a/ui/src/main/java/com/wireguard/android/activity/MainActivity.java +++ b/ui/src/main/java/com/wireguard/android/activity/MainActivity.java @@ -26,6 +26,7 @@ public class MainActivity extends AppCompatActivity { public ObservableTunnel pendingTunnel; private Boolean pendingTunnelUp; private boolean connectionStateFlag; + private ObservableTunnel tunnel ; private static final int REQUEST_CODE_VPN_PERMISSION = 23491; @@ -42,8 +43,28 @@ public class MainActivity extends AppCompatActivity { } initUI(); mainViewModel.buildRepositoryInstance(this,mainViewModel.getUserURL(this)); - connectionStateFlag = mainViewModel.getConnectionState(this); - bubbleStatus.setText(mainViewModel.isBubbleConnected(this)); + tunnel = mainViewModel.getTunnelManager().getLastUsedTunnel(); + if(tunnel == null) { + tunnel = mainViewModel.getTunnel(this, connectionStateFlag); + } + } + + @Override protected void onResume() { + super.onResume(); + if(tunnel!=null){ + if(tunnel.getState() == State.DOWN) + { + connectionStateFlag = false; + bubbleStatus.setText(getString(R.string.not_connected_bubble)); + connectButton.setText(getString(R.string.connect)); + } + else { + connectionStateFlag = true; + bubbleStatus.setText(getString(R.string.connected_bubble)); + connectButton.setText(getString(R.string.disconnect)); + } + } + pendingTunnel = tunnel; } private void initUI() { @@ -65,8 +86,6 @@ public class MainActivity extends AppCompatActivity { } private void connect() { - ObservableTunnel tunnel = mainViewModel.getTunnel(this, connectionStateFlag); - pendingTunnel = tunnel; mainViewModel.getTunnelManager().getTunnelState(pendingTunnel).whenComplete((state, throwable) -> { if (state == State.DOWN) { connectionStateFlag = true; @@ -99,13 +118,15 @@ public class MainActivity extends AppCompatActivity { private void setTunnelStateWithPermissionsResult(final ObservableTunnel tunnel, final boolean checked) { tunnel.setStateAsync(Tunnel.State.of(checked)).whenComplete((observableTunnel, throwable) ->{ if(throwable==null){ - if(observableTunnel.equals(State.DOWN)) { + if(observableTunnel == State.DOWN) { Toast.makeText(this, getString(R.string.not_connected_bubble), Toast.LENGTH_SHORT).show(); bubbleStatus.setText(getString(R.string.not_connected_bubble)); + connectButton.setText(getString(R.string.connect)); } else { Toast.makeText(this, getString(R.string.connected_bubble), Toast.LENGTH_SHORT).show(); bubbleStatus.setText(getString(R.string.connected_bubble)); + connectButton.setText(getString(R.string.disconnect)); } } else { @@ -122,9 +143,4 @@ public class MainActivity extends AppCompatActivity { pendingTunnelUp = null; } } - - @Override protected void onDestroy() { - super.onDestroy(); - mainViewModel.setConnectionState(this,connectionStateFlag,bubbleStatus.getText().toString()); - } } diff --git a/ui/src/main/java/com/wireguard/android/repository/DataRepository.java b/ui/src/main/java/com/wireguard/android/repository/DataRepository.java index 9c99def..5dada76 100644 --- a/ui/src/main/java/com/wireguard/android/repository/DataRepository.java +++ b/ui/src/main/java/com/wireguard/android/repository/DataRepository.java @@ -341,19 +341,6 @@ public class DataRepository { return tunnel; } - - public boolean getConnectionState(Context context){ - return TunnelStore.getInstance(context).getConnectionState(); - } - - public String isBubbleConnected(Context context){ - return TunnelStore.getInstance(context).isBubbleConnected(); - } - - public void setConnectionState(final Context context, final boolean state, final String stateConnection){ - TunnelStore.getInstance(context).setConnectionState(state,stateConnection); - } - public void setUserURL(Context context, String url){ UserStore.getInstance(context).setUserURL(url); } diff --git a/ui/src/main/java/com/wireguard/android/util/TunnelStore.java b/ui/src/main/java/com/wireguard/android/util/TunnelStore.java index 264762e..d57914d 100644 --- a/ui/src/main/java/com/wireguard/android/util/TunnelStore.java +++ b/ui/src/main/java/com/wireguard/android/util/TunnelStore.java @@ -10,10 +10,6 @@ public class TunnelStore { private static final String TUNNEL_SHARED_PREF = "com.wireguard.android.util.bubbleTunnelSharedPref"; private static final String TUNNEL_DATA_KEY = "com.wireguard.android.util.bubbleResponse"; private static final String CONFIG_DATA_KEY = "com.wireguard.android.util.bubbleConfigResponse"; - private static final String CONNECTION_STATE_KEY = "com.wireguard.android.util.connectionStateResponse"; - private static final String CONNECTION_STATE_STRING_KEY = "com.wireguard.android.util.connectionStateStringResponse"; - private static final boolean CONNECTION_STATE_DEFAULT_VALUE = false; - private static final String CONNECTION_STATE_STRING_DEFAULT_VALUE = "Not Connected"; public static final String TUNNEL_DEFAULT_VALUE = ""; public static final String CONFIG_DEFAULT_VALUE = ""; @@ -45,17 +41,4 @@ public class TunnelStore { public String getConfig(){ return sharedPreferences.getString(CONFIG_DATA_KEY,CONFIG_DEFAULT_VALUE); } - - public void setConnectionState(final boolean state, final String stateConnection){ - sharedPreferences.edit().putBoolean(CONNECTION_STATE_KEY,state).apply(); - sharedPreferences.edit().putString(CONNECTION_STATE_STRING_KEY,stateConnection).apply(); - } - - public boolean getConnectionState(){ - return sharedPreferences.getBoolean(CONNECTION_STATE_KEY,CONNECTION_STATE_DEFAULT_VALUE); - } - - public String isBubbleConnected(){ - return sharedPreferences.getString(CONNECTION_STATE_STRING_KEY,CONNECTION_STATE_STRING_DEFAULT_VALUE); - } } diff --git a/ui/src/main/java/com/wireguard/android/viewmodel/MainViewModel.java b/ui/src/main/java/com/wireguard/android/viewmodel/MainViewModel.java index 1c2d6f9..55ad32c 100644 --- a/ui/src/main/java/com/wireguard/android/viewmodel/MainViewModel.java +++ b/ui/src/main/java/com/wireguard/android/viewmodel/MainViewModel.java @@ -23,18 +23,6 @@ public class MainViewModel extends ViewModel { return DataRepository.getRepositoryInstance().getTunnelManager(); } - public boolean getConnectionState(Context context){ - return DataRepository.getRepositoryInstance().getConnectionState(context); - } - - public String isBubbleConnected(Context context){ - return DataRepository.getRepositoryInstance().isBubbleConnected(context); - } - - public void setConnectionState(final Context context, final boolean state, final String stateConnection){ - DataRepository.getRepositoryInstance().setConnectionState(context,state,stateConnection); - } - public void buildRepositoryInstance(Context context, String url){ DataRepository.buildRepositoryInstance(context,url); } diff --git a/ui/src/main/res/values/strings.xml b/ui/src/main/res/values/strings.xml index 95ef43e..66c6a47 100644 --- a/ui/src/main/res/values/strings.xml +++ b/ui/src/main/res/values/strings.xml @@ -245,4 +245,5 @@ Not Connected Connected Failed + Disconnect