#6 Adds create tunnel functionality.

Yhdistetty
gegham yhdistetty 1 committia lähteestä create_tunnel kohteeseen dev 4 vuotta sitten
  1. +22
    -15
      ui/src/main/java/com/wireguard/android/activity/LoginActivity.java
  2. +25
    -2
      ui/src/main/java/com/wireguard/android/repository/DataRepository.java
  3. +4
    -2
      ui/src/main/java/com/wireguard/android/viewmodel/LoginViewModel.java

+ 22
- 15
ui/src/main/java/com/wireguard/android/activity/LoginActivity.java Näytä tiedosto

@@ -2,6 +2,8 @@ package com.wireguard.android.activity;

import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
@@ -9,6 +11,7 @@ import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.wireguard.android.R;
import com.wireguard.android.model.User;
import com.wireguard.android.resource.StatusResource;
@@ -38,10 +41,11 @@ public class LoginActivity extends BaseActivityBubble {
private void initListeners() {
sign.setOnClickListener(new OnClickListener() {
@Override public void onClick(final View v) {
final String tunnelName = bubbleName.getText().toString().trim();
final String username = userName.getText().toString().trim();
final String password = LoginActivity.this.password.getText().toString().trim();
showLoadingDialog();
login(username,password);
login(tunnelName, username, password);
}
});
}
@@ -53,23 +57,26 @@ public class LoginActivity extends BaseActivityBubble {
sign = findViewById(R.id.signButton);
}

private void login(String username, String password) {
loginViewModel.login(username,password,this).observe(this, new Observer<StatusResource<User>>() {
private void login(String tunnelName, String username, String password) {
loginViewModel.login(tunnelName, username, password, this).observe(this, new Observer<StatusResource<User>>() {
@Override public void onChanged(final StatusResource<User> userStatusResource) {
switch (userStatusResource.status) {
case SUCCESS:
Toast.makeText(LoginActivity.this, "Success", Toast.LENGTH_SHORT).show();
Log.d("TAG", "Success");
closeLoadingDialog();
break;
case LOADING:
Log.d("TAG", "Loading");
break;
case ERROR:
closeLoadingDialog();
Toast.makeText(LoginActivity.this, "Login Failed", Toast.LENGTH_SHORT).show();
Log.d("TAG", "Error");
break;
Toast.makeText(LoginActivity.this, "Success", Toast.LENGTH_SHORT).show();
Log.d("TAG", "Success");
closeLoadingDialog();
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
break;
case LOADING:
Log.d("TAG", "Loading");
break;
case ERROR:
closeLoadingDialog();
Toast.makeText(LoginActivity.this, "Login Failed", Toast.LENGTH_SHORT).show();
Log.d("TAG", "Error");
break;
}
}
});


+ 25
- 2
ui/src/main/java/com/wireguard/android/repository/DataRepository.java Näytä tiedosto

@@ -5,6 +5,7 @@ import android.os.Build;
import android.provider.Settings;
import android.provider.Settings.Secure;

import com.wireguard.android.Application;
import com.wireguard.android.api.ApiConstants;
import com.wireguard.android.api.network.ClientApi;
import com.wireguard.android.api.network.ClientService;
@@ -13,7 +14,9 @@ import com.wireguard.android.model.Device;
import com.wireguard.android.model.User;
import com.wireguard.android.resource.StatusResource;
import com.wireguard.android.util.UserStore;
import com.wireguard.config.Config;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
@@ -63,7 +66,7 @@ public class DataRepository {
return instance;
}

public MutableLiveData<StatusResource<User>> login(String username, String password, Context context) {
public MutableLiveData<StatusResource<User>> login(String tunnelName, String username, String password, Context context) {
return new NetworkBoundStatusResource<User>() {

@Override protected void createCall() {
@@ -229,7 +232,27 @@ public class DataRepository {
final InputStream inputStream = response.body().byteStream();
final Scanner scanner = new Scanner(inputStream).useDelimiter(DELIMITER);
final String data = scanner.hasNext() ? scanner.next() : "";
postMutableLiveData(StatusResource.success());
parseConfig(data);
}
});
}

private void parseConfig(String data) {
try {
final byte[] configText = data.getBytes();
final Config config = Config.parse(new ByteArrayInputStream(configText));
createTunnel(config, tunnelName);
} catch (Exception e) {
postMutableLiveData(StatusResource.error(e.getMessage()));
}
}

private void createTunnel(Config config, String tunnelName) {
Application.getTunnelManager().create(tunnelName, config).whenComplete((observableTunnel, throwable) -> {
if (observableTunnel != null) {
setMutableLiveData(StatusResource.success());
} else {
setMutableLiveData(StatusResource.error(throwable.getMessage()));
}
});
}


+ 4
- 2
ui/src/main/java/com/wireguard/android/viewmodel/LoginViewModel.java Näytä tiedosto

@@ -1,15 +1,17 @@
package com.wireguard.android.viewmodel;

import android.content.Context;

import com.wireguard.android.model.User;
import com.wireguard.android.repository.DataRepository;
import com.wireguard.android.resource.StatusResource;

import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModel;

public class LoginViewModel extends ViewModel {
public LiveData<StatusResource<User>> login(String username,String password, Context context){
return DataRepository.getRepositoryInstance().login(username,password,context);
public LiveData<StatusResource<User>> login(String tunnelName, String username, String password, Context context) {
return DataRepository.getRepositoryInstance().login(tunnelName,username, password, context);
}

@Override protected void onCleared() {


Ladataan…
Peruuta
Tallenna