Quellcode durchsuchen

Implements add device methods.

pull/4/head
Mushegh Sahakyan vor 4 Jahren
Ursprung
Commit
bbd818fcf3
5 geänderte Dateien mit 96 neuen und 85 gelöschten Zeilen
  1. +0
    -24
      ui/src/main/java/com/wireguard/android/activity/LoginActivity.java
  2. +0
    -5
      ui/src/main/java/com/wireguard/android/model/Device.java
  3. +84
    -37
      ui/src/main/java/com/wireguard/android/repository/DataRepository.java
  4. +12
    -2
      ui/src/main/java/com/wireguard/android/util/UserStore.java
  5. +0
    -17
      ui/src/main/java/com/wireguard/android/viewmodel/LoginViewModel.java

+ 0
- 24
ui/src/main/java/com/wireguard/android/activity/LoginActivity.java Datei anzeigen

@@ -10,7 +10,6 @@ import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.wireguard.android.R;
import com.wireguard.android.model.Device;
import com.wireguard.android.model.User;
import com.wireguard.android.resource.StatusResource;
import com.wireguard.android.viewmodel.LoginViewModel;
@@ -59,32 +58,9 @@ public class LoginActivity extends BaseActivityBubble {
@Override public void onChanged(final StatusResource<User> userStatusResource) {
switch (userStatusResource.status) {
case SUCCESS:
if (loginViewModel.isDeviceLoggedIn(LoginActivity.this)) {
Toast.makeText(LoginActivity.this, "Success", Toast.LENGTH_SHORT).show();
Log.d("TAG", "Success");
closeLoadingDialog();
} else {
loginViewModel.addDevice(LoginActivity.this).observe(LoginActivity.this, new Observer<StatusResource<Device>>() {
@Override public void onChanged(final StatusResource<Device> deviceStatusResource) {
switch (deviceStatusResource.status) {
case SUCCESS:
closeLoadingDialog();
Toast.makeText(LoginActivity.this, "Success", Toast.LENGTH_SHORT).show();
Log.d("TAG", "Success");
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;
}
}
});
}
Log.d("TAG", "Success");
break;
case LOADING:
Log.d("TAG", "Loading");


+ 0
- 5
ui/src/main/java/com/wireguard/android/model/Device.java Datei anzeigen

@@ -1,8 +1,3 @@
/*
* Copyright © 2020 WireGuard LLC. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/

package com.wireguard.android.model;

import com.google.gson.annotations.Expose;


+ 84
- 37
ui/src/main/java/com/wireguard/android/repository/DataRepository.java Datei anzeigen

@@ -15,7 +15,9 @@ import com.wireguard.android.util.UserStore;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@@ -57,10 +59,55 @@ public class DataRepository {
if(response.isSuccessful()) {
String token = response.body().getToken();
UserStore.getInstance(context).setToken(token);
setMutableLiveData(StatusResource.success());
if(!isDeviceLoggedIn(context)){
addDevice(context).observe((LifecycleOwner) context, new Observer<StatusResource<Device>>() {
@Override public void onChanged(final StatusResource<Device> deviceStatusResource) {
switch (deviceStatusResource.status){
case SUCCESS:
setMutableLiveData(StatusResource.success());
break;
case LOADING:
break;
case ERROR:
setMutableLiveData(StatusResource.error(createErrorMessage(call,response)));
break;
}
}
});
}
else {
getAllDevices(context).observe((LifecycleOwner) context, new Observer<List<Device>>() {
@Override public void onChanged(final List<Device> devices) {
boolean flag = true;
for (Device item : devices) {
if (UserStore.getInstance(context).getDeviceID().equals(item.getUuid())) {
setMutableLiveData(StatusResource.success());
flag = false;
break;
}
}
if(flag) {
addDevice(context).observe((LifecycleOwner) context, new Observer<StatusResource<Device>>() {
@Override public void onChanged(final StatusResource<Device> deviceStatusResource) {
switch (deviceStatusResource.status) {
case SUCCESS:
setMutableLiveData(StatusResource.success());
break;
case LOADING:
break;
case ERROR:
setMutableLiveData(StatusResource.error(createErrorMessage(call, response)));
break;
}
}
});
}
}
});
}
}
else {
String errorMessage = createErrorMessage(call,response);
final String errorMessage = createErrorMessage(call,response);
setMutableLiveData(StatusResource.error(errorMessage));
}
}
@@ -75,34 +122,7 @@ public class DataRepository {
}.getMutableLiveData();
}

public MutableLiveData<StatusResource<Device>> getAllDevices(Context context) {
return new NetworkBoundStatusResource<Device>() {
@Override protected void createCall() {
final String token = UserStore.getInstance(context).getToken();
final HashMap<String,String> header = new HashMap<>();
header.put(ApiConstants.AUTHORIZATION_HEADER,token);
clientApi.getAllDevices(header).enqueue(new Callback<List<Device>>() {
@Override public void onResponse(final Call<List<Device>> call, final Response<List<Device>> response) {
if (response.isSuccessful()) {
List<Device> list = response.body();
setMutableLiveData(StatusResource.success());
} else {
String errorMessage = createErrorMessage(call, response);
setMutableLiveData(StatusResource.error(errorMessage));
}
}

@Override public void onFailure(final Call<List<Device>> call, final Throwable t) {
if (t instanceof Exception) {
setMutableLiveData(StatusResource.error(NO_INTERNET_CONNECTION));
}
}
});
}
}.getMutableLiveData();
}

public MutableLiveData<StatusResource<Device>> addDevice(Context context) {
private MutableLiveData<StatusResource<Device>> addDevice(Context context) {
return new NetworkBoundStatusResource<Device>() {
@Override protected void createCall() {
final String brand = getBrand();
@@ -125,7 +145,8 @@ public class DataRepository {
if(deviceNameItem.length>1){
if(deviceNameItem[0].contains(myDeviceName[0]) && deviceNameItem[1].contains(myDeviceName[1])){
setMutableLiveData(StatusResource.success());
UserStore.getInstance(context).setDevice(device.getName());
UserStore.getInstance(context).setDeviceName(device.getName());
UserStore.getInstance(context).setDeviceID(device.getUuid());
flag = false;
break;
}
@@ -149,7 +170,8 @@ public class DataRepository {
clientApi.addDevice(header, body).enqueue(new Callback<Device>() {
@Override public void onResponse(final Call<Device> call, final Response<Device> response) {
if (response.isSuccessful()) {
UserStore.getInstance(context).setDevice(response.body().getName());
UserStore.getInstance(context).setDeviceName(response.body().getName());
UserStore.getInstance(context).setDeviceID(response.body().getUuid());
setMutableLiveData(StatusResource.success());
} else {
final String errorMessage = createErrorMessage(call, response);
@@ -194,7 +216,8 @@ public class DataRepository {
clientApi.addDevice(header, body).enqueue(new Callback<Device>() {
@Override public void onResponse(final Call<Device> call, final Response<Device> response) {
if (response.isSuccessful()) {
UserStore.getInstance(context).setDevice(response.body().getName());
UserStore.getInstance(context).setDeviceName(response.body().getName());
UserStore.getInstance(context).setDeviceID(response.body().getUuid());
setMutableLiveData(StatusResource.success());
} else {
final String errorMessage = createErrorMessage(call, response);
@@ -224,6 +247,34 @@ public class DataRepository {
}.getMutableLiveData();
}

private MutableLiveData<List<Device>> getAllDevices(Context context){
final String token = UserStore.getInstance(context).getToken();
final HashMap<String,String> header = new HashMap<>();
header.put(ApiConstants.AUTHORIZATION_HEADER,token);
MutableLiveData<List<Device>> liveData = new MutableLiveData<>();
clientApi.getAllDevices(header).enqueue(new Callback<List<Device>>() {
@Override public void onResponse(final Call<List<Device>> call, final Response<List<Device>> response) {
if (response.isSuccessful()) {
liveData.setValue(response.body());
} else {

}
}

@Override public void onFailure(final Call<List<Device>> call, final Throwable t) {
if (t instanceof Exception) {

}
}
});

return liveData;
}

private boolean isDeviceLoggedIn(Context context){
return !UserStore.DEVICE_DEFAULT_VALUE.equals(UserStore.getInstance(context).getDeviceName());
}

private String createErrorMessage(Call call, retrofit2.Response response) {
return "Error: User agent: " + System.getProperty("http.agent") + ", Request body: " + call.request().body() + ", URL: " +
call.request().url() + ", Code: " + response.code() + ", Message: " +
@@ -256,8 +307,4 @@ public class DataRepository {
private String getDeviceModel(){
return Build.MODEL;
}

public boolean isDeviceLoggedIn(Context context){
return !UserStore.DEVICE_DEFAULT_VALUE.equals(UserStore.getInstance(context).getDevice());
}
}

+ 12
- 2
ui/src/main/java/com/wireguard/android/util/UserStore.java Datei anzeigen

@@ -10,8 +10,10 @@ public class UserStore {
private static final String USER_SHARED_PREF = "com.wireguard.android.util.bubbleUserSharedPref";
private static final String USER_DATA_KEY = "com.wireguard.android.util.bubbleUserResponse";
private static final String DEVICE_DATA_KEY = "com.wireguard.android.util.bubbleDeviceResponse";
private static final String DEVICE_ID_KEY = "com.wireguard.android.util.bubbleDeviceIDResponse";
public static final String USER_TOKEN_DEFAULT_VALUE = "";
public static final String DEVICE_DEFAULT_VALUE = "";
public static final String DEVICE_ID_DEFAULT_VALUE = "";

public static UserStore getInstance(Context context) {
if (instance == null) {
@@ -37,11 +39,19 @@ public class UserStore {
return sharedPreferences.getString(USER_DATA_KEY, USER_TOKEN_DEFAULT_VALUE);
}

public void setDevice(String device){
public void setDeviceName(String device){
sharedPreferences.edit().putString(DEVICE_DATA_KEY, device).apply();
}

public String getDevice(){
public String getDeviceName(){
return sharedPreferences.getString(DEVICE_DATA_KEY, DEVICE_DEFAULT_VALUE);
}

public void setDeviceID(String id){
sharedPreferences.edit().putString(DEVICE_ID_KEY,id).apply();
}

public String getDeviceID(){
return sharedPreferences.getString(DEVICE_ID_KEY,DEVICE_ID_DEFAULT_VALUE);
}
}

+ 0
- 17
ui/src/main/java/com/wireguard/android/viewmodel/LoginViewModel.java Datei anzeigen

@@ -1,14 +1,9 @@
package com.wireguard.android.viewmodel;

import android.content.Context;

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

import java.util.HashMap;

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

@@ -16,16 +11,4 @@ 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<Device>> getAllDevices(Context context){
return DataRepository.getRepositoryInstance().getAllDevices(context);
}

public LiveData<StatusResource<Device>> addDevice(Context context){
return DataRepository.getRepositoryInstance().addDevice(context);
}

public boolean isDeviceLoggedIn(Context context){
return DataRepository.getRepositoryInstance().isDeviceLoggedIn(context);
}
}

Laden…
Abbrechen
Speichern