Update
This commit is contained in:
@@ -27,7 +27,8 @@ public class AddNewTask extends AppCompatActivity implements DatePickerDialog.On
|
|||||||
private static final String TAG = "ADD_NEW_TASK";
|
private static final String TAG = "ADD_NEW_TASK";
|
||||||
|
|
||||||
private ActivityAddNewTaskBinding binding;
|
private ActivityAddNewTaskBinding binding;
|
||||||
private static String token;
|
private String login;
|
||||||
|
private String password;
|
||||||
private AddItemViewModel viewModel;
|
private AddItemViewModel viewModel;
|
||||||
private String stringDate = "";
|
private String stringDate = "";
|
||||||
private String stringTime = "";
|
private String stringTime = "";
|
||||||
@@ -38,13 +39,6 @@ public class AddNewTask extends AppCompatActivity implements DatePickerDialog.On
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(binding.getRoot());
|
setContentView(binding.getRoot());
|
||||||
|
|
||||||
token = getIntent().getStringExtra(PublicKeyNames.TOKEN_KEY);
|
|
||||||
if(token == null)
|
|
||||||
{
|
|
||||||
Log.w(TAG, "Token is null");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.btnDatePick.setOnClickListener(v->{
|
binding.btnDatePick.setOnClickListener(v->{
|
||||||
DatePickerFragment fragment = new DatePickerFragment();
|
DatePickerFragment fragment = new DatePickerFragment();
|
||||||
fragment.show(getSupportFragmentManager(), "DATE PICK");
|
fragment.show(getSupportFragmentManager(), "DATE PICK");
|
||||||
@@ -63,8 +57,11 @@ public class AddNewTask extends AppCompatActivity implements DatePickerDialog.On
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
login = getIntent().getStringExtra(PublicKeyNames.LOGIN_KEY);
|
||||||
|
password = getIntent().getStringExtra(PublicKeyNames.PASSWORD_KEY);
|
||||||
// Offline
|
// Offline
|
||||||
if(token.equals("null")) {
|
if(login == null || password == null) {
|
||||||
Offline();
|
Offline();
|
||||||
}
|
}
|
||||||
// Online
|
// Online
|
||||||
@@ -82,19 +79,9 @@ public class AddNewTask extends AppCompatActivity implements DatePickerDialog.On
|
|||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterName, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterName, Snackbar.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(stringDate.isEmpty()) {
|
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterDate, Snackbar.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(stringTime.isEmpty()) {
|
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterDate, Snackbar.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String dateTime = stringDate + ' ' + stringTime;
|
long ID = generateID(name, description, stringDate, stringTime);
|
||||||
|
Task task = new Task(ID, stringDate, name, description, stringTime);
|
||||||
long ID = generateID(name, description, dateTime);
|
|
||||||
Task task = new Task(ID, name, description, dateTime);
|
|
||||||
viewModel.OfflineSaveData(task);
|
viewModel.OfflineSaveData(task);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -116,38 +103,29 @@ public class AddNewTask extends AppCompatActivity implements DatePickerDialog.On
|
|||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterName, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterName, Snackbar.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(stringDate.isEmpty()) {
|
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterDate, Snackbar.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(stringTime.isEmpty()) {
|
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterDate, Snackbar.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String dateTime = stringDate + ' ' + stringTime;
|
long ID = generateID(name, description, stringDate, stringTime);
|
||||||
|
Task task = new Task(ID, stringDate, name, description, stringTime);
|
||||||
long ID = generateID(name, description, dateTime);
|
viewModel.OnlineSaveData(task, login, password);
|
||||||
Task task = new Task(ID, name, description, dateTime);
|
|
||||||
viewModel.OnlineSaveData(task, token);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private long generateID(String name, String Description, String date) {
|
private long generateID(String name, String Description, String date, String time) {
|
||||||
Random rand = new Random();
|
Random rand = new Random();
|
||||||
|
|
||||||
long key1 = name.hashCode();
|
long key1 = name.hashCode();
|
||||||
long key2 = Description.hashCode();
|
long key2 = Description.hashCode();
|
||||||
long key3 = date.hashCode();
|
long key3 = date.hashCode();
|
||||||
long key4 = rand.nextInt();
|
long key4 = time.hashCode();
|
||||||
|
long key5 = rand.nextInt();
|
||||||
|
|
||||||
long hash = key1 ^ key2 ^ key3 ^ key4;
|
return key1 ^ key2 ^ key3 ^ key4 ^ key5;
|
||||||
return hash;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Intent getIntent(Context context, String token) {
|
public static Intent getIntent(Context context, String login, String password) {
|
||||||
Intent intent = new Intent(context, AddNewTask.class);
|
Intent intent = new Intent(context, AddNewTask.class);
|
||||||
intent.putExtra(PublicKeyNames.TOKEN_KEY, token);
|
intent.putExtra(PublicKeyNames.LOGIN_KEY, login);
|
||||||
|
intent.putExtra(PublicKeyNames.PASSWORD_KEY, password);
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDa
|
|||||||
|
|
||||||
private ActivityEditTaskBinding binding;
|
private ActivityEditTaskBinding binding;
|
||||||
private EditTaskViewModel viewModel;
|
private EditTaskViewModel viewModel;
|
||||||
private String token;
|
private String login, password;
|
||||||
private long taskID = -1;
|
private long taskID = -1;
|
||||||
private String taskDateString;
|
private String taskDateString;
|
||||||
private String taskTimeString;
|
private String taskTimeString;
|
||||||
@@ -59,12 +59,20 @@ public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDa
|
|||||||
public void onChanged(Task task) {
|
public void onChanged(Task task) {
|
||||||
binding.TaskName.setText(task.getTaskName());
|
binding.TaskName.setText(task.getTaskName());
|
||||||
binding.TaskDescription.setText(task.getTaskDescription());
|
binding.TaskDescription.setText(task.getTaskDescription());
|
||||||
String dateTime = task.getTaskDate();
|
taskDateString = task.getTaskDate();
|
||||||
String[] buf = dateTime.split(" ");
|
taskTimeString = task.getTaskTime();
|
||||||
taskDateString = buf[0];
|
if(taskDateString == null) {
|
||||||
taskTimeString = buf[1];
|
binding.btnDatePick.setText(R.string.button_DefaultData);
|
||||||
binding.btnDatePick.setText(taskDateString);
|
}
|
||||||
binding.btnTimePick.setText(taskTimeString);
|
else {
|
||||||
|
binding.btnDatePick.setText(taskDateString);
|
||||||
|
}
|
||||||
|
if(taskTimeString == null) {
|
||||||
|
binding.btnTimePick.setText(R.string.button_DefaultTime);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
binding.btnTimePick.setText(taskTimeString);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
viewModel.getClose().observe(this, new Observer<Boolean>() {
|
viewModel.getClose().observe(this, new Observer<Boolean>() {
|
||||||
@@ -75,15 +83,11 @@ public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDa
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
token = intent.getStringExtra(PublicKeyNames.TOKEN_KEY);
|
login = intent.getStringExtra(PublicKeyNames.LOGIN_KEY);
|
||||||
if(token == null)
|
password = intent.getStringExtra(PublicKeyNames.PASSWORD_KEY);
|
||||||
{
|
|
||||||
Log.w(TAG, "Token is null");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Offline
|
// Offline
|
||||||
if(token.equals("null")) {
|
if(login == null || password == null) {
|
||||||
Offline();
|
Offline();
|
||||||
}
|
}
|
||||||
// Online
|
// Online
|
||||||
@@ -98,7 +102,7 @@ public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDa
|
|||||||
String name = binding.TaskName.getText().toString();
|
String name = binding.TaskName.getText().toString();
|
||||||
String description = binding.TaskDescription.getText().toString();
|
String description = binding.TaskDescription.getText().toString();
|
||||||
|
|
||||||
Task task = new Task(taskID, name, description, taskDateString + ' ' +taskTimeString);
|
Task task = new Task(taskID, taskDateString, name, description, taskTimeString);
|
||||||
viewModel.OfflineSaveData(task);
|
viewModel.OfflineSaveData(task);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -108,8 +112,8 @@ public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDa
|
|||||||
String name = binding.TaskName.getText().toString();
|
String name = binding.TaskName.getText().toString();
|
||||||
String description = binding.TaskDescription.getText().toString();
|
String description = binding.TaskDescription.getText().toString();
|
||||||
|
|
||||||
Task task = new Task(taskID, name, description, taskDateString + ' ' +taskTimeString);
|
Task task = new Task(taskID, taskDateString, name, description, taskTimeString);
|
||||||
viewModel.OnlineSaveData(task, token);
|
viewModel.OnlineSaveData(task, login, password);
|
||||||
});
|
});
|
||||||
viewModel.getLiveDataFail().observe(this, new Observer<String>() {
|
viewModel.getLiveDataFail().observe(this, new Observer<String>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -119,12 +123,13 @@ public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDa
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
viewModel.LoadTaskOnline(token, taskID);
|
viewModel.LoadTaskOnline(login, password, taskID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Intent getIntent(Context context, String token, long taskID) {
|
public static Intent getIntent(Context context, String login, String password, long taskID) {
|
||||||
Intent intent = new Intent(context, EditTask.class);
|
Intent intent = new Intent(context, EditTask.class);
|
||||||
intent.putExtra(PublicKeyNames.TOKEN_KEY, token);
|
intent.putExtra(PublicKeyNames.LOGIN_KEY, login);
|
||||||
|
intent.putExtra(PublicKeyNames.PASSWORD_KEY, password);
|
||||||
intent.putExtra(TASK_ID_KEY, taskID);
|
intent.putExtra(TASK_ID_KEY, taskID);
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.example.tasktracker.Activities;
|
package com.example.tasktracker.Activities;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -17,10 +16,6 @@ import com.example.tasktracker.R;
|
|||||||
import com.example.tasktracker.databinding.ActivityLoginBinding;
|
import com.example.tasktracker.databinding.ActivityLoginBinding;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
|
||||||
import io.reactivex.rxjava3.core.Single;
|
|
||||||
import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
||||||
import io.reactivex.rxjava3.disposables.Disposable;
|
import io.reactivex.rxjava3.disposables.Disposable;
|
||||||
import io.reactivex.rxjava3.functions.Consumer;
|
import io.reactivex.rxjava3.functions.Consumer;
|
||||||
@@ -28,139 +23,117 @@ import io.reactivex.rxjava3.schedulers.Schedulers;
|
|||||||
|
|
||||||
public class LoginActivity extends AppCompatActivity {
|
public class LoginActivity extends AppCompatActivity {
|
||||||
private static final String TAG = "LOGIN_ACTIVITY";
|
private static final String TAG = "LOGIN_ACTIVITY";
|
||||||
|
|
||||||
|
|
||||||
private ActivityLoginBinding binding;
|
private ActivityLoginBinding binding;
|
||||||
private SharedPreferences sharedPreferences;
|
|
||||||
private final CompositeDisposable compositeDisposable = new CompositeDisposable();
|
private final CompositeDisposable compositeDisposable = new CompositeDisposable();
|
||||||
|
|
||||||
public static Intent getIntent(Context context) {
|
private String login;
|
||||||
return new Intent(context, LoginActivity.class);
|
private String password;
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressLint("UnsafeIntentLaunch")
|
@SuppressLint("UnsafeIntentLaunch")
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
login = getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE).getString(PublicKeyNames.LOGIN_KEY, null);
|
||||||
|
password = getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE).getString(PublicKeyNames.PASSWORD_KEY, null);
|
||||||
|
|
||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
binding = ActivityLoginBinding.inflate(getLayoutInflater());
|
binding = ActivityLoginBinding.inflate(getLayoutInflater());
|
||||||
EdgeToEdge.enable(this);
|
EdgeToEdge.enable(this);
|
||||||
setContentView(binding.getRoot());
|
setContentView(binding.getRoot());
|
||||||
|
|
||||||
sharedPreferences = getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE);
|
if(login != null && password != null)
|
||||||
String token = sharedPreferences.getString(PublicKeyNames.TOKEN_KEY, "");
|
SingIn();
|
||||||
if(!token.isEmpty())
|
|
||||||
{
|
|
||||||
Disposable disposable = ApiFactory.getApiService()
|
|
||||||
.checkToken(token)
|
|
||||||
.observeOn(Schedulers.io()).subscribe(new Consumer<LoginAnswer>() {
|
|
||||||
@Override
|
|
||||||
public void accept(LoginAnswer loginAnswer) throws Throwable {
|
|
||||||
if(loginAnswer.getStatus().equals("ok")) {
|
|
||||||
Intent intent = MainMenu.getIntent(LoginActivity.this, token);
|
|
||||||
startActivity(intent);
|
|
||||||
finish();
|
|
||||||
} else {
|
|
||||||
sharedPreferences.edit().putString(PublicKeyNames.TOKEN_KEY, "").apply();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, new Consumer<Throwable>() {
|
|
||||||
@Override
|
|
||||||
public void accept(Throwable throwable) throws Throwable {
|
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
|
||||||
Log.e(TAG, Objects.requireNonNull(throwable.getMessage()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
compositeDisposable.add(disposable);
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.buttonSingIn.setOnClickListener(v->{ SingIn(); });
|
binding.buttonSingIn.setOnClickListener(v->{
|
||||||
|
login = binding.fieldLogin.getText().toString();
|
||||||
|
password = binding.fieldPassword.getText().toString();
|
||||||
|
if(login.isEmpty())
|
||||||
|
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterLogin, Snackbar.LENGTH_SHORT).show();
|
||||||
|
if(password.isEmpty())
|
||||||
|
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterPassword, Snackbar.LENGTH_SHORT).show();
|
||||||
|
|
||||||
binding.buttonSingUp.setOnClickListener(v->{ SingUp(); });
|
SingIn();
|
||||||
|
});
|
||||||
|
|
||||||
|
binding.buttonSingUp.setOnClickListener(v->{
|
||||||
|
login = binding.fieldLogin.getText().toString();
|
||||||
|
password = binding.fieldPassword.getText().toString();
|
||||||
|
if(login.isEmpty())
|
||||||
|
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterLogin, Snackbar.LENGTH_SHORT).show();
|
||||||
|
if(password.isEmpty())
|
||||||
|
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterPassword, Snackbar.LENGTH_SHORT).show();
|
||||||
|
|
||||||
|
SingUp();
|
||||||
|
});
|
||||||
|
|
||||||
binding.buttonOffline.setOnClickListener(v->{
|
binding.buttonOffline.setOnClickListener(v->{
|
||||||
Intent intent = MainMenu.getIntent(this, "null");
|
startActivity(MainMenu.getIntent(this, null,null));
|
||||||
startActivity(intent);
|
|
||||||
finish();
|
finish();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SingIn()
|
private void SingIn() {
|
||||||
{
|
Disposable disposable = ApiFactory.getApiService().singin(login, password)
|
||||||
String login = binding.fieldLogin.getText().toString();
|
.subscribeOn(Schedulers.io()).subscribe(new Consumer<LoginAnswer>() {
|
||||||
if(login.isEmpty())
|
|
||||||
{
|
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterLogin, Snackbar.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String pass = binding.fieldPassword.getText().toString();
|
|
||||||
if(pass.isEmpty())
|
|
||||||
{
|
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterPassword, Snackbar.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Single<LoginAnswer> loginAnswer = ApiFactory.getApiService().singin(login, pass);
|
|
||||||
Disposable disposable = loginAnswer
|
|
||||||
.subscribeOn(Schedulers.io())
|
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
|
||||||
.subscribe(new Consumer<LoginAnswer>() {
|
|
||||||
@Override
|
@Override
|
||||||
public void accept(LoginAnswer loginAnswer) throws Throwable {
|
public void accept(LoginAnswer loginAnswer) throws Throwable {
|
||||||
if (loginAnswer.getStatus().equals("error")) {
|
if(loginAnswer.getStatus().equals("big")) {
|
||||||
|
Snackbar.make(binding.getRoot(), R.string.snackbar_InvalidLogin, Snackbar.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (loginAnswer.getStatus().equals("error")) {
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InvalidLogin, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(binding.getRoot(), R.string.snackbar_InvalidLogin, Snackbar.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String token = loginAnswer.getToken();
|
@SuppressLint("UnsafeIntentLaunch") Intent intent = MainMenu.getIntent(LoginActivity.this, login, password);
|
||||||
sharedPreferences.edit().putString(PublicKeyNames.TOKEN_KEY, token).apply();
|
startActivity(intent);
|
||||||
OpenMainMenu(token);
|
finish();
|
||||||
|
|
||||||
|
getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE).edit()
|
||||||
|
.putString(PublicKeyNames.LOGIN_KEY, login)
|
||||||
|
.putString(PublicKeyNames.PASSWORD_KEY, password)
|
||||||
|
.apply();
|
||||||
}
|
}
|
||||||
}, new Consumer<Throwable>() {
|
}, new Consumer<Throwable>() {
|
||||||
@Override
|
@Override
|
||||||
public void accept(Throwable throwable) throws Throwable {
|
public void accept(Throwable throwable) throws Throwable {
|
||||||
Log.w(TAG, throwable.toString());
|
Log.e(TAG, throwable.getMessage());
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
compositeDisposable.add(disposable);
|
compositeDisposable.add(disposable);
|
||||||
}
|
}
|
||||||
|
private void SingUp() {
|
||||||
private void SingUp()
|
Disposable disposable = ApiFactory.getApiService().singup(login, password)
|
||||||
{
|
.subscribeOn(Schedulers.io()).subscribe(new Consumer<LoginAnswer>() {
|
||||||
String login = binding.fieldLogin.getText().toString();
|
|
||||||
if(login.isEmpty())
|
|
||||||
{
|
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterLogin, Snackbar.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String pass = binding.fieldPassword.getText().toString();
|
|
||||||
if(pass.isEmpty())
|
|
||||||
{
|
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterPassword, Snackbar.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Single<LoginAnswer> loginAnswer = ApiFactory.getApiService().singup(login, pass);
|
|
||||||
Disposable disposable = loginAnswer
|
|
||||||
.subscribeOn(Schedulers.io())
|
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
|
||||||
.subscribe(new Consumer<LoginAnswer>() {
|
|
||||||
@Override
|
@Override
|
||||||
public void accept(LoginAnswer loginAnswer) throws Throwable {
|
public void accept(LoginAnswer loginAnswer) throws Throwable {
|
||||||
if (loginAnswer.getStatus().equals("error")) {
|
if(loginAnswer.getStatus().equals("big")) {
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_AlredyCreated, Snackbar.LENGTH_LONG).show();
|
Snackbar.make(binding.getRoot(), R.string.snackbar_InvalidLogin, Snackbar.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (loginAnswer.getStatus().equals("error")) {
|
||||||
|
Snackbar.make(binding.getRoot(), R.string.snackbar_AlredyCreated, Snackbar.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String token = loginAnswer.getToken();
|
@SuppressLint("UnsafeIntentLaunch") Intent intent = MainMenu.getIntent(LoginActivity.this, login, password);
|
||||||
sharedPreferences.edit().putString(PublicKeyNames.TOKEN_KEY, token).apply();
|
startActivity(intent);
|
||||||
OpenMainMenu(token);
|
finish();
|
||||||
|
|
||||||
|
getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE).edit()
|
||||||
|
.putString(PublicKeyNames.LOGIN_KEY, login)
|
||||||
|
.putString(PublicKeyNames.PASSWORD_KEY, password)
|
||||||
|
.apply();
|
||||||
}
|
}
|
||||||
}, new Consumer<Throwable>() {
|
}, new Consumer<Throwable>() {
|
||||||
@Override
|
@Override
|
||||||
public void accept(Throwable throwable) throws Throwable {
|
public void accept(Throwable throwable) throws Throwable {
|
||||||
|
Log.e(TAG, throwable.getMessage());
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
||||||
Log.w(TAG, throwable.toString());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
compositeDisposable.add(disposable);
|
compositeDisposable.add(disposable);
|
||||||
@@ -171,12 +144,4 @@ public class LoginActivity extends AppCompatActivity {
|
|||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
compositeDisposable.dispose();
|
compositeDisposable.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OpenMainMenu(String token)
|
|
||||||
{
|
|
||||||
@SuppressLint("UnsafeIntentLaunch")
|
|
||||||
Intent intent = MainMenu.getIntent(this, token);
|
|
||||||
startActivity(intent);
|
|
||||||
finish();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,6 @@ package com.example.tasktracker.Activities;
|
|||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
@@ -38,7 +37,8 @@ public class MainMenu extends AppCompatActivity {
|
|||||||
private static final String TAG = "MainMenu";
|
private static final String TAG = "MainMenu";
|
||||||
|
|
||||||
private ActivityMainMenuBinding binding;
|
private ActivityMainMenuBinding binding;
|
||||||
private String token;
|
private String login;
|
||||||
|
private String password;
|
||||||
private TaskAdapter taskAdapter;
|
private TaskAdapter taskAdapter;
|
||||||
private MainMenuViewModel viewModel;
|
private MainMenuViewModel viewModel;
|
||||||
private List<Task> taskListCache = new ArrayList<>();
|
private List<Task> taskListCache = new ArrayList<>();
|
||||||
@@ -49,16 +49,11 @@ public class MainMenu extends AppCompatActivity {
|
|||||||
binding = ActivityMainMenuBinding.inflate(getLayoutInflater());
|
binding = ActivityMainMenuBinding.inflate(getLayoutInflater());
|
||||||
setContentView(binding.getRoot());
|
setContentView(binding.getRoot());
|
||||||
|
|
||||||
token = getIntent().getStringExtra(PublicKeyNames.TOKEN_KEY);
|
|
||||||
if (token == null) {
|
|
||||||
Log.e(TAG, "Token is empty");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
taskAdapter = new TaskAdapter();
|
taskAdapter = new TaskAdapter();
|
||||||
binding.scrollTask.setAdapter(taskAdapter);
|
binding.scrollTask.setAdapter(taskAdapter);
|
||||||
|
|
||||||
binding.buttonAddNewTask.setOnClickListener(v -> {
|
binding.buttonAddNewTask.setOnClickListener(v -> {
|
||||||
Intent intent = AddNewTask.getIntent(this, token);
|
Intent intent = AddNewTask.getIntent(this, login, password);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
});
|
});
|
||||||
taskAdapter.setOnItemClick(new TaskAdapter.OnItemClick() {
|
taskAdapter.setOnItemClick(new TaskAdapter.OnItemClick() {
|
||||||
@@ -66,7 +61,7 @@ public class MainMenu extends AppCompatActivity {
|
|||||||
public void Click(int position) {
|
public void Click(int position) {
|
||||||
Task task = taskAdapter.getTaskList().get(position);
|
Task task = taskAdapter.getTaskList().get(position);
|
||||||
@SuppressLint("UnsafeIntentLaunch")
|
@SuppressLint("UnsafeIntentLaunch")
|
||||||
Intent intent = EditTask.getIntent(MainMenu.this, token, task.getID());
|
Intent intent = EditTask.getIntent(MainMenu.this, login, password, task.getId());
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -82,7 +77,7 @@ public class MainMenu extends AppCompatActivity {
|
|||||||
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||||
String find = binding.findLine.getText().toString();
|
String find = binding.findLine.getText().toString();
|
||||||
if (find.isEmpty()) {
|
if (find.isEmpty()) {
|
||||||
if (token.equals("null")) {
|
if (login.equals("null")) {
|
||||||
TaskRepository.newInstance(getApplication()).taskDao().getTaskList().observe(MainMenu.this, new Observer<List<Task>>() {
|
TaskRepository.newInstance(getApplication()).taskDao().getTaskList().observe(MainMenu.this, new Observer<List<Task>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onChanged(List<Task> tasks) {
|
public void onChanged(List<Task> tasks) {
|
||||||
@@ -91,7 +86,7 @@ public class MainMenu extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
viewModel.OnlineUpdateList(token);
|
viewModel.OnlineUpdateList(login, password);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
new Thread(new Runnable() {
|
new Thread(new Runnable() {
|
||||||
@@ -99,7 +94,7 @@ public class MainMenu extends AppCompatActivity {
|
|||||||
public void run() {
|
public void run() {
|
||||||
List<Task> searchList = new ArrayList<>();
|
List<Task> searchList = new ArrayList<>();
|
||||||
for (int i = 0; i < taskListCache.size(); i++) {
|
for (int i = 0; i < taskListCache.size(); i++) {
|
||||||
if (taskListCache.get(i).getTaskName().toLowerCase().contains(charSequence) ||
|
if (taskListCache.get(i).getTaskTime().toLowerCase().contains(charSequence) ||
|
||||||
taskListCache.get(i).getTaskDescription().toLowerCase().contains(charSequence)) {
|
taskListCache.get(i).getTaskDescription().toLowerCase().contains(charSequence)) {
|
||||||
searchList.add(taskListCache.get(i));
|
searchList.add(taskListCache.get(i));
|
||||||
}
|
}
|
||||||
@@ -123,135 +118,130 @@ public class MainMenu extends AppCompatActivity {
|
|||||||
binding.buttonSingOut.setOnClickListener(v -> {
|
binding.buttonSingOut.setOnClickListener(v -> {
|
||||||
getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE).
|
getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE).
|
||||||
edit().
|
edit().
|
||||||
remove(PublicKeyNames.TOKEN_KEY).
|
remove(PublicKeyNames.LOGIN_KEY).
|
||||||
|
remove(PublicKeyNames.PASSWORD_KEY).
|
||||||
apply();
|
apply();
|
||||||
|
|
||||||
@SuppressLint("UnsafeIntentLaunch")
|
@SuppressLint("UnsafeIntentLaunch")
|
||||||
Intent intent = LoginActivity.getIntent(MainMenu.this);
|
Intent intent = new Intent(this, LoginActivity.class);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
finish();
|
finish();
|
||||||
});
|
});
|
||||||
|
|
||||||
// offline
|
viewModel.getOnLoad().observe(this, new Observer<List<Task>>() {
|
||||||
if (token.equals("null")) {
|
@Override
|
||||||
Offline();
|
public void onChanged(List<Task> tasks) {
|
||||||
}
|
taskListCache = tasks;
|
||||||
//online
|
taskAdapter.setTaskList(tasks);
|
||||||
else {
|
|
||||||
Online();
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
login = getIntent().getStringExtra(PublicKeyNames.LOGIN_KEY);
|
||||||
|
password = getIntent().getStringExtra(PublicKeyNames.PASSWORD_KEY);
|
||||||
|
// offline
|
||||||
|
if (login == null || password == null) {
|
||||||
|
Offline();
|
||||||
}
|
}
|
||||||
|
//online
|
||||||
|
else {
|
||||||
|
Online();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Offline () {
|
public void Offline() {
|
||||||
viewModel.getOnLoad().observe(this, new Observer<List<Task>>() {
|
ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
|
||||||
@Override
|
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
|
||||||
public void onChanged(List<Task> tasks) {
|
@Override
|
||||||
taskListCache = tasks;
|
public boolean onMove(@NonNull RecyclerView recyclerView,
|
||||||
taskAdapter.setTaskList(tasks);
|
@NonNull RecyclerView.ViewHolder viewHolder,
|
||||||
}
|
@NonNull RecyclerView.ViewHolder target) {
|
||||||
});
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
|
@Override
|
||||||
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
|
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
|
||||||
@Override
|
int position = viewHolder.getAdapterPosition();
|
||||||
public boolean onMove(@NonNull RecyclerView recyclerView,
|
|
||||||
@NonNull RecyclerView.ViewHolder viewHolder,
|
|
||||||
@NonNull RecyclerView.ViewHolder target) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
Task task = taskAdapter.getItem(position);
|
||||||
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
|
new Thread(new Runnable() {
|
||||||
int position = viewHolder.getAdapterPosition();
|
@Override
|
||||||
|
public void run() {
|
||||||
Task task = taskAdapter.getItem(position);
|
TaskRepository.newInstance(getApplication()).taskDao().delete(task);
|
||||||
new Thread(new Runnable() {
|
for (int i = 0; i < taskListCache.size(); ++i) {
|
||||||
@Override
|
if (taskListCache.get(i).getId() == task.getId()) {
|
||||||
public void run() {
|
taskListCache.remove(i);
|
||||||
TaskRepository.newInstance(getApplication()).taskDao().delete(task);
|
break;
|
||||||
for (int i = 0; i < taskListCache.size(); ++i) {
|
|
||||||
if (taskListCache.get(i).getID() == task.getID()) {
|
|
||||||
taskListCache.remove(i);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).start();
|
}
|
||||||
taskAdapter.removeItemByPosition(position);
|
}).start();
|
||||||
}
|
taskAdapter.removeItemByPosition(position);
|
||||||
});
|
}
|
||||||
helper.attachToRecyclerView(binding.scrollTask);
|
});
|
||||||
}
|
helper.attachToRecyclerView(binding.scrollTask);
|
||||||
|
}
|
||||||
|
|
||||||
private void Online () {
|
private void Online() {
|
||||||
|
viewModel.onFail().observe(this, new Observer<String>() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(String s) {
|
||||||
|
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
||||||
|
Log.w(TAG, s);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
viewModel.getOnLoad().observe(this, new Observer<List<Task>>() {
|
ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
|
||||||
|
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
|
||||||
|
@Override
|
||||||
|
public boolean onMove(@NonNull RecyclerView recyclerView,
|
||||||
|
@NonNull RecyclerView.ViewHolder viewHolder,
|
||||||
|
@NonNull RecyclerView.ViewHolder target) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
|
||||||
|
int position = viewHolder.getAdapterPosition();
|
||||||
|
|
||||||
|
Task task = taskAdapter.getItem(position);
|
||||||
|
ApiFactory.getApiService().removeTask(login, password, task.getId()).enqueue(new Callback<Void>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(@NonNull Call<Void> call, @NonNull Response<Void> response) {
|
||||||
|
Task task = taskAdapter.getItem(position);
|
||||||
|
taskAdapter.removeItemByPosition(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NonNull Call<Void> call, @NonNull Throwable throwable) {
|
||||||
|
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
||||||
|
Log.w(TAG, Objects.requireNonNull(throwable.getMessage()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
helper.attachToRecyclerView(binding.scrollTask);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
if (login == null || password == null) {
|
||||||
|
TaskRepository.newInstance(getApplication()).taskDao().getTaskList().observe(this, new Observer<List<Task>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onChanged(List<Task> tasks) {
|
public void onChanged(List<Task> tasks) {
|
||||||
taskListCache = tasks;
|
taskListCache = tasks;
|
||||||
taskAdapter.setTaskList(tasks);
|
taskAdapter.setTaskList(tasks);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
viewModel.onFail().observe(this, new Observer<String>() {
|
} else {
|
||||||
@Override
|
viewModel.OnlineUpdateList(login, password);
|
||||||
public void onChanged(String s) {
|
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
|
||||||
Log.w(TAG, s);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
|
|
||||||
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
|
|
||||||
@Override
|
|
||||||
public boolean onMove(@NonNull RecyclerView recyclerView,
|
|
||||||
@NonNull RecyclerView.ViewHolder viewHolder,
|
|
||||||
@NonNull RecyclerView.ViewHolder target) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
|
|
||||||
int position = viewHolder.getAdapterPosition();
|
|
||||||
|
|
||||||
Task task = taskAdapter.getItem(position);
|
|
||||||
ApiFactory.getApiService().removeTask(token, task.getID()).enqueue(new Callback<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onResponse(@NonNull Call<Void> call, @NonNull Response<Void> response) {
|
|
||||||
Task task = taskAdapter.getItem(position);
|
|
||||||
taskAdapter.removeItemByPosition(position);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFailure(@NonNull Call<Void> call, @NonNull Throwable throwable) {
|
|
||||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
|
||||||
Log.w(TAG, Objects.requireNonNull(throwable.getMessage()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
helper.attachToRecyclerView(binding.scrollTask);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onResume () {
|
|
||||||
super.onResume();
|
|
||||||
if (token.equals("null")) {
|
|
||||||
TaskRepository.newInstance(getApplication()).taskDao().getTaskList().observe(this, new Observer<List<Task>>() {
|
|
||||||
@Override
|
|
||||||
public void onChanged(List<Task> tasks) {
|
|
||||||
taskListCache = tasks;
|
|
||||||
taskAdapter.setTaskList(tasks);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
viewModel.OnlineUpdateList(token);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Intent getIntent (Context context, String token){
|
|
||||||
Intent intent = new Intent(context, MainMenu.class);
|
|
||||||
intent.putExtra(PublicKeyNames.TOKEN_KEY, token);
|
|
||||||
return intent;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Intent getIntent(Context context, String login, String password) {
|
||||||
|
Intent intent = new Intent(context, MainMenu.class);
|
||||||
|
intent.putExtra(PublicKeyNames.LOGIN_KEY, login);
|
||||||
|
intent.putExtra(PublicKeyNames.PASSWORD_KEY, password);
|
||||||
|
return intent;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -41,7 +41,7 @@ public class TaskAdapter extends RecyclerView.Adapter<TaskAdapter.TaskViewHolder
|
|||||||
Task task = taskList.get(position);
|
Task task = taskList.get(position);
|
||||||
holder.binding.TaskName.setText(task.getTaskName());
|
holder.binding.TaskName.setText(task.getTaskName());
|
||||||
holder.binding.TaskDescription.setText(task.getTaskDescription());
|
holder.binding.TaskDescription.setText(task.getTaskDescription());
|
||||||
holder.binding.TaskDate.setText(task.getTaskDate());
|
holder.binding.TaskDate.setText(task.getTaskDate() + ' ' + task.getTaskTime());
|
||||||
holder.binding.getRoot().setOnClickListener(v->{
|
holder.binding.getRoot().setOnClickListener(v->{
|
||||||
if(onItemClick != null)
|
if(onItemClick != null)
|
||||||
onItemClick.Click(position);
|
onItemClick.Click(position);
|
||||||
|
|||||||
+2
-2
@@ -35,9 +35,9 @@ public class AddItemViewModel extends AndroidViewModel {
|
|||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnlineSaveData(Task task, String token) {
|
public void OnlineSaveData(Task task, String login, String password) {
|
||||||
|
|
||||||
Call<Void> send = ApiFactory.getApiService().editTask(token, task);
|
Call<Void> send = ApiFactory.getApiService().editTask(login, password, task);
|
||||||
send.enqueue(new Callback<Void>() {
|
send.enqueue(new Callback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<Void> call, @NonNull Response<Void> response) {
|
public void onResponse(@NonNull Call<Void> call, @NonNull Response<Void> response) {
|
||||||
|
|||||||
+4
-4
@@ -45,9 +45,9 @@ public class EditTaskViewModel extends AndroidViewModel {
|
|||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnlineSaveData(Task task, String token) {
|
public void OnlineSaveData(Task task, String login, String password) {
|
||||||
|
|
||||||
Call<Void> send = ApiFactory.getApiService().editTask(token, task);
|
Call<Void> send = ApiFactory.getApiService().editTask(login, password, task);
|
||||||
send.enqueue(new Callback<Void>() {
|
send.enqueue(new Callback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<Void> call, @NonNull Response<Void> response) {
|
public void onResponse(@NonNull Call<Void> call, @NonNull Response<Void> response) {
|
||||||
@@ -72,8 +72,8 @@ public class EditTaskViewModel extends AndroidViewModel {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadTaskOnline(String token, long taskID) {
|
public void LoadTaskOnline(String login, String password, long taskID) {
|
||||||
Disposable disposable = ApiFactory.getApiService().getTask(token, taskID)
|
Disposable disposable = ApiFactory.getApiService().getTask(login, password, taskID)
|
||||||
.subscribeOn(Schedulers.io()).subscribe(new Consumer<Task>() {
|
.subscribeOn(Schedulers.io()).subscribe(new Consumer<Task>() {
|
||||||
@Override
|
@Override
|
||||||
public void accept(Task task) throws Throwable {
|
public void accept(Task task) throws Throwable {
|
||||||
|
|||||||
+2
-2
@@ -28,8 +28,8 @@ public class MainMenuViewModel extends AndroidViewModel {
|
|||||||
super(application);
|
super(application);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnlineUpdateList(String token) {
|
public void OnlineUpdateList(String login, String password) {
|
||||||
Single<ArrayList<Task>> single = ApiFactory.getApiService().getTaskList(token);
|
Single<ArrayList<Task>> single = ApiFactory.getApiService().getTaskList(login, password);
|
||||||
Disposable disposable = single.subscribeOn(Schedulers.io()).subscribe(new Consumer<ArrayList<Task>>() {
|
Disposable disposable = single.subscribeOn(Schedulers.io()).subscribe(new Consumer<ArrayList<Task>>() {
|
||||||
@Override
|
@Override
|
||||||
public void accept(ArrayList<Task> tasks) throws Throwable {
|
public void accept(ArrayList<Task> tasks) throws Throwable {
|
||||||
|
|||||||
@@ -8,14 +8,7 @@ public class LoginAnswer implements Serializable {
|
|||||||
@SerializedName("status")
|
@SerializedName("status")
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
@SerializedName("token")
|
|
||||||
private String token;
|
|
||||||
|
|
||||||
public String getStatus() {
|
public String getStatus() {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getToken() {
|
|
||||||
return token;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,84 +1,72 @@
|
|||||||
package com.example.tasktracker.Answers;
|
package com.example.tasktracker.Answers;
|
||||||
|
|
||||||
import androidx.room.Entity;
|
import androidx.room.Entity;
|
||||||
import androidx.room.Ignore;
|
|
||||||
import androidx.room.PrimaryKey;
|
import androidx.room.PrimaryKey;
|
||||||
|
|
||||||
import com.google.gson.annotations.SerializedName;
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
import com.google.gson.annotations.Expose;
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Entity(tableName = "task_room")
|
@Entity(tableName = "task_room")
|
||||||
public class Task implements Serializable {
|
public class Task {
|
||||||
@PrimaryKey(autoGenerate = false)
|
|
||||||
@SerializedName("id")
|
@SerializedName("id")
|
||||||
private long ID;
|
@PrimaryKey(autoGenerate = true)
|
||||||
|
private long id;
|
||||||
@SerializedName("taskName")
|
|
||||||
private String TaskName;
|
|
||||||
|
|
||||||
|
|
||||||
@SerializedName("taskDescription")
|
|
||||||
private String TaskDescription;
|
|
||||||
|
|
||||||
@SerializedName("taskDate")
|
@SerializedName("taskDate")
|
||||||
private String TaskDate;
|
private String taskDate;
|
||||||
|
@SerializedName("taskName")
|
||||||
public Task() {
|
private String taskName;
|
||||||
|
@SerializedName("taskDescription")
|
||||||
|
private String taskDescription;
|
||||||
|
@SerializedName("taskTime")
|
||||||
|
private String taskTime;
|
||||||
|
|
||||||
|
public Task(long id, String taskDate, String taskName, String taskDescription, String taskTime) {
|
||||||
|
this.id = id;
|
||||||
|
this.taskDate = taskDate;
|
||||||
|
this.taskName = taskName;
|
||||||
|
this.taskDescription = taskDescription;
|
||||||
|
this.taskTime = taskTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore
|
public long getId() {
|
||||||
public Task(long ID, String TaskName, String TaskDescription, String TaskDate) {
|
return id;
|
||||||
this.TaskName = TaskName;
|
|
||||||
this.TaskDescription = TaskDescription;
|
|
||||||
this.TaskDate = TaskDate;
|
|
||||||
this.ID = ID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTaskName() {
|
public void setId(long id) {
|
||||||
return TaskName;
|
this.id = id;
|
||||||
}
|
|
||||||
|
|
||||||
public String getTaskDescription() {
|
|
||||||
return TaskDescription;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTaskDate() {
|
public String getTaskDate() {
|
||||||
return TaskDate;
|
return taskDate;
|
||||||
}
|
|
||||||
|
|
||||||
public long getID() {
|
|
||||||
return ID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTaskName(String taskName) {
|
|
||||||
TaskName = taskName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTaskDescription(String taskDescription) {
|
|
||||||
TaskDescription = taskDescription;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTaskDate(String taskDate) {
|
public void setTaskDate(String taskDate) {
|
||||||
TaskDate = taskDate;
|
this.taskDate = taskDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setID(long id) {
|
public String getTaskName() {
|
||||||
ID = id;
|
return taskName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTaskName(String taskName) {
|
||||||
@Override
|
this.taskName = taskName;
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (o == null || getClass() != o.getClass()) return false;
|
|
||||||
Task task = (Task) o;
|
|
||||||
return ID == task.ID && Objects.equals(TaskName, task.TaskName) && Objects.equals(TaskDescription, task.TaskDescription) && Objects.equals(TaskDate, task.TaskDate);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public String getTaskDescription() {
|
||||||
public int hashCode() {
|
return taskDescription;
|
||||||
return Objects.hash(ID, TaskName, TaskDescription, TaskDate);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTaskDescription(String taskDescription) {
|
||||||
|
this.taskDescription = taskDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTaskTime() {
|
||||||
|
return taskTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTaskTime(String taskTime) {
|
||||||
|
this.taskTime = taskTime;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
|
|||||||
import retrofit2.converter.gson.GsonConverterFactory;
|
import retrofit2.converter.gson.GsonConverterFactory;
|
||||||
|
|
||||||
public class ApiFactory {
|
public class ApiFactory {
|
||||||
private static final String BASE_URL = "http://147.45.255.215:8080/";
|
//private static final String BASE_URL = "http://147.45.255.215:8080/";
|
||||||
|
private static final String BASE_URL = "http://192.168.0.3:8080/";
|
||||||
|
|
||||||
private static ApiService apiService = null;
|
private static ApiService apiService = null;
|
||||||
|
|
||||||
|
|||||||
@@ -13,9 +13,6 @@ import retrofit2.http.POST;
|
|||||||
import retrofit2.http.Query;
|
import retrofit2.http.Query;
|
||||||
|
|
||||||
public interface ApiService {
|
public interface ApiService {
|
||||||
@GET("user")
|
|
||||||
Single<LoginAnswer> checkToken(@Query("token") String token);
|
|
||||||
|
|
||||||
@GET("singin")
|
@GET("singin")
|
||||||
Single<LoginAnswer> singin(@Query("login") String login, @Query("password") String password);
|
Single<LoginAnswer> singin(@Query("login") String login, @Query("password") String password);
|
||||||
|
|
||||||
@@ -23,14 +20,14 @@ public interface ApiService {
|
|||||||
Single<LoginAnswer> singup(@Query("login") String login, @Query("password") String password);
|
Single<LoginAnswer> singup(@Query("login") String login, @Query("password") String password);
|
||||||
|
|
||||||
@GET("user/task")
|
@GET("user/task")
|
||||||
Single<Task> getTask(@Query("token") String token, @Query("id") long id);
|
Single<Task> getTask(@Query("login") String login, @Query("password") String password, @Query("id") long id);
|
||||||
|
|
||||||
@GET("user/task/list")
|
@GET("user/task/list")
|
||||||
Single<ArrayList<Task>> getTaskList(@Query("token") String token);
|
Single<ArrayList<Task>> getTaskList(@Query("login") String login, @Query("password") String password);
|
||||||
|
|
||||||
@POST("user/task/edit")
|
@POST("user/task/edit")
|
||||||
Call<Void> editTask(@Query("token") String token, @Body Task task);
|
Call<Void> editTask(@Query("login") String login, @Query("password") String password, @Body Task task);
|
||||||
|
|
||||||
@POST("user/task/remove")
|
@POST("user/task/remove")
|
||||||
Call<Void> removeTask(@Query("token") String token, @Query("id") long ID);
|
Call<Void> removeTask(@Query("login") String login, @Query("password") String password, @Query("id") long ID);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,5 +2,6 @@ package com.example.tasktracker;
|
|||||||
|
|
||||||
public abstract class PublicKeyNames {
|
public abstract class PublicKeyNames {
|
||||||
public static final String TOKEN_LIST = "token_list";
|
public static final String TOKEN_LIST = "token_list";
|
||||||
public static final String TOKEN_KEY = "TOKEN";
|
public static final String LOGIN_KEY = "LOGIN";
|
||||||
|
public static final String PASSWORD_KEY = "PASSWORD";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,10 +18,8 @@
|
|||||||
<string name="snackbar_InvalidLogin">Incorrect login or password</string>
|
<string name="snackbar_InvalidLogin">Incorrect login or password</string>
|
||||||
<string name="snackbar_AlredyCreated">This accaunt alredy created</string>
|
<string name="snackbar_AlredyCreated">This accaunt alredy created</string>
|
||||||
<string name="snackbar_InternetError">Something went wrong. Check your internet connection.</string>
|
<string name="snackbar_InternetError">Something went wrong. Check your internet connection.</string>
|
||||||
<string name="snackebar_FailUpdateTaskList">Fail update task list!</string>
|
<string name="snackbar_FailUpdateTaskList">Fail update task list!</string>
|
||||||
<string name="snackbar_EnterName">Enter task name</string>
|
<string name="snackbar_EnterName">Enter task name</string>
|
||||||
<string name="snackbar_EnterDate">Enter task date</string>
|
|
||||||
<string name="snackbar_EnterTime">Enter time</string>
|
|
||||||
<string name="snackbar_DataBaseError">Something went wrong.</string>
|
<string name="snackbar_DataBaseError">Something went wrong.</string>
|
||||||
<string name="button_editTask">Edit task</string>
|
<string name="button_editTask">Edit task</string>
|
||||||
<string name="button_YES">Yes</string>
|
<string name="button_YES">Yes</string>
|
||||||
@@ -29,4 +27,5 @@
|
|||||||
<string name="hint_Month">Month</string>
|
<string name="hint_Month">Month</string>
|
||||||
<string name="hint_Yar">Year</string>
|
<string name="hint_Yar">Year</string>
|
||||||
<string name="hint_Hour">Hour</string>
|
<string name="hint_Hour">Hour</string>
|
||||||
|
<string name="snackbar_BigLoginPassword">Login or password is too long.</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -18,10 +18,8 @@
|
|||||||
<string name="snackbar_InvalidLogin">Неправильный логин или пароль</string>
|
<string name="snackbar_InvalidLogin">Неправильный логин или пароль</string>
|
||||||
<string name="snackbar_AlredyCreated">Этот аккаунт уже создан</string>
|
<string name="snackbar_AlredyCreated">Этот аккаунт уже создан</string>
|
||||||
<string name="snackbar_InternetError">Что-то пошло не так. Проверьте подключение к интернету.</string>
|
<string name="snackbar_InternetError">Что-то пошло не так. Проверьте подключение к интернету.</string>
|
||||||
<string name="snackebar_FailUpdateTaskList">Неудалось обновить список задач!</string>
|
<string name="snackbar_FailUpdateTaskList">Неудалось обновить список задач!</string>
|
||||||
<string name="snackbar_EnterName">Введите назвние</string>
|
<string name="snackbar_EnterName">Введите нзвание</string>
|
||||||
<string name="snackbar_EnterDate">Введите дату</string>
|
|
||||||
<string name="snackbar_EnterTime">Введите время</string>
|
|
||||||
<string name="snackbar_DataBaseError">Что-то пошло не так</string>
|
<string name="snackbar_DataBaseError">Что-то пошло не так</string>
|
||||||
<string name="button_editTask">Редакировать</string>
|
<string name="button_editTask">Редакировать</string>
|
||||||
<string name="button_YES">Да</string>
|
<string name="button_YES">Да</string>
|
||||||
@@ -29,4 +27,5 @@
|
|||||||
<string name="hint_Month">Месяц</string>
|
<string name="hint_Month">Месяц</string>
|
||||||
<string name="hint_Yar">Год</string>
|
<string name="hint_Yar">Год</string>
|
||||||
<string name="hint_Hour">Час</string>
|
<string name="hint_Hour">Час</string>
|
||||||
|
<string name="snackbar_BigLoginPassword">Логин или пороль слишком длинный.</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -31,10 +31,9 @@
|
|||||||
<string name="snackbar_InvalidLogin">Incorrect login or password</string>
|
<string name="snackbar_InvalidLogin">Incorrect login or password</string>
|
||||||
<string name="snackbar_AlredyCreated">This accaunt alredy created</string>
|
<string name="snackbar_AlredyCreated">This accaunt alredy created</string>
|
||||||
<string name="snackbar_InternetError">Something went wrong. Check your internet connection.</string>
|
<string name="snackbar_InternetError">Something went wrong. Check your internet connection.</string>
|
||||||
<string name="snackebar_FailUpdateTaskList">Fail update task list!</string>
|
<string name="snackbar_FailUpdateTaskList">Fail update task list!</string>
|
||||||
<string name="snackbar_EnterName">Enter task name</string>
|
<string name="snackbar_EnterName">Enter task name</string>
|
||||||
<string name="snackbar_EnterDate">Enter task date</string>
|
|
||||||
<string name="snackbar_EnterTime">Enter time</string>
|
|
||||||
<string name="snackbar_DataBaseError">Something went wrong.</string>
|
<string name="snackbar_DataBaseError">Something went wrong.</string>
|
||||||
|
<string name="snackbar_BigLoginPassword">Login or password is too long.</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
+7216
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user