Browse Source

Adds Connect/Disconnect functionality.

pull/8/head
Mushegh Sahakyan 4 years ago
parent
commit
3d4c593b9b
5 changed files with 27 additions and 52 deletions
  1. +26
    -10
      ui/src/main/java/com/wireguard/android/activity/MainActivity.java
  2. +0
    -13
      ui/src/main/java/com/wireguard/android/repository/DataRepository.java
  3. +0
    -17
      ui/src/main/java/com/wireguard/android/util/TunnelStore.java
  4. +0
    -12
      ui/src/main/java/com/wireguard/android/viewmodel/MainViewModel.java
  5. +1
    -0
      ui/src/main/res/values/strings.xml

+ 26
- 10
ui/src/main/java/com/wireguard/android/activity/MainActivity.java View File

@@ -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());
}
} }

+ 0
- 13
ui/src/main/java/com/wireguard/android/repository/DataRepository.java View File

@@ -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);
} }


+ 0
- 17
ui/src/main/java/com/wireguard/android/util/TunnelStore.java View File

@@ -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);
}
} }

+ 0
- 12
ui/src/main/java/com/wireguard/android/viewmodel/MainViewModel.java View File

@@ -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);
} }


+ 1
- 0
ui/src/main/res/values/strings.xml View File

@@ -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>

Loading…
Cancel
Save