Refactor and settup for release configuration
This commit is contained in:
Generated
+1
@@ -1,3 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
|
||||
|
||||
+11
-5
@@ -3,12 +3,13 @@ plugins {
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "com.example.tasktracker"
|
||||
namespace = "com.samsungschool.tasktracker"
|
||||
compileSdk = 36
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "com.example.tasktracker"
|
||||
applicationId = "com.samsungschool.tasktracker"
|
||||
minSdk = 27
|
||||
//noinspection OldTargetApi
|
||||
targetSdk = 35
|
||||
versionCode = 1
|
||||
versionName = "1.0"
|
||||
@@ -22,7 +23,12 @@ android {
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
// Optimisation code
|
||||
isMinifyEnabled = true
|
||||
// Optimization resource
|
||||
//isShrinkResources = true
|
||||
// Off logs
|
||||
//isDebuggable = false
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
@@ -30,8 +36,8 @@ android {
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_11
|
||||
targetCompatibility = JavaVersion.VERSION_11
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+4
-1
@@ -18,4 +18,7 @@
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
#-renamesourcefileattribute SourceFile
|
||||
|
||||
-keep class com.samsungschool.tasktracker.Answers.** { *; }
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"version": 3,
|
||||
"artifactType": {
|
||||
"type": "APK",
|
||||
"kind": "Directory"
|
||||
},
|
||||
"applicationId": "com.samsungschool.tasktracker",
|
||||
"variantName": "release",
|
||||
"elements": [
|
||||
{
|
||||
"type": "SINGLE",
|
||||
"filters": [],
|
||||
"attributes": [],
|
||||
"versionCode": 1,
|
||||
"versionName": "1.0",
|
||||
"outputFile": "app-release.apk"
|
||||
}
|
||||
],
|
||||
"elementType": "File",
|
||||
"baselineProfiles": [
|
||||
{
|
||||
"minApi": 28,
|
||||
"maxApi": 30,
|
||||
"baselineProfiles": [
|
||||
"baselineProfiles/1/app-release.dm"
|
||||
]
|
||||
},
|
||||
{
|
||||
"minApi": 31,
|
||||
"maxApi": 2147483647,
|
||||
"baselineProfiles": [
|
||||
"baselineProfiles/0/app-release.dm"
|
||||
]
|
||||
}
|
||||
],
|
||||
"minSdkVersionForDexing": 27
|
||||
}
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker;
|
||||
package com.samsungschool.tasktracker;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
@@ -21,6 +21,6 @@ public class ExampleInstrumentedTest {
|
||||
public void useAppContext() {
|
||||
// Context of the app under test.
|
||||
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
||||
assertEquals("com.example.tasktracker", appContext.getPackageName());
|
||||
assertEquals("com.samsungschool.tasktracker", appContext.getPackageName());
|
||||
}
|
||||
}
|
||||
@@ -1,158 +0,0 @@
|
||||
package com.example.tasktracker.Activities;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.activity.EdgeToEdge;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.example.tasktracker.Answers.StatusAnswer;
|
||||
import com.example.tasktracker.Api.ApiFactory;
|
||||
import com.example.tasktracker.PublicKeyNames;
|
||||
import com.example.tasktracker.R;
|
||||
import com.example.tasktracker.databinding.ActivityLoginBinding;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
import io.reactivex.rxjava3.functions.Consumer;
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
|
||||
public class LoginActivity extends AppCompatActivity {
|
||||
private static final String TAG = "LOGIN_ACTIVITY";
|
||||
|
||||
|
||||
private ActivityLoginBinding binding;
|
||||
private final CompositeDisposable compositeDisposable = new CompositeDisposable();
|
||||
|
||||
private String login;
|
||||
private String password;
|
||||
|
||||
@SuppressLint("UnsafeIntentLaunch")
|
||||
@Override
|
||||
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);
|
||||
binding = ActivityLoginBinding.inflate(getLayoutInflater());
|
||||
EdgeToEdge.enable(this);
|
||||
setContentView(binding.getRoot());
|
||||
|
||||
if(login != null && password != null)
|
||||
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();
|
||||
return;
|
||||
}
|
||||
if(password.isEmpty()) {
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterPassword, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
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();
|
||||
return;
|
||||
}
|
||||
if(password.isEmpty()) {
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterPassword, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
SingUp();
|
||||
});
|
||||
|
||||
binding.buttonOffline.setOnClickListener(v->{
|
||||
startActivity(MainMenu.getIntent(this, null,null));
|
||||
finish();
|
||||
});
|
||||
}
|
||||
|
||||
private void SingIn() {
|
||||
Disposable disposable = ApiFactory.getApiService().singin(login, password)
|
||||
.subscribeOn(Schedulers.io()).subscribe(new Consumer<StatusAnswer>() {
|
||||
@Override
|
||||
public void accept(StatusAnswer loginAnswer) throws Throwable {
|
||||
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();
|
||||
return;
|
||||
}
|
||||
|
||||
@SuppressLint("UnsafeIntentLaunch") Intent intent = MainMenu.getIntent(LoginActivity.this, login, password);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
|
||||
getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE).edit()
|
||||
.putString(PublicKeyNames.LOGIN_KEY, login)
|
||||
.putString(PublicKeyNames.PASSWORD_KEY, password)
|
||||
.apply();
|
||||
}
|
||||
}, new Consumer<Throwable>() {
|
||||
@Override
|
||||
public void accept(Throwable throwable) throws Throwable {
|
||||
Log.e(TAG, throwable.getMessage());
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
compositeDisposable.add(disposable);
|
||||
}
|
||||
private void SingUp() {
|
||||
Disposable disposable = ApiFactory.getApiService().singup(login, password)
|
||||
.subscribeOn(Schedulers.io()).subscribe(new Consumer<StatusAnswer>() {
|
||||
@Override
|
||||
public void accept(StatusAnswer loginAnswer) throws Throwable {
|
||||
if(loginAnswer.getStatus().equals("big")) {
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_BigLoginPassword, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
else if(loginAnswer.getStatus().equals("big")) {
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_SmallLoginPassword, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
else if (loginAnswer.getStatus().equals("error")) {
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_AlredyCreated, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
@SuppressLint("UnsafeIntentLaunch") Intent intent = MainMenu.getIntent(LoginActivity.this, login, password);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
|
||||
getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE).edit()
|
||||
.putString(PublicKeyNames.LOGIN_KEY, login)
|
||||
.putString(PublicKeyNames.PASSWORD_KEY, password)
|
||||
.apply();
|
||||
}
|
||||
}, new Consumer<Throwable>() {
|
||||
@Override
|
||||
public void accept(Throwable throwable) throws Throwable {
|
||||
Log.e(TAG, throwable.getMessage());
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
compositeDisposable.add(disposable);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
compositeDisposable.dispose();
|
||||
}
|
||||
}
|
||||
+7
-8
@@ -1,11 +1,10 @@
|
||||
package com.example.tasktracker.Activities;
|
||||
package com.samsungschool.tasktracker.Activities;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.app.TimePickerDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.TimePicker;
|
||||
|
||||
@@ -13,12 +12,12 @@ import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.example.tasktracker.Activities.ViewModels.AddItemViewModel;
|
||||
import com.example.tasktracker.Activities.ViewModels.TimePickerFragment;
|
||||
import com.example.tasktracker.Answers.Task;
|
||||
import com.example.tasktracker.PublicKeyNames;
|
||||
import com.example.tasktracker.R;
|
||||
import com.example.tasktracker.databinding.ActivityAddNewTaskBinding;
|
||||
import com.samsungschool.tasktracker.Activities.ViewModels.AddItemViewModel;
|
||||
import com.samsungschool.tasktracker.Activities.ViewModels.TimePickerFragment;
|
||||
import com.samsungschool.tasktracker.Answers.Task;
|
||||
import com.samsungschool.tasktracker.PublicKeyNames;
|
||||
import com.samsungschool.tasktracker.R;
|
||||
import com.samsungschool.tasktracker.databinding.ActivityAddNewTaskBinding;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
import java.util.Random;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Activities;
|
||||
package com.samsungschool.tasktracker.Activities;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.app.Dialog;
|
||||
+7
-7
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Activities;
|
||||
package com.samsungschool.tasktracker.Activities;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.app.TimePickerDialog;
|
||||
@@ -12,12 +12,12 @@ import android.widget.TimePicker;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.example.tasktracker.Activities.ViewModels.EditTaskViewModel;
|
||||
import com.example.tasktracker.Activities.ViewModels.TimePickerFragment;
|
||||
import com.example.tasktracker.Answers.Task;
|
||||
import com.example.tasktracker.PublicKeyNames;
|
||||
import com.example.tasktracker.R;
|
||||
import com.example.tasktracker.databinding.ActivityEditTaskBinding;
|
||||
import com.samsungschool.tasktracker.Activities.ViewModels.EditTaskViewModel;
|
||||
import com.samsungschool.tasktracker.Activities.ViewModels.TimePickerFragment;
|
||||
import com.samsungschool.tasktracker.Answers.Task;
|
||||
import com.samsungschool.tasktracker.PublicKeyNames;
|
||||
import com.samsungschool.tasktracker.R;
|
||||
import com.samsungschool.tasktracker.databinding.ActivityEditTaskBinding;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {
|
||||
@@ -0,0 +1,143 @@
|
||||
package com.samsungschool.tasktracker.Activities;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.activity.EdgeToEdge;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.samsungschool.tasktracker.Activities.ViewModels.LoginViewModel;
|
||||
import com.samsungschool.tasktracker.Answers.StatusAnswer;
|
||||
import com.samsungschool.tasktracker.PublicKeyNames;
|
||||
import com.samsungschool.tasktracker.R;
|
||||
import com.samsungschool.tasktracker.databinding.ActivityLoginBinding;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
|
||||
public class LoginActivity extends AppCompatActivity {
|
||||
private static final String TAG = "LOGIN_ACTIVITY";
|
||||
|
||||
private ActivityLoginBinding binding;
|
||||
|
||||
private LoginViewModel viewModel;
|
||||
private String login;
|
||||
private String password;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
viewModel = new LoginViewModel(getApplication());
|
||||
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);
|
||||
binding = ActivityLoginBinding.inflate(getLayoutInflater());
|
||||
EdgeToEdge.enable(this);
|
||||
setContentView(binding.getRoot());
|
||||
|
||||
viewModel.getSingInSuccess().observe(this, new Observer<StatusAnswer>() {
|
||||
@Override
|
||||
public void onChanged(StatusAnswer statusAnswer) {
|
||||
Log.d(TAG, "good");
|
||||
if(statusAnswer.getStatus().equals("big")) {
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InvalidLogin, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
else if (statusAnswer.getStatus().equals("error")) {
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InvalidLogin, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
Log.d(TAG, "good1");
|
||||
|
||||
getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE).edit()
|
||||
.putString(PublicKeyNames.LOGIN_KEY, login)
|
||||
.putString(PublicKeyNames.PASSWORD_KEY, password)
|
||||
.apply();
|
||||
|
||||
startActivity(MainMenu.getIntent(LoginActivity.this, login, password));
|
||||
finish();
|
||||
}
|
||||
});
|
||||
viewModel.getSingInFail().observe(this, new Observer<String>() {
|
||||
@Override
|
||||
public void onChanged(String s) {
|
||||
Log.d(TAG, "fail");
|
||||
Log.e(TAG, s);
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
viewModel.getSingUpSuccess().observe(this, new Observer<StatusAnswer>() {
|
||||
@Override
|
||||
public void onChanged(StatusAnswer statusAnswer) {
|
||||
switch (statusAnswer.getStatus()) {
|
||||
case "big":
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_BigLoginPassword, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
case "small":
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_SmallLoginPassword, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
case "error":
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_AlredyCreated, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE).edit()
|
||||
.putString(PublicKeyNames.LOGIN_KEY, login)
|
||||
.putString(PublicKeyNames.PASSWORD_KEY, password)
|
||||
.apply();
|
||||
|
||||
@SuppressLint("UnsafeIntentLaunch") Intent intent = MainMenu.getIntent(LoginActivity.this, login, password);
|
||||
startActivity(intent);
|
||||
finish();
|
||||
}
|
||||
});
|
||||
viewModel.getSingUpFail().observe(this, new Observer<String>() {
|
||||
@Override
|
||||
public void onChanged(String s) {
|
||||
Log.e(TAG, s);
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
|
||||
if(login != null && password != null)
|
||||
viewModel.SingIn(login, password);
|
||||
|
||||
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();
|
||||
return;
|
||||
}
|
||||
if(password.isEmpty()) {
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterPassword, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
viewModel.SingIn(login, password);
|
||||
});
|
||||
|
||||
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();
|
||||
return;
|
||||
}
|
||||
if(password.isEmpty()) {
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_EnterPassword, Snackbar.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
|
||||
viewModel.SingUp(login, password);
|
||||
});
|
||||
|
||||
binding.buttonOffline.setOnClickListener(v->{
|
||||
startActivity(MainMenu.getIntent(this, null,null));
|
||||
finish();
|
||||
});
|
||||
}
|
||||
}
|
||||
+8
-8
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Activities;
|
||||
package com.samsungschool.tasktracker.Activities;
|
||||
|
||||
import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
@@ -19,13 +19,13 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.example.tasktracker.Activities.ViewModels.MainMenuViewModel;
|
||||
import com.example.tasktracker.Answers.Task;
|
||||
import com.example.tasktracker.Api.ApiFactory;
|
||||
import com.example.tasktracker.Api.TaskRepository;
|
||||
import com.example.tasktracker.PublicKeyNames;
|
||||
import com.example.tasktracker.R;
|
||||
import com.example.tasktracker.databinding.ActivityMainMenuBinding;
|
||||
import com.samsungschool.tasktracker.Activities.ViewModels.MainMenuViewModel;
|
||||
import com.samsungschool.tasktracker.Answers.Task;
|
||||
import com.samsungschool.tasktracker.Api.ApiFactory;
|
||||
import com.samsungschool.tasktracker.Api.TaskRepository;
|
||||
import com.samsungschool.tasktracker.PublicKeyNames;
|
||||
import com.samsungschool.tasktracker.R;
|
||||
import com.samsungschool.tasktracker.databinding.ActivityMainMenuBinding;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
import java.util.ArrayList;
|
||||
+8
-9
@@ -1,17 +1,16 @@
|
||||
package com.example.tasktracker.Activities;
|
||||
package com.samsungschool.tasktracker.Activities;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.example.tasktracker.Answers.StatusAnswer;
|
||||
import com.example.tasktracker.Api.ApiFactory;
|
||||
import com.example.tasktracker.PublicKeyNames;
|
||||
import com.example.tasktracker.R;
|
||||
import com.example.tasktracker.databinding.ActivitySettingsBinding;
|
||||
import com.samsungschool.tasktracker.Answers.StatusAnswer;
|
||||
import com.samsungschool.tasktracker.Api.ApiFactory;
|
||||
import com.samsungschool.tasktracker.PublicKeyNames;
|
||||
import com.samsungschool.tasktracker.R;
|
||||
import com.samsungschool.tasktracker.databinding.ActivitySettingsBinding;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
||||
@@ -70,7 +69,7 @@ public class SettingsActivity extends AppCompatActivity {
|
||||
.subscribeOn(Schedulers.io())
|
||||
.subscribe(new Consumer<StatusAnswer>() {
|
||||
@Override
|
||||
public void accept(StatusAnswer statusAnswer) throws Throwable {
|
||||
public void accept(StatusAnswer statusAnswer) {
|
||||
if (statusAnswer.getStatus().equals("ok")) {
|
||||
getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE)
|
||||
.edit()
|
||||
@@ -87,7 +86,7 @@ public class SettingsActivity extends AppCompatActivity {
|
||||
}
|
||||
}, new Consumer<Throwable>() {
|
||||
@Override
|
||||
public void accept(Throwable throwable) throws Throwable {
|
||||
public void accept(Throwable throwable) {
|
||||
Snackbar.make(binding.getRoot(), R.string.snackbar_InternetError, Snackbar.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Activities;
|
||||
package com.samsungschool.tasktracker.Activities;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -7,9 +7,9 @@ import android.view.ViewGroup;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.example.tasktracker.Answers.Task;
|
||||
import com.example.tasktracker.R;
|
||||
import com.example.tasktracker.databinding.ItemBinding;
|
||||
import com.samsungschool.tasktracker.Answers.Task;
|
||||
import com.samsungschool.tasktracker.R;
|
||||
import com.samsungschool.tasktracker.databinding.ItemBinding;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Activities.ViewModels;
|
||||
package com.samsungschool.tasktracker.Activities.ViewModels;
|
||||
|
||||
import android.app.Application;
|
||||
import android.util.Log;
|
||||
@@ -8,9 +8,9 @@ import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.example.tasktracker.Answers.Task;
|
||||
import com.example.tasktracker.Api.ApiFactory;
|
||||
import com.example.tasktracker.Api.TaskRepository;
|
||||
import com.samsungschool.tasktracker.Answers.Task;
|
||||
import com.samsungschool.tasktracker.Api.ApiFactory;
|
||||
import com.samsungschool.tasktracker.Api.TaskRepository;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
+7
-8
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Activities.ViewModels;
|
||||
package com.samsungschool.tasktracker.Activities.ViewModels;
|
||||
|
||||
import android.app.Application;
|
||||
import android.util.Log;
|
||||
@@ -9,11 +9,10 @@ import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.example.tasktracker.Activities.EditTask;
|
||||
import com.example.tasktracker.Answers.Task;
|
||||
import com.example.tasktracker.Api.ApiFactory;
|
||||
import com.example.tasktracker.Api.TaskDao;
|
||||
import com.example.tasktracker.Api.TaskRepository;
|
||||
import com.samsungschool.tasktracker.Activities.EditTask;
|
||||
import com.samsungschool.tasktracker.Answers.Task;
|
||||
import com.samsungschool.tasktracker.Api.ApiFactory;
|
||||
import com.samsungschool.tasktracker.Api.TaskRepository;
|
||||
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
@@ -76,12 +75,12 @@ public class EditTaskViewModel extends AndroidViewModel {
|
||||
Disposable disposable = ApiFactory.getApiService().getTask(login, password, taskID)
|
||||
.subscribeOn(Schedulers.io()).subscribe(new Consumer<Task>() {
|
||||
@Override
|
||||
public void accept(Task task) throws Throwable {
|
||||
public void accept(Task task) {
|
||||
liveDataLoad.postValue(task);
|
||||
}
|
||||
}, new Consumer<Throwable>() {
|
||||
@Override
|
||||
public void accept(Throwable throwable) throws Throwable {
|
||||
public void accept(Throwable throwable) {
|
||||
liveDataFail.postValue(throwable.getMessage());
|
||||
}
|
||||
});
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
package com.samsungschool.tasktracker.Activities.ViewModels;
|
||||
|
||||
import android.app.Application;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.samsungschool.tasktracker.Answers.StatusAnswer;
|
||||
import com.samsungschool.tasktracker.Api.ApiFactory;
|
||||
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
import io.reactivex.rxjava3.functions.Consumer;
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
|
||||
public class LoginViewModel extends AndroidViewModel {
|
||||
private final CompositeDisposable compositeDisposable = new CompositeDisposable();
|
||||
|
||||
private final MutableLiveData<StatusAnswer> SingInSuccess = new MutableLiveData<>();
|
||||
private final MutableLiveData<String> SingInFail = new MutableLiveData<>();
|
||||
private final MutableLiveData<StatusAnswer> SingUpSuccess = new MutableLiveData<>();
|
||||
private final MutableLiveData<String> SingUpFail = new MutableLiveData<>();
|
||||
|
||||
public LoginViewModel(@NonNull Application application) {
|
||||
super(application);
|
||||
}
|
||||
|
||||
public void SingIn(String login, String password) {
|
||||
Disposable disposable = ApiFactory.getApiService().singin(login, password)
|
||||
.subscribeOn(Schedulers.io()).subscribe(new Consumer<StatusAnswer>() {
|
||||
@Override
|
||||
public void accept(StatusAnswer statusAnswer) {
|
||||
SingInSuccess.postValue(statusAnswer);
|
||||
}
|
||||
}, new Consumer<Throwable>() {
|
||||
@Override
|
||||
public void accept(Throwable throwable) {
|
||||
SingInFail.postValue(throwable.getMessage());
|
||||
}
|
||||
});
|
||||
compositeDisposable.add(disposable);
|
||||
}
|
||||
|
||||
public void SingUp(String login, String password) {
|
||||
Disposable disposable = ApiFactory.getApiService().singup(login, password)
|
||||
.subscribeOn(Schedulers.io()).subscribe(new Consumer<StatusAnswer>() {
|
||||
@Override
|
||||
public void accept(StatusAnswer statusAnswer) {
|
||||
SingUpSuccess.postValue(statusAnswer);
|
||||
}
|
||||
}, new Consumer<Throwable>() {
|
||||
@Override
|
||||
public void accept(Throwable throwable) {
|
||||
SingUpFail.postValue(throwable.getMessage());
|
||||
}
|
||||
});
|
||||
compositeDisposable.add(disposable);
|
||||
}
|
||||
|
||||
public MutableLiveData<StatusAnswer> getSingInSuccess() {
|
||||
return SingInSuccess;
|
||||
}
|
||||
|
||||
public MutableLiveData<String> getSingInFail() {
|
||||
return SingInFail;
|
||||
}
|
||||
|
||||
public MutableLiveData<StatusAnswer> getSingUpSuccess() {
|
||||
return SingUpSuccess;
|
||||
}
|
||||
|
||||
public MutableLiveData<String> getSingUpFail() {
|
||||
return SingUpFail;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCleared() {
|
||||
super.onCleared();
|
||||
Log.d("LoginViewModel", "onCleared");
|
||||
compositeDisposable.dispose();
|
||||
}
|
||||
}
|
||||
+5
-5
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Activities.ViewModels;
|
||||
package com.samsungschool.tasktracker.Activities.ViewModels;
|
||||
|
||||
import android.app.Application;
|
||||
|
||||
@@ -7,8 +7,8 @@ import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.example.tasktracker.Answers.Task;
|
||||
import com.example.tasktracker.Api.ApiFactory;
|
||||
import com.samsungschool.tasktracker.Answers.Task;
|
||||
import com.samsungschool.tasktracker.Api.ApiFactory;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -32,12 +32,12 @@ public class MainMenuViewModel extends AndroidViewModel {
|
||||
Single<ArrayList<Task>> single = ApiFactory.getApiService().getTaskList(login, password);
|
||||
Disposable disposable = single.subscribeOn(Schedulers.io()).subscribe(new Consumer<ArrayList<Task>>() {
|
||||
@Override
|
||||
public void accept(ArrayList<Task> tasks) throws Throwable {
|
||||
public void accept(ArrayList<Task> tasks) {
|
||||
Load.postValue(tasks);
|
||||
}
|
||||
}, new Consumer<Throwable>() {
|
||||
@Override
|
||||
public void accept(Throwable throwable) throws Throwable {
|
||||
public void accept(Throwable throwable) {
|
||||
failLoad.postValue(throwable.getMessage());
|
||||
}
|
||||
});
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Activities.ViewModels;
|
||||
package com.samsungschool.tasktracker.Activities.ViewModels;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.app.TimePickerDialog;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Answers;
|
||||
package com.samsungschool.tasktracker.Answers;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
+1
-3
@@ -1,14 +1,12 @@
|
||||
package com.example.tasktracker.Answers;
|
||||
package com.samsungschool.tasktracker.Answers;
|
||||
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.google.gson.annotations.Expose;
|
||||
|
||||
@Entity(tableName = "task_room")
|
||||
public class Task {
|
||||
|
||||
@SerializedName("id")
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
private long id;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Api;
|
||||
package com.samsungschool.tasktracker.Api;
|
||||
|
||||
import retrofit2.Retrofit;
|
||||
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
package com.example.tasktracker.Api;
|
||||
package com.samsungschool.tasktracker.Api;
|
||||
|
||||
import com.example.tasktracker.Answers.StatusAnswer;
|
||||
import com.example.tasktracker.Answers.Task;
|
||||
import com.samsungschool.tasktracker.Answers.StatusAnswer;
|
||||
import com.samsungschool.tasktracker.Answers.Task;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
+2
-4
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Api;
|
||||
package com.samsungschool.tasktracker.Api;
|
||||
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.room.Dao;
|
||||
@@ -7,12 +7,10 @@ import androidx.room.Insert;
|
||||
import androidx.room.OnConflictStrategy;
|
||||
import androidx.room.Query;
|
||||
|
||||
import com.example.tasktracker.Answers.Task;
|
||||
import com.samsungschool.tasktracker.Answers.Task;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import retrofit2.Call;
|
||||
|
||||
@Dao
|
||||
public interface TaskDao {
|
||||
@Query("SELECT * FROM task_room")
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker.Api;
|
||||
package com.samsungschool.tasktracker.Api;
|
||||
|
||||
import android.app.Application;
|
||||
|
||||
@@ -6,7 +6,7 @@ import androidx.room.Database;
|
||||
import androidx.room.Room;
|
||||
import androidx.room.RoomDatabase;
|
||||
|
||||
import com.example.tasktracker.Answers.Task;
|
||||
import com.samsungschool.tasktracker.Answers.Task;
|
||||
|
||||
@Database(entities = {Task.class}, version = 1)
|
||||
public abstract class TaskRepository extends RoomDatabase {
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker;
|
||||
package com.samsungschool.tasktracker;
|
||||
|
||||
public abstract class PublicKeyNames {
|
||||
public static final String TOKEN_LIST = "token_list";
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.example.tasktracker;
|
||||
package com.samsungschool.tasktracker;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
[versions]
|
||||
agp = "8.9.2"
|
||||
gson = "2.10.1"
|
||||
agp = "8.9.3"
|
||||
junit = "4.13.2"
|
||||
junitVersion = "1.2.1"
|
||||
espressoCore = "3.6.1"
|
||||
appcompat = "1.7.0"
|
||||
appcompat = "1.7.1"
|
||||
gson = "2.10.1"
|
||||
material = "1.12.0"
|
||||
activity = "1.10.1"
|
||||
constraintlayout = "2.2.1"
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#Sat May 10 10:37:50 NOVT 2025
|
||||
#Sat Jun 14 12:52:41 NOVT 2025
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
|
||||
|
||||
-7216
File diff suppressed because it is too large
Load Diff
@@ -21,4 +21,3 @@ dependencyResolutionManagement {
|
||||
|
||||
rootProject.name = "TaskTracker"
|
||||
include(":app")
|
||||
|
||||
Reference in New Issue
Block a user