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

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

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


+ 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_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);
}
}

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

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


+ 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="connected_bubble">Connected</string>
<string name="failed_bubble">Failed</string>
<string name="disconnect">Disconnect</string>
</resources>

Loading…
Cancel
Save