@@ -26,6 +26,7 @@ public class MainActivity extends AppCompatActivity { | |||||
public ObservableTunnel pendingTunnel; | public ObservableTunnel pendingTunnel; | ||||
private Boolean pendingTunnelUp; | private Boolean pendingTunnelUp; | ||||
private boolean connectionStateFlag; | private boolean connectionStateFlag; | ||||
private ObservableTunnel tunnel ; | |||||
private static final int REQUEST_CODE_VPN_PERMISSION = 23491; | private static final int REQUEST_CODE_VPN_PERMISSION = 23491; | ||||
@@ -42,8 +43,28 @@ public class MainActivity extends AppCompatActivity { | |||||
} | } | ||||
initUI(); | initUI(); | ||||
mainViewModel.buildRepositoryInstance(this,mainViewModel.getUserURL(this)); | 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() { | private void initUI() { | ||||
@@ -65,8 +86,6 @@ public class MainActivity extends AppCompatActivity { | |||||
} | } | ||||
private void connect() { | private void connect() { | ||||
ObservableTunnel tunnel = mainViewModel.getTunnel(this, connectionStateFlag); | |||||
pendingTunnel = tunnel; | |||||
mainViewModel.getTunnelManager().getTunnelState(pendingTunnel).whenComplete((state, throwable) -> { | mainViewModel.getTunnelManager().getTunnelState(pendingTunnel).whenComplete((state, throwable) -> { | ||||
if (state == State.DOWN) { | if (state == State.DOWN) { | ||||
connectionStateFlag = true; | connectionStateFlag = true; | ||||
@@ -99,13 +118,15 @@ public class MainActivity extends AppCompatActivity { | |||||
private void setTunnelStateWithPermissionsResult(final ObservableTunnel tunnel, final boolean checked) { | private void setTunnelStateWithPermissionsResult(final ObservableTunnel tunnel, final boolean checked) { | ||||
tunnel.setStateAsync(Tunnel.State.of(checked)).whenComplete((observableTunnel, throwable) ->{ | tunnel.setStateAsync(Tunnel.State.of(checked)).whenComplete((observableTunnel, throwable) ->{ | ||||
if(throwable==null){ | 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(); | Toast.makeText(this, getString(R.string.not_connected_bubble), Toast.LENGTH_SHORT).show(); | ||||
bubbleStatus.setText(getString(R.string.not_connected_bubble)); | bubbleStatus.setText(getString(R.string.not_connected_bubble)); | ||||
connectButton.setText(getString(R.string.connect)); | |||||
} | } | ||||
else { | else { | ||||
Toast.makeText(this, getString(R.string.connected_bubble), Toast.LENGTH_SHORT).show(); | Toast.makeText(this, getString(R.string.connected_bubble), Toast.LENGTH_SHORT).show(); | ||||
bubbleStatus.setText(getString(R.string.connected_bubble)); | bubbleStatus.setText(getString(R.string.connected_bubble)); | ||||
connectButton.setText(getString(R.string.disconnect)); | |||||
} | } | ||||
} | } | ||||
else { | else { | ||||
@@ -122,9 +143,4 @@ public class MainActivity extends AppCompatActivity { | |||||
pendingTunnelUp = null; | pendingTunnelUp = null; | ||||
} | } | ||||
} | } | ||||
@Override protected void onDestroy() { | |||||
super.onDestroy(); | |||||
mainViewModel.setConnectionState(this,connectionStateFlag,bubbleStatus.getText().toString()); | |||||
} | |||||
} | } |
@@ -341,19 +341,6 @@ public class DataRepository { | |||||
return tunnel; | 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){ | public void setUserURL(Context context, String url){ | ||||
UserStore.getInstance(context).setUserURL(url); | UserStore.getInstance(context).setUserURL(url); | ||||
} | } | ||||
@@ -10,10 +10,6 @@ public class TunnelStore { | |||||
private static final String TUNNEL_SHARED_PREF = "com.wireguard.android.util.bubbleTunnelSharedPref"; | 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 TUNNEL_DATA_KEY = "com.wireguard.android.util.bubbleResponse"; | ||||
private static final String CONFIG_DATA_KEY = "com.wireguard.android.util.bubbleConfigResponse"; | 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 TUNNEL_DEFAULT_VALUE = ""; | ||||
public static final String CONFIG_DEFAULT_VALUE = ""; | public static final String CONFIG_DEFAULT_VALUE = ""; | ||||
@@ -45,17 +41,4 @@ public class TunnelStore { | |||||
public String getConfig(){ | public String getConfig(){ | ||||
return sharedPreferences.getString(CONFIG_DATA_KEY,CONFIG_DEFAULT_VALUE); | 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); | |||||
} | |||||
} | } |
@@ -23,18 +23,6 @@ public class MainViewModel extends ViewModel { | |||||
return DataRepository.getRepositoryInstance().getTunnelManager(); | 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){ | public void buildRepositoryInstance(Context context, String url){ | ||||
DataRepository.buildRepositoryInstance(context,url); | DataRepository.buildRepositoryInstance(context,url); | ||||
} | } | ||||
@@ -245,4 +245,5 @@ | |||||
<string name="not_connected_bubble">Not Connected</string> | <string name="not_connected_bubble">Not Connected</string> | ||||
<string name="connected_bubble">Connected</string> | <string name="connected_bubble">Connected</string> | ||||
<string name="failed_bubble">Failed</string> | <string name="failed_bubble">Failed</string> | ||||
<string name="disconnect">Disconnect</string> | |||||
</resources> | </resources> |