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