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">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
|
<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 {
|
android {
|
||||||
namespace = "com.example.tasktracker"
|
namespace = "com.samsungschool.tasktracker"
|
||||||
compileSdk = 36
|
compileSdk = 36
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "com.example.tasktracker"
|
applicationId = "com.samsungschool.tasktracker"
|
||||||
minSdk = 27
|
minSdk = 27
|
||||||
|
//noinspection OldTargetApi
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = 1
|
versionCode = 1
|
||||||
versionName = "1.0"
|
versionName = "1.0"
|
||||||
@@ -22,7 +23,12 @@ android {
|
|||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
isMinifyEnabled = false
|
// Optimisation code
|
||||||
|
isMinifyEnabled = true
|
||||||
|
// Optimization resource
|
||||||
|
//isShrinkResources = true
|
||||||
|
// Off logs
|
||||||
|
//isDebuggable = false
|
||||||
proguardFiles(
|
proguardFiles(
|
||||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||||
"proguard-rules.pro"
|
"proguard-rules.pro"
|
||||||
@@ -30,8 +36,8 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+3
@@ -19,3 +19,6 @@
|
|||||||
# If you keep the line number information, uncomment this to
|
# If you keep the line number information, uncomment this to
|
||||||
# hide the original source file name.
|
# 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;
|
import android.content.Context;
|
||||||
|
|
||||||
@@ -21,6 +21,6 @@ public class ExampleInstrumentedTest {
|
|||||||
public void useAppContext() {
|
public void useAppContext() {
|
||||||
// Context of the app under test.
|
// Context of the app under test.
|
||||||
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
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.DatePickerDialog;
|
||||||
import android.app.TimePickerDialog;
|
import android.app.TimePickerDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
|
||||||
import android.widget.DatePicker;
|
import android.widget.DatePicker;
|
||||||
import android.widget.TimePicker;
|
import android.widget.TimePicker;
|
||||||
|
|
||||||
@@ -13,12 +12,12 @@ import androidx.appcompat.app.AppCompatActivity;
|
|||||||
import androidx.lifecycle.Observer;
|
import androidx.lifecycle.Observer;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
|
|
||||||
import com.example.tasktracker.Activities.ViewModels.AddItemViewModel;
|
import com.samsungschool.tasktracker.Activities.ViewModels.AddItemViewModel;
|
||||||
import com.example.tasktracker.Activities.ViewModels.TimePickerFragment;
|
import com.samsungschool.tasktracker.Activities.ViewModels.TimePickerFragment;
|
||||||
import com.example.tasktracker.Answers.Task;
|
import com.samsungschool.tasktracker.Answers.Task;
|
||||||
import com.example.tasktracker.PublicKeyNames;
|
import com.samsungschool.tasktracker.PublicKeyNames;
|
||||||
import com.example.tasktracker.R;
|
import com.samsungschool.tasktracker.R;
|
||||||
import com.example.tasktracker.databinding.ActivityAddNewTaskBinding;
|
import com.samsungschool.tasktracker.databinding.ActivityAddNewTaskBinding;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
import java.util.Random;
|
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.DatePickerDialog;
|
||||||
import android.app.Dialog;
|
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.DatePickerDialog;
|
||||||
import android.app.TimePickerDialog;
|
import android.app.TimePickerDialog;
|
||||||
@@ -12,12 +12,12 @@ import android.widget.TimePicker;
|
|||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.lifecycle.Observer;
|
import androidx.lifecycle.Observer;
|
||||||
|
|
||||||
import com.example.tasktracker.Activities.ViewModels.EditTaskViewModel;
|
import com.samsungschool.tasktracker.Activities.ViewModels.EditTaskViewModel;
|
||||||
import com.example.tasktracker.Activities.ViewModels.TimePickerFragment;
|
import com.samsungschool.tasktracker.Activities.ViewModels.TimePickerFragment;
|
||||||
import com.example.tasktracker.Answers.Task;
|
import com.samsungschool.tasktracker.Answers.Task;
|
||||||
import com.example.tasktracker.PublicKeyNames;
|
import com.samsungschool.tasktracker.PublicKeyNames;
|
||||||
import com.example.tasktracker.R;
|
import com.samsungschool.tasktracker.R;
|
||||||
import com.example.tasktracker.databinding.ActivityEditTaskBinding;
|
import com.samsungschool.tasktracker.databinding.ActivityEditTaskBinding;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
public class EditTask extends AppCompatActivity implements DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {
|
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.INVISIBLE;
|
||||||
import static android.view.View.VISIBLE;
|
import static android.view.View.VISIBLE;
|
||||||
@@ -19,13 +19,13 @@ import androidx.lifecycle.ViewModelProvider;
|
|||||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.example.tasktracker.Activities.ViewModels.MainMenuViewModel;
|
import com.samsungschool.tasktracker.Activities.ViewModels.MainMenuViewModel;
|
||||||
import com.example.tasktracker.Answers.Task;
|
import com.samsungschool.tasktracker.Answers.Task;
|
||||||
import com.example.tasktracker.Api.ApiFactory;
|
import com.samsungschool.tasktracker.Api.ApiFactory;
|
||||||
import com.example.tasktracker.Api.TaskRepository;
|
import com.samsungschool.tasktracker.Api.TaskRepository;
|
||||||
import com.example.tasktracker.PublicKeyNames;
|
import com.samsungschool.tasktracker.PublicKeyNames;
|
||||||
import com.example.tasktracker.R;
|
import com.samsungschool.tasktracker.R;
|
||||||
import com.example.tasktracker.databinding.ActivityMainMenuBinding;
|
import com.samsungschool.tasktracker.databinding.ActivityMainMenuBinding;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
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.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
import com.example.tasktracker.Answers.StatusAnswer;
|
import com.samsungschool.tasktracker.Answers.StatusAnswer;
|
||||||
import com.example.tasktracker.Api.ApiFactory;
|
import com.samsungschool.tasktracker.Api.ApiFactory;
|
||||||
import com.example.tasktracker.PublicKeyNames;
|
import com.samsungschool.tasktracker.PublicKeyNames;
|
||||||
import com.example.tasktracker.R;
|
import com.samsungschool.tasktracker.R;
|
||||||
import com.example.tasktracker.databinding.ActivitySettingsBinding;
|
import com.samsungschool.tasktracker.databinding.ActivitySettingsBinding;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
||||||
@@ -70,7 +69,7 @@ public class SettingsActivity extends AppCompatActivity {
|
|||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.subscribe(new Consumer<StatusAnswer>() {
|
.subscribe(new Consumer<StatusAnswer>() {
|
||||||
@Override
|
@Override
|
||||||
public void accept(StatusAnswer statusAnswer) throws Throwable {
|
public void accept(StatusAnswer statusAnswer) {
|
||||||
if (statusAnswer.getStatus().equals("ok")) {
|
if (statusAnswer.getStatus().equals("ok")) {
|
||||||
getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE)
|
getSharedPreferences(PublicKeyNames.TOKEN_LIST, MODE_PRIVATE)
|
||||||
.edit()
|
.edit()
|
||||||
@@ -87,7 +86,7 @@ public class SettingsActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
}, new Consumer<Throwable>() {
|
}, new Consumer<Throwable>() {
|
||||||
@Override
|
@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();
|
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.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -7,9 +7,9 @@ import android.view.ViewGroup;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.example.tasktracker.Answers.Task;
|
import com.samsungschool.tasktracker.Answers.Task;
|
||||||
import com.example.tasktracker.R;
|
import com.samsungschool.tasktracker.R;
|
||||||
import com.example.tasktracker.databinding.ItemBinding;
|
import com.samsungschool.tasktracker.databinding.ItemBinding;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
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.app.Application;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -8,9 +8,9 @@ import androidx.lifecycle.AndroidViewModel;
|
|||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
import com.example.tasktracker.Answers.Task;
|
import com.samsungschool.tasktracker.Answers.Task;
|
||||||
import com.example.tasktracker.Api.ApiFactory;
|
import com.samsungschool.tasktracker.Api.ApiFactory;
|
||||||
import com.example.tasktracker.Api.TaskRepository;
|
import com.samsungschool.tasktracker.Api.TaskRepository;
|
||||||
|
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.Callback;
|
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.app.Application;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -9,11 +9,10 @@ import androidx.lifecycle.LiveData;
|
|||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
import androidx.lifecycle.Observer;
|
import androidx.lifecycle.Observer;
|
||||||
|
|
||||||
import com.example.tasktracker.Activities.EditTask;
|
import com.samsungschool.tasktracker.Activities.EditTask;
|
||||||
import com.example.tasktracker.Answers.Task;
|
import com.samsungschool.tasktracker.Answers.Task;
|
||||||
import com.example.tasktracker.Api.ApiFactory;
|
import com.samsungschool.tasktracker.Api.ApiFactory;
|
||||||
import com.example.tasktracker.Api.TaskDao;
|
import com.samsungschool.tasktracker.Api.TaskRepository;
|
||||||
import com.example.tasktracker.Api.TaskRepository;
|
|
||||||
|
|
||||||
import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
import io.reactivex.rxjava3.disposables.CompositeDisposable;
|
||||||
import io.reactivex.rxjava3.disposables.Disposable;
|
import io.reactivex.rxjava3.disposables.Disposable;
|
||||||
@@ -76,12 +75,12 @@ public class EditTaskViewModel extends AndroidViewModel {
|
|||||||
Disposable disposable = ApiFactory.getApiService().getTask(login, password, 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) {
|
||||||
liveDataLoad.postValue(task);
|
liveDataLoad.postValue(task);
|
||||||
}
|
}
|
||||||
}, new Consumer<Throwable>() {
|
}, new Consumer<Throwable>() {
|
||||||
@Override
|
@Override
|
||||||
public void accept(Throwable throwable) throws Throwable {
|
public void accept(Throwable throwable) {
|
||||||
liveDataFail.postValue(throwable.getMessage());
|
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;
|
import android.app.Application;
|
||||||
|
|
||||||
@@ -7,8 +7,8 @@ import androidx.lifecycle.AndroidViewModel;
|
|||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
|
|
||||||
import com.example.tasktracker.Answers.Task;
|
import com.samsungschool.tasktracker.Answers.Task;
|
||||||
import com.example.tasktracker.Api.ApiFactory;
|
import com.samsungschool.tasktracker.Api.ApiFactory;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -32,12 +32,12 @@ public class MainMenuViewModel extends AndroidViewModel {
|
|||||||
Single<ArrayList<Task>> single = ApiFactory.getApiService().getTaskList(login, password);
|
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) {
|
||||||
Load.postValue(tasks);
|
Load.postValue(tasks);
|
||||||
}
|
}
|
||||||
}, new Consumer<Throwable>() {
|
}, new Consumer<Throwable>() {
|
||||||
@Override
|
@Override
|
||||||
public void accept(Throwable throwable) throws Throwable {
|
public void accept(Throwable throwable) {
|
||||||
failLoad.postValue(throwable.getMessage());
|
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.Dialog;
|
||||||
import android.app.TimePickerDialog;
|
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;
|
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.Entity;
|
||||||
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;
|
|
||||||
|
|
||||||
@Entity(tableName = "task_room")
|
@Entity(tableName = "task_room")
|
||||||
public class Task {
|
public class Task {
|
||||||
|
|
||||||
@SerializedName("id")
|
@SerializedName("id")
|
||||||
@PrimaryKey(autoGenerate = true)
|
@PrimaryKey(autoGenerate = true)
|
||||||
private long id;
|
private long id;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.example.tasktracker.Api;
|
package com.samsungschool.tasktracker.Api;
|
||||||
|
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
|
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.samsungschool.tasktracker.Answers.StatusAnswer;
|
||||||
import com.example.tasktracker.Answers.Task;
|
import com.samsungschool.tasktracker.Answers.Task;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
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.lifecycle.LiveData;
|
||||||
import androidx.room.Dao;
|
import androidx.room.Dao;
|
||||||
@@ -7,12 +7,10 @@ import androidx.room.Insert;
|
|||||||
import androidx.room.OnConflictStrategy;
|
import androidx.room.OnConflictStrategy;
|
||||||
import androidx.room.Query;
|
import androidx.room.Query;
|
||||||
|
|
||||||
import com.example.tasktracker.Answers.Task;
|
import com.samsungschool.tasktracker.Answers.Task;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import retrofit2.Call;
|
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
public interface TaskDao {
|
public interface TaskDao {
|
||||||
@Query("SELECT * FROM task_room")
|
@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;
|
import android.app.Application;
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@ import androidx.room.Database;
|
|||||||
import androidx.room.Room;
|
import androidx.room.Room;
|
||||||
import androidx.room.RoomDatabase;
|
import androidx.room.RoomDatabase;
|
||||||
|
|
||||||
import com.example.tasktracker.Answers.Task;
|
import com.samsungschool.tasktracker.Answers.Task;
|
||||||
|
|
||||||
@Database(entities = {Task.class}, version = 1)
|
@Database(entities = {Task.class}, version = 1)
|
||||||
public abstract class TaskRepository extends RoomDatabase {
|
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 abstract class PublicKeyNames {
|
||||||
public static final String TOKEN_LIST = "token_list";
|
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;
|
import org.junit.Test;
|
||||||
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
[versions]
|
[versions]
|
||||||
agp = "8.9.2"
|
agp = "8.9.3"
|
||||||
gson = "2.10.1"
|
|
||||||
junit = "4.13.2"
|
junit = "4.13.2"
|
||||||
junitVersion = "1.2.1"
|
junitVersion = "1.2.1"
|
||||||
espressoCore = "3.6.1"
|
espressoCore = "3.6.1"
|
||||||
appcompat = "1.7.0"
|
appcompat = "1.7.1"
|
||||||
|
gson = "2.10.1"
|
||||||
material = "1.12.0"
|
material = "1.12.0"
|
||||||
activity = "1.10.1"
|
activity = "1.10.1"
|
||||||
constraintlayout = "2.2.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
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
|
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"
|
rootProject.name = "TaskTracker"
|
||||||
include(":app")
|
include(":app")
|
||||||
|
|
||||||
Reference in New Issue
Block a user