diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java index 8f34f87fbb9b33cea265f59025a7f2ac7b9805aa..6654f82d31e569f0f92739c40ef1eaf0061f8e6f 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java @@ -9,7 +9,6 @@ import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageButton; -import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; @@ -20,10 +19,20 @@ import com.google.android.material.textfield.TextInputEditText; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; +import com.google.firebase.database.DataSnapshot; +import com.google.firebase.database.DatabaseError; +import com.google.firebase.database.DatabaseReference; +import com.google.firebase.database.FirebaseDatabase; +import com.google.firebase.database.ValueEventListener; + +import java.util.HashMap; +import java.util.Map; public class AccountActivity extends AppCompatActivity { private FirebaseAuth mAuth; + private final FirebaseDatabase firebaseDb = FirebaseDatabase.getInstance(); + private DatabaseReference db; private Button logout; private TextView title; @@ -31,31 +40,92 @@ public class AccountActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_account); getSupportActionBar().hide(); mAuth = FirebaseAuth.getInstance(); + FirebaseUser currentUser = mAuth.getCurrentUser(); - title = findViewById(R.id.account_title); + if(currentUser != null){ + setContentView(R.layout.activity_account); - TextInputEditText email_input = findViewById(R.id.email); - Editable email_string = email_input.getText(); - TextInputEditText password_input = findViewById(R.id.password); - Editable password_string = password_input.getText(); + //Log.d("LOGIN", "onStart: LOGED"); - ImageButton return_btn = findViewById(R.id.return_from_account); - return_btn.setOnClickListener(view -> finish()); + db = firebaseDb.getReference("Account_pseudo"); + getPseudo(currentUser); + }else{ + setContentView(R.layout.activity_account_login); + + TextInputEditText email_input = findViewById(R.id.email); + Editable email_string = email_input.getText(); + TextInputEditText password_input = findViewById(R.id.password); + Editable password_string = password_input.getText(); - Button login = findViewById(R.id.login); - login.setOnClickListener(view -> login(email_string, password_string)); + Button login = findViewById(R.id.login); + login.setOnClickListener(view -> login(email_string, password_string)); - Button register = findViewById(R.id.register); - register.setOnClickListener(view -> register(email_string, password_string)); + Button register = findViewById(R.id.register); + register.setOnClickListener(view -> register(email_string, password_string)); + } + + ImageButton return_btn = findViewById(R.id.return_from_account); + return_btn.setOnClickListener(view -> finish()); logout = findViewById(R.id.logout); logout.setOnClickListener(view -> logout()); } + private void getPseudo(FirebaseUser currentUser) { + String id_user = currentUser.getUid(); + + db.addValueEventListener(new ValueEventListener() { + @Override + public void onDataChange(DataSnapshot snapshot) { + title = findViewById(R.id.account_title); + + RelativeLayout field_pseudo_layout = findViewById(R.id.field_pseudo_layout); + TextInputEditText pseudo_input = findViewById(R.id.pseudo); + Button register = findViewById(R.id.register_pseudo); + + try { + DataSnapshot data = snapshot.child(id_user); + + String pseudo = data.getValue().toString(); + + title.setText("Vous êtes connecté !\n" + currentUser.getEmail() + " & " + id_user + " & " + pseudo); + field_pseudo_layout.setVisibility(View.INVISIBLE); + register.setVisibility(View.INVISIBLE); + } catch (Exception e){ + title.setText("Veuillez définir votre pseudo :"); + + Editable pseudo_string = pseudo_input.getText(); + + register.setOnClickListener(view -> savePseudo(id_user, pseudo_string)); + } + } + + @Override + public void onCancelled(DatabaseError error) { + Toast.makeText(AccountActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show(); + } + }); + } + + private void savePseudo(String id_user, Editable pseudo_string) { + // Write pseudo in the database + Map<String, Object> updates = new HashMap<>(); + updates.put(id_user, pseudo_string.toString()); + + db = firebaseDb.getReference("Account_pseudo"); + + try { + db.updateChildren(updates); + } catch (Exception e){ + Log.d("error", "savePseudo: " + e); + } + isLoged(); + } + + /** @Override public void onStart() { super.onStart(); @@ -69,19 +139,18 @@ public class AccountActivity extends AppCompatActivity { logout.setVisibility(View.INVISIBLE); } } + */ private void isLoged(){ - logout.setVisibility(View.VISIBLE); - RelativeLayout field = findViewById(R.id.field_layout); - field.setVisibility(View.INVISIBLE); - LinearLayout buttons = findViewById(R.id.button_layout); - buttons.setVisibility(View.INVISIBLE); - FirebaseUser user = mAuth.getCurrentUser(); - title.setText("Vous êtes connecté !\n" + user.getEmail()); - + //Refresh the layout when user is logged + finish(); + overridePendingTransition(0, 0); + startActivity(getIntent()); + overridePendingTransition(0, 0); } private void login(Editable email, Editable password) { + Log.d("listener", "login: click btn"); String email_string = (String)email.toString(); String password_string = (String)password.toString(); if(email_string.isEmpty() || password_string.isEmpty()){ diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml index 8767900d6713c4f3ab20ab8e8c412c37462db7cb..18b81bf3827654df43a9c44492349caf1040827d 100644 --- a/app/src/main/res/layout/activity_account.xml +++ b/app/src/main/res/layout/activity_account.xml @@ -21,7 +21,7 @@ tools:text="Hello" /> <RelativeLayout - android:id="@+id/field_layout" + android:id="@+id/field_pseudo_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" @@ -31,31 +31,16 @@ android:padding="10dp"> <com.google.android.material.textfield.TextInputLayout - android:id="@+id/email_layout" + android:id="@+id/pseudo_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true"> <com.google.android.material.textfield.TextInputEditText - android:id="@+id/email" + android:id="@+id/pseudo" android:layout_width="300dp" android:layout_height="wrap_content" - android:hint="Email" /> - - </com.google.android.material.textfield.TextInputLayout> - - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/password_layout" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_marginTop="60dp"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/password" - android:layout_width="300dp" - android:layout_height="wrap_content" - android:hint="Password" /> + android:hint="Pseudo" /> </com.google.android.material.textfield.TextInputLayout> @@ -68,21 +53,14 @@ android:layout_alignParentEnd="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/field_layout" + app:layout_constraintTop_toBottomOf="@+id/field_pseudo_layout" android:gravity="center"> <Button - android:id="@+id/login" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Se connecter" /> - - <Button - android:id="@+id/register" + android:id="@+id/register_pseudo" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="S'enregistrer" - android:layout_marginLeft="10dp"/> + android:text="Enregistrer" /> </LinearLayout> diff --git a/app/src/main/res/layout/activity_account_login.xml b/app/src/main/res/layout/activity_account_login.xml new file mode 100644 index 0000000000000000000000000000000000000000..8767900d6713c4f3ab20ab8e8c412c37462db7cb --- /dev/null +++ b/app/src/main/res/layout/activity_account_login.xml @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".AccountActivity"> + + <TextView + android:id="@+id/account_title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="80dp" + android:paddingHorizontal="20dp" + android:textAlignment="center" + android:textSize="20sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/relativeLayout" + tools:text="Hello" /> + + <RelativeLayout + android:id="@+id/field_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + android:padding="10dp"> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/email_layout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerHorizontal="true"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/email" + android:layout_width="300dp" + android:layout_height="wrap_content" + android:hint="Email" /> + + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/password_layout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerHorizontal="true" + android:layout_marginTop="60dp"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/password" + android:layout_width="300dp" + android:layout_height="wrap_content" + android:hint="Password" /> + + </com.google.android.material.textfield.TextInputLayout> + + </RelativeLayout> + + <LinearLayout + android:id="@+id/button_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentEnd="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/field_layout" + android:gravity="center"> + + <Button + android:id="@+id/login" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Se connecter" /> + + <Button + android:id="@+id/register" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="S'enregistrer" + android:layout_marginLeft="10dp"/> + + </LinearLayout> + + <RelativeLayout + android:id="@+id/relativeLayout" + android:layout_width="match_parent" + android:layout_height="80dp" + android:background="@color/orange" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageButton + android:id="@+id/return_from_account" + android:layout_width="66dp" + android:layout_height="61dp" + android:layout_marginStart="10dp" + android:layout_marginTop="10dp" + android:layout_marginEnd="10dp" + android:layout_marginBottom="10dp" + android:background="@color/orange" + android:paddingLeft="10dp" + android:paddingTop="1dp" + android:paddingRight="10dp" + android:paddingBottom="4dp" + android:scaleType="fitCenter" + android:src="@drawable/return_button" + android:textAlignment="center" + android:textSize="16sp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + + + <Button + android:id="@+id/logout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Deconnexion" + android:backgroundTint="@color/orange" + app:layout_constraintBottom_toBottomOf="@+id/relativeLayout" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + android:layout_marginRight="10dp"/> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file