diff --git a/.idea/render.experimental.xml b/.idea/render.experimental.xml new file mode 100644 index 0000000..8ec256a --- /dev/null +++ b/.idea/render.experimental.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 86b53ed..ca1706c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,8 +14,7 @@ android:roundIcon="@mipmap/app_logo2_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - - + + + android:parentActivityName=".map_profile.maps.MapActivity" + android:theme="@style/AppTheme.NoActionBarWithStatusBar" /> + + android:launchMode="singleTop" /> + + android:parentActivityName=".settings.SettingsActivity" /> + + android:parentActivityName=".map_profile.maps.MapActivity" /> + - + android:theme="@style/AppTheme" /> + + android:parentActivityName=".map_profile.maps.MapActivity" /> + diff --git a/app/src/main/java/com/evan/parknbark/emailpassword/LoginActivity.java b/app/src/main/java/com/evan/parknbark/emailpassword/LoginActivity.java index a4bfe34..639557f 100644 --- a/app/src/main/java/com/evan/parknbark/emailpassword/LoginActivity.java +++ b/app/src/main/java/com/evan/parknbark/emailpassword/LoginActivity.java @@ -34,12 +34,13 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener, private static final String TAG = "LoginActivity"; private static final int REGISTER_REQUEST = 0; + private static final int REMEMBER_REQUEST = 1; private static String LOG_IN_LOAD; private TextInputLayout mTextInputEmail, mTextInputPassword; private long mBackPressedTime; private LoadToast mLoadToast; private Bundle bundle; - + private String checkbox; @Override protected void onCreate(Bundle savedInstanceState) { @@ -53,7 +54,7 @@ protected void onCreate(Bundle savedInstanceState) { User currentUser = (User) bundle.getSerializable("current_user"); SharedPreferences preferences = getSharedPreferences("remember_me", MODE_PRIVATE); - String checkbox = preferences.getString("remember", ""); + checkbox = preferences.getString("remember", ""); if (checkbox.equals("true")) { updateUI(mAuth.getCurrentUser(), currentUser); } else mAuth.signOut(); @@ -139,8 +140,9 @@ private void updateUI(FirebaseUser firebaseUser, User currentUser) { if (firebaseUser.isEmailVerified()) { mLoadToast.success(); if (!currentUser.isBanned()) { - startActivity(new Intent(LoginActivity.this, MapActivity.class) - .putExtras(bundle)); + startActivityForResult(new Intent(LoginActivity.this, MapActivity.class) + .putExtras(bundle) + .putExtra("check_box", checkbox.equals("true")), REMEMBER_REQUEST); } else { //user is banned startActivity(new Intent(LoginActivity.this, BannedUserActivity.class)); } @@ -188,6 +190,15 @@ protected void onActivityResult(int requestCode, int resultCode, @Nullable Inten mTextInputPassword.getEditText().setText(password); } } + if (requestCode == REMEMBER_REQUEST) { + //if user is checked the remember me checkbox + if (resultCode == RESULT_OK) { + //if user is pressing back button + //we want the app to terminate + finishAffinity(); + super.onBackPressed(); + } + } } @Override @@ -212,11 +223,13 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { SharedPreferences.Editor editor = preferences.edit(); editor.putString("remember", "true"); editor.apply(); + checkbox = "true"; } else { SharedPreferences preferences = getSharedPreferences("remember_me", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("remember", "false"); editor.apply(); + checkbox = "false"; } } diff --git a/app/src/main/java/com/evan/parknbark/map_profile/maps/MapActivity.java b/app/src/main/java/com/evan/parknbark/map_profile/maps/MapActivity.java index 9a583e5..5adf08d 100644 --- a/app/src/main/java/com/evan/parknbark/map_profile/maps/MapActivity.java +++ b/app/src/main/java/com/evan/parknbark/map_profile/maps/MapActivity.java @@ -11,7 +11,6 @@ import android.os.Bundle; import android.provider.Settings; import android.util.Log; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -22,8 +21,7 @@ import com.evan.parknbark.R; import com.evan.parknbark.map_profile.MapProfileBottomSheetDialog; import com.evan.parknbark.map_profile.profile.Profile; -import com.evan.parknbark.map_profile.profile.WatchProfile; -import com.evan.parknbark.settings.admin.UsersListActivity; +import com.evan.parknbark.map_profile.profile.ProfileActivity; import com.evan.parknbark.utilities.BaseNavDrawerActivity; import com.evan.parknbark.utilities.User; import com.google.android.gms.location.FusedLocationProviderClient; @@ -39,7 +37,6 @@ import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.android.material.snackbar.Snackbar; -import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.firestore.CollectionReference; import com.google.firebase.firestore.DocumentSnapshot; import com.google.firebase.firestore.FieldValue; @@ -83,6 +80,9 @@ public class MapActivity extends BaseNavDrawerActivity implements OnMapReadyCall private Marker currentClickedMarker; private Bundle bundle; + private volatile User currentUser; + + private boolean checkBoxRememberMe; @Override protected void onCreate(Bundle savedInstanceState) { @@ -95,7 +95,9 @@ protected void onCreate(Bundle savedInstanceState) { CHECKIN_MSG = getString(R.string.checkin_msg); bundle = getIntent().getExtras(); - User currentUser = (User) bundle.getSerializable("current_user"); + checkBoxRememberMe = getIntent().getBooleanExtra("check_box", false); + + currentUser = (User) bundle.getSerializable("current_user"); currentUserPermission = currentUser.getPermission(); if (!currentUser.isBuiltProfile()) { @@ -111,8 +113,11 @@ protected void onResume() { @Override public void onBackPressed() { + if (checkBoxRememberMe) { + setResult(RESULT_OK); + } finish(); - FirebaseAuth.getInstance().signOut(); + super.onBackPressed(); } @Override @@ -122,6 +127,7 @@ protected void onActivityResult(int requestCode, int resultCode, @Nullable Inten if (resultCode != RESULT_OK) { displayPopupWindow(); } else { + currentUser.setBuiltProfile(true); db.collection("users").document(mAuth.getCurrentUser().getUid()) .update("builtProfile", true); } @@ -375,7 +381,7 @@ public void checkIn(String title) { public void displayPopupWindow(){ DialogInterface.OnClickListener dialogClickListener = (dialog, which) -> { if (which == DialogInterface.BUTTON_POSITIVE) - startActivityForResult(new Intent(MapActivity.this, WatchProfile.class), + startActivityForResult(new Intent(MapActivity.this, ProfileActivity.class), REQUEST_PROFILE_BUILD); dialog.dismiss(); }; diff --git a/app/src/main/java/com/evan/parknbark/map_profile/profile/ProfileActivity.java b/app/src/main/java/com/evan/parknbark/map_profile/profile/ProfileActivity.java index 35e8e4a..ec3ccb9 100644 --- a/app/src/main/java/com/evan/parknbark/map_profile/profile/ProfileActivity.java +++ b/app/src/main/java/com/evan/parknbark/map_profile/profile/ProfileActivity.java @@ -2,23 +2,29 @@ import android.content.ContentResolver; import android.content.Intent; +import android.graphics.Color; import android.net.Uri; import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.webkit.MimeTypeMap; +import android.widget.Button; +import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.widget.Toolbar; import com.evan.parknbark.R; import com.evan.parknbark.utilities.BaseActivity; import com.evan.parknbark.utilities.User; import com.evan.parknbark.validation.EditTextValidator; import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.OnSuccessListener; import com.google.android.gms.tasks.Task; -import com.google.android.material.textfield.TextInputLayout; import com.google.firebase.auth.FirebaseUser; import com.google.firebase.firestore.DocumentReference; import com.google.firebase.firestore.DocumentSnapshot; @@ -28,72 +34,97 @@ import com.google.firebase.storage.UploadTask; import com.squareup.picasso.Picasso; -import es.dmoral.toasty.Toasty; - - -public class ProfileActivity extends BaseActivity implements View.OnClickListener { - private TextInputLayout mTextInputDogName, mTextInputDogAge, mTextInputDogBreed; +public class ProfileActivity extends BaseActivity implements View.OnClickListener, Toolbar.OnMenuItemClickListener { + private static final String TAG = "WatchProfile"; private static final int PICK_IMAGE_REQUEST = 1; - private Uri mImageUri; + private EditText mEditTextDogName, mEditTextDogAge, mEditTextDogBreed; private ImageView mImageViewDogPic; + private Button mButtonUploadPic; + private boolean hiddenItem = false; + private Toolbar toolbar; + private Uri mImageUri; private boolean isUploadedImage = false; - //getting the current user private FirebaseUser currentUser; private StorageReference mStorageRef; private StorageTask mUploadTask; private User user; + private String dogPicUri; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_profile); - mTextInputDogName = findViewById(R.id.text_input_dog_name); - mTextInputDogBreed = findViewById(R.id.text_input_dog_breed); - mTextInputDogAge = findViewById(R.id.text_input_dog_age); - - mImageViewDogPic = findViewById(R.id.image_view_dog_pic); + mEditTextDogAge = findViewById(R.id.editText_dogAge); + mEditTextDogName = findViewById(R.id.editText_dogName); + mEditTextDogBreed = findViewById(R.id.editText_dogBreed); mStorageRef = FirebaseStorage.getInstance().getReference("profiles"); currentUser = mAuth.getCurrentUser(); - findViewById(R.id.button_save_profile).setOnClickListener(this); - findViewById(R.id.button_upload_image).setOnClickListener(this); + mImageViewDogPic = findViewById(R.id.imageView_dog_pic); + mButtonUploadPic = findViewById(R.id.button_uploadDogPic); + mButtonUploadPic.setOnClickListener(this); - setProgressBar(R.id.progressBar); - findViewById(R.id.button_save_profile).setOnClickListener(this); - findViewById(R.id.button_upload_image).setOnClickListener(this); - } + toolbar = findViewById(R.id.toolbar); + toolbar.inflateMenu(R.menu.edit_menu); + toolbar.setOnMenuItemClickListener(this); + hideItemInsideToolbar(); + getInfoFromFirebase(); + } - public boolean saveProfile(String dogNameInput, String dogBreedInput, String dogAgeInput, boolean test) { - if (test) { - return EditTextValidator.isValidLayoutEditText(dogNameInput, mTextInputDogName, null) && EditTextValidator.isValidLayoutEditText(dogBreedInput, mTextInputDogBreed, null) && - EditTextValidator.isValidLayoutEditText(dogAgeInput, mTextInputDogAge, null); - } - if (EditTextValidator.isValidLayoutEditText(dogNameInput, mTextInputDogName, getApplicationContext()) & EditTextValidator.isValidLayoutEditText(dogBreedInput, mTextInputDogBreed, getApplicationContext()) & - EditTextValidator.isValidLayoutEditText(dogAgeInput, mTextInputDogAge, getApplicationContext())) { - showProgressBar(); - DocumentReference usersDocRef = db.collection("users").document(mAuth.getCurrentUser().getUid()); - usersDocRef.get().addOnCompleteListener(this, new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - user = task.getResult().toObject(User.class); - if (mUploadTask != null && mUploadTask.isInProgress()) - Toasty.info(getApplicationContext(), "Upload in progress", Toast.LENGTH_SHORT).show(); - else if (isUploadedImage) - uploadImageToFirebase(dogNameInput, dogBreedInput, dogAgeInput); - else uploadProfile(dogNameInput, dogBreedInput, dogAgeInput, null); - } else - showErrorToast(); - } - }); + public void hideItemInsideToolbar() { + Menu m = toolbar.getMenu(); + MenuItem edit_item = m.findItem(R.id.edit_icon); + MenuItem save_item = m.findItem(R.id.save_icon); + if (hiddenItem) { + edit_item.setVisible(false); + save_item.setVisible(true); + return; } - return true; + edit_item.setVisible(true); + save_item.setVisible(false); + } + + private void getInfoFromFirebase() { + DocumentReference usersDocRef = db.collection("profiles").document(mAuth.getCurrentUser().getUid()); + usersDocRef.get() + .addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(DocumentSnapshot documentSnapshot) { + if (documentSnapshot.exists()) { + String firstName = documentSnapshot.getString("firstName"), + lastName = documentSnapshot.getString("lastName"), + dogName = documentSnapshot.getString("dogName"), + dogAge = documentSnapshot.getString("dogAge"), + dogBreed = documentSnapshot.getString("dogBreed"); + dogPicUri = documentSnapshot.getString("profilePicture"); + toolbar.setTitle(firstName + " " + lastName); + toolbar.setTitleTextColor(Color.WHITE); + + mEditTextDogName.setText(dogName); + int positionDN = mEditTextDogName.length(); + mEditTextDogName.setSelection(positionDN); + + mEditTextDogBreed.setText(dogBreed); + int positionDB = mEditTextDogBreed.length(); + mEditTextDogBreed.setSelection(positionDB); + + mEditTextDogAge.setText(dogAge); + int positionDA = mEditTextDogAge.length(); + mEditTextDogAge.setSelection(positionDA); + + Picasso.get().load(dogPicUri).into(mImageViewDogPic); + } else { + Toast.makeText(ProfileActivity.this, "data does not exist", Toast.LENGTH_SHORT).show(); + } + } + }); } //opens the option to pick a picture from phone`s gallery/google drive/downloads etc. @@ -156,6 +187,9 @@ public void onComplete(@NonNull Task task) { } private void uploadProfile(String dogNameInput, String dogBreedInput, String dogAgeInput, String imageUri) { + if (imageUri == null) { + imageUri = dogPicUri; + } Profile profile = new Profile(user.getFirstName(), user.getLastName(), dogNameInput, dogBreedInput, dogAgeInput, imageUri); db.collection("profiles").document(currentUser.getUid()).set(profile) .addOnCompleteListener(new OnCompleteListener() { @@ -163,27 +197,76 @@ private void uploadProfile(String dogNameInput, String dogBreedInput, String dog public void onComplete(@NonNull Task task) { if (task.isSuccessful()) { showSuccessToast(R.string.profile_saved); + setResult(RESULT_OK); + user.setBuiltProfile(true); hideProgressBar(); } else showErrorToast(); } }); + } + public boolean saveProfile(String dogNameInput, String dogBreedInput, String dogAgeInput, boolean test) { + if (test) { + return EditTextValidator.isValidLayoutEditText(dogNameInput, null, null) && + EditTextValidator.isValidLayoutEditText(dogBreedInput, null, null) && + EditTextValidator.isValidLayoutEditText(dogAgeInput, null, null); + } + if (EditTextValidator.isValidString(dogNameInput) & EditTextValidator.isValidString(dogBreedInput) & + EditTextValidator.isValidString(dogAgeInput)) { + showProgressBar(); + DocumentReference usersDocRef = db.collection("users").document(mAuth.getCurrentUser().getUid()); + usersDocRef.get().addOnCompleteListener(this, new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + user = task.getResult().toObject(User.class); + if (mUploadTask != null && mUploadTask.isInProgress()) + showInfoToast(R.string.upload_in_progress); + else if (isUploadedImage) + uploadImageToFirebase(dogNameInput, dogBreedInput, dogAgeInput); + else uploadProfile(dogNameInput, dogBreedInput, dogAgeInput, null); + } else + showErrorToast(); + } + }); + } + return true; } + @Override public void onClick(View v) { int i = v.getId(); hideSoftKeyboard(); + if (i == R.id.button_uploadDogPic) { + uploadImage(); + } + } + + @Override + public boolean onMenuItemClick(MenuItem item) { + int i = item.getItemId(); + hideSoftKeyboard(); switch (i) { - case R.id.button_save_profile: - String dogNameInput = mTextInputDogName.getEditText().getText().toString().trim(); - String dogBreedInput = mTextInputDogBreed.getEditText().getText().toString().trim(); - String dogAgeInput = mTextInputDogAge.getEditText().getText().toString().trim(); - saveProfile(dogNameInput, dogBreedInput, dogAgeInput, false); + case R.id.edit_icon: + hiddenItem = true; + hideItemInsideToolbar(); + mButtonUploadPic.setVisibility(View.VISIBLE); break; - case R.id.button_upload_image: - uploadImage(); + case R.id.save_icon: + String name = mEditTextDogName.getText().toString().trim(); + String age = mEditTextDogAge.getText().toString().trim(); + String breed = mEditTextDogBreed.getText().toString().trim(); + if (name.isEmpty() || age.isEmpty() || breed.isEmpty()) { + showErrorToast(R.string.empty_field); + return false; + } + saveProfile(name, breed, age, false); + hiddenItem = false; + hideItemInsideToolbar(); + mButtonUploadPic.setVisibility(View.INVISIBLE); break; } + return true; } } diff --git a/app/src/main/java/com/evan/parknbark/map_profile/profile/WatchProfile.java b/app/src/main/java/com/evan/parknbark/map_profile/profile/WatchProfile.java deleted file mode 100644 index c0755dc..0000000 --- a/app/src/main/java/com/evan/parknbark/map_profile/profile/WatchProfile.java +++ /dev/null @@ -1,273 +0,0 @@ -package com.evan.parknbark.map_profile.profile; - -import android.content.ContentResolver; -import android.content.Intent; -import android.graphics.Color; -import android.net.Uri; -import android.os.Bundle; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.webkit.MimeTypeMap; -import android.widget.Button; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.widget.Toolbar; - -import com.evan.parknbark.R; -import com.evan.parknbark.utilities.BaseActivity; -import com.evan.parknbark.utilities.User; -import com.evan.parknbark.validation.EditTextValidator; -import com.google.android.gms.tasks.OnCompleteListener; -import com.google.android.gms.tasks.OnSuccessListener; -import com.google.android.gms.tasks.Task; -import com.google.firebase.auth.FirebaseUser; -import com.google.firebase.firestore.DocumentReference; -import com.google.firebase.firestore.DocumentSnapshot; -import com.google.firebase.storage.FirebaseStorage; -import com.google.firebase.storage.StorageReference; -import com.google.firebase.storage.StorageTask; -import com.google.firebase.storage.UploadTask; -import com.squareup.picasso.Picasso; - -import java.util.Objects; - -import es.dmoral.toasty.Toasty; - -public class WatchProfile extends BaseActivity implements View.OnClickListener, Toolbar.OnMenuItemClickListener { - - private static final String TAG = "WatchProfile"; - private static final int PICK_IMAGE_REQUEST = 1; - private EditText mEditTextDogName, mEditTextDogAge, mEditTextDogBreed; - private ImageView mImageViewDogPic; - private Button mButtonUploadPic; - private boolean hiddenItem = false; - private Toolbar toolbar; - private Uri mImageUri; - private boolean isUploadedImage = false; - - private FirebaseUser currentUser; - private StorageReference mStorageRef; - private StorageTask mUploadTask; - - private User user; - - private String dogPicUri; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_watch_profile); - - mEditTextDogAge = findViewById(R.id.editText_dogAge); - mEditTextDogName = findViewById(R.id.editText_dogName); - mEditTextDogBreed = findViewById(R.id.editText_dogBreed); - - mStorageRef = FirebaseStorage.getInstance().getReference("profiles"); - currentUser = mAuth.getCurrentUser(); - - mImageViewDogPic = findViewById(R.id.imageView_dog_pic); - mButtonUploadPic = findViewById(R.id.button_uploadDogPic); - mButtonUploadPic.setOnClickListener(this); - - toolbar = findViewById(R.id.toolbar); - toolbar.inflateMenu(R.menu.edit_menu); - toolbar.setOnMenuItemClickListener(this); - - hideItemInsideToolbar(); - getInfoFromFirebase(); - } - - public void hideItemInsideToolbar() { - Menu m = toolbar.getMenu(); - MenuItem edit_item = m.findItem(R.id.edit_icon); - MenuItem save_item = m.findItem(R.id.save_icon); - if (hiddenItem) { - edit_item.setVisible(false); - save_item.setVisible(true); - return; - } - edit_item.setVisible(true); - save_item.setVisible(false); - } - - private void getInfoFromFirebase() { - DocumentReference usersDocRef = db.collection("profiles").document(mAuth.getCurrentUser().getUid()); - usersDocRef.get() - .addOnSuccessListener(new OnSuccessListener() { - @Override - public void onSuccess(DocumentSnapshot documentSnapshot) { - if (documentSnapshot.exists()) { - String firstName = documentSnapshot.getString("firstName"), - lastName = documentSnapshot.getString("lastName"), - dogName = documentSnapshot.getString("dogName"), - dogAge = documentSnapshot.getString("dogAge"), - dogBreed = documentSnapshot.getString("dogBreed"); - dogPicUri = documentSnapshot.getString("profilePicture"); - toolbar.setTitle(firstName + " " + lastName); - toolbar.setTitleTextColor(Color.WHITE); - - mEditTextDogName.setText(dogName); - int positionDN = mEditTextDogName.length(); - mEditTextDogName.setSelection(positionDN); - - mEditTextDogBreed.setText(dogBreed); - int positionDB = mEditTextDogBreed.length(); - mEditTextDogBreed.setSelection(positionDB); - - mEditTextDogAge.setText(dogAge); - int positionDA = mEditTextDogAge.length(); - mEditTextDogAge.setSelection(positionDA); - - Picasso.get().load(dogPicUri).into(mImageViewDogPic); - } else { - Toast.makeText(WatchProfile.this, "data does not exist", Toast.LENGTH_SHORT).show(); - } - } - }); - } - - //opens the option to pick a picture from phone`s gallery/google drive/downloads etc. - public void uploadImage() { - Intent intent = new Intent(); - intent.setType("image/*"); - intent.setAction(Intent.ACTION_GET_CONTENT); - startActivityForResult(intent, PICK_IMAGE_REQUEST); - } - - //after choosing a picture (UploadImage function) these validations are being checked - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - - if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK - && data != null && data.getData() != null) { - isUploadedImage = true; - mImageUri = data.getData(); - Picasso.get().load(mImageUri).into(mImageViewDogPic); - } - } - - //mainly to get the 'xxxx.jpg' extension - private String getFileExtension(Uri uri) { - ContentResolver cR = getContentResolver(); - MimeTypeMap mime = MimeTypeMap.getSingleton(); - return mime.getExtensionFromMimeType(cR.getType(uri)); - } - - //upload the picture to firebase storage - public void uploadImageToFirebase(String dogNameInput, String dogBreedInput, String dogAgeInput) { - if (mImageUri != null) { - final String fileName = currentUser.getUid() - + "." + getFileExtension(mImageUri); - StorageReference fileReference = mStorageRef.child(fileName); - mUploadTask = fileReference.putFile(mImageUri) - .addOnCompleteListener(new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - UploadTask.TaskSnapshot taskSnapshot = task.getResult(); - if (taskSnapshot != null) { - //get uploaded image uri - mStorageRef.child(fileName).getDownloadUrl().addOnCompleteListener(new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - String mImageDownloadUri = task.getResult().toString(); - uploadProfile(dogNameInput, dogBreedInput, dogAgeInput, mImageDownloadUri); - } else showErrorToast(); - } - }); - } - } else - showErrorToast(); - } - }); - } - } - - private void uploadProfile(String dogNameInput, String dogBreedInput, String dogAgeInput, String imageUri) { - if (imageUri == null) { - imageUri = dogPicUri; - } - Profile profile = new Profile(user.getFirstName(), user.getLastName(), dogNameInput, dogBreedInput, dogAgeInput, imageUri); - db.collection("profiles").document(currentUser.getUid()).set(profile) - .addOnCompleteListener(new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - showSuccessToast(R.string.profile_saved); - setResult(RESULT_OK); - user.setBuiltProfile(true); - hideProgressBar(); - } else showErrorToast(); - } - }); - - } - - public void saveProfile(String dogNameInput, String dogBreedInput, String dogAgeInput) { - if (EditTextValidator.isValidString(dogNameInput) & EditTextValidator.isValidString(dogBreedInput) & - EditTextValidator.isValidString(dogAgeInput)) { - showProgressBar(); - DocumentReference usersDocRef = db.collection("users").document(mAuth.getCurrentUser().getUid()); - usersDocRef.get().addOnCompleteListener(this, new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - user = Objects.requireNonNull(task.getResult()).toObject(User.class); - if (mUploadTask != null && mUploadTask.isInProgress()) - Toasty.info(getApplicationContext(), "Upload in progress", Toast.LENGTH_SHORT).show(); - else if (isUploadedImage) - uploadImageToFirebase(dogNameInput, dogBreedInput, dogAgeInput); - else uploadProfile(dogNameInput, dogBreedInput, dogAgeInput, null); - } else - showErrorToast(); - } - }); - } - } - - - @Override - public void onClick(View v) { - int i = v.getId(); - hideSoftKeyboard(); - if (i == R.id.button_uploadDogPic) { - uploadImage(); - } - } - - @Override - public boolean onMenuItemClick(MenuItem item) { - int i = item.getItemId(); - hideSoftKeyboard(); - switch (i) { - case R.id.edit_icon: - hiddenItem = true; - hideItemInsideToolbar(); - mButtonUploadPic.setVisibility(View.VISIBLE); - break; - case R.id.save_icon: - String name = mEditTextDogName.getText().toString(); - String age = mEditTextDogAge.getText().toString(); - String breed = mEditTextDogBreed.getText().toString(); - if(name == "name") - name = "UNKNOWN"; - else if(age == "age") - age="UNKNOWN"; - else if(breed=="breed") - breed="UNKNOWN"; - saveProfile(name, breed, age); - hiddenItem = false; - hideItemInsideToolbar(); - mButtonUploadPic.setVisibility(View.INVISIBLE); - break; - } - return false; - } -} diff --git a/app/src/main/java/com/evan/parknbark/settings/SettingsActivity.java b/app/src/main/java/com/evan/parknbark/settings/SettingsActivity.java index 368399d..f291ff8 100644 --- a/app/src/main/java/com/evan/parknbark/settings/SettingsActivity.java +++ b/app/src/main/java/com/evan/parknbark/settings/SettingsActivity.java @@ -51,12 +51,10 @@ public void onItemClick(AdapterView parent, View view, int position, long id) //Change password startActivity(new Intent(getApplicationContext(), ChangePassActivity.class)); break; - case 1: //Rate Us! startActivity(new Intent(getApplicationContext(), EditContactActivity.class)); break; - case 2: startActivity(new Intent(getApplicationContext(), UsersListActivity.class)); break; diff --git a/app/src/main/java/com/evan/parknbark/utilities/BaseNavDrawerActivity.java b/app/src/main/java/com/evan/parknbark/utilities/BaseNavDrawerActivity.java index 391968b..1d59b2b 100644 --- a/app/src/main/java/com/evan/parknbark/utilities/BaseNavDrawerActivity.java +++ b/app/src/main/java/com/evan/parknbark/utilities/BaseNavDrawerActivity.java @@ -25,7 +25,7 @@ import com.evan.parknbark.emailpassword.LoginActivity; import com.evan.parknbark.map_profile.maps.LocationsActivity; import com.evan.parknbark.map_profile.maps.MapActivity; -import com.evan.parknbark.map_profile.profile.WatchProfile; +import com.evan.parknbark.map_profile.profile.ProfileActivity; import com.evan.parknbark.settings.SettingsActivity; import com.google.android.material.navigation.NavigationView; import com.google.firebase.auth.FirebaseAuth; @@ -126,8 +126,8 @@ public boolean onMenuItemClick(MenuItem item) { return false; } changeToNewLocale(lang, this); - finish(); - startActivity(getIntent()); + finishAffinity(); + startActivity(new Intent(getBaseContext(), SplashScreenActivity.class)); return true; } @@ -181,7 +181,7 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) { startActivity(new Intent(getApplicationContext(), BulletinBoardActivity.class).putExtra("current_user_permission", currentUserPermission)); break; case R.id.nav_watch_profile: - startActivity(new Intent(getApplicationContext(), WatchProfile.class)); + startActivity(new Intent(getApplicationContext(), ProfileActivity.class)); break; case R.id.nav_map: startActivity(new Intent(getApplicationContext(), MapActivity.class)); diff --git a/app/src/main/java/com/evan/parknbark/utilities/SplashScreenActivity.java b/app/src/main/java/com/evan/parknbark/utilities/SplashScreenActivity.java index bcad0ff..2b9eef0 100644 --- a/app/src/main/java/com/evan/parknbark/utilities/SplashScreenActivity.java +++ b/app/src/main/java/com/evan/parknbark/utilities/SplashScreenActivity.java @@ -42,20 +42,18 @@ public void onComplete(@NonNull Task task) { //if user is logged in, put the permission into bundle //else, do nothing bundle.putSerializable("current_user", user); + EasySplashScreen config = new EasySplashScreen(SplashScreenActivity.this) + .withFullScreen() + .withTargetActivity(LoginActivity.class) //go to main activity + .withBundleExtras(bundle) //send bundle, either user logged in or nah + .withBackgroundColor(Color.parseColor("#e1f5fe")) + .withLogo(R.mipmap.app_logo1_foreground); //TODO: adjust logo dimensions + + View easySplashScreen = config.create(); + setContentView(easySplashScreen); } } }); } - - - EasySplashScreen config = new EasySplashScreen(this) - .withFullScreen() - .withTargetActivity(LoginActivity.class) //go to main activity - .withBundleExtras(bundle) //send bundle, either user logged in or nah - .withBackgroundColor(Color.parseColor("#e1f5fe")) - .withLogo(R.mipmap.app_logo1_foreground); //TODO: adjust logo dimensions - - View easySplashScreen = config.create(); - setContentView(easySplashScreen); } } diff --git a/app/src/main/res/layout/activity_profile.xml b/app/src/main/res/layout/activity_profile.xml index a621fb8..f210bcf 100644 --- a/app/src/main/res/layout/activity_profile.xml +++ b/app/src/main/res/layout/activity_profile.xml @@ -1,111 +1,131 @@ - + tools:context="com.evan.parknbark.map_profile.profile.ProfileActivity"> - + + + + + android:gravity="center"> - - - - - - - - - - - - + + + android:layout_marginEnd="6dp" + android:layout_toEndOf="@id/textView_dog_name" + android:background="@null" + android:fontFamily="sans-serif-medium" + android:hint="@string/dog_name" + android:inputType="textCapSentences|textNoSuggestions" + android:textSize="20sp" /> - - + -