Skip to content

Commit a80cbad

Browse files
committed
UI updates 2 login working
1 parent 7f56648 commit a80cbad

14 files changed

+504
-3
lines changed

app/build.gradle

+9
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ plugins {
55
id 'androidx.navigation.safeargs.kotlin'
66
id 'org.jetbrains.kotlin.plugin.parcelize'
77
id 'com.google.dagger.hilt.android'
8+
id 'com.google.gms.google-services'
89
}
910

1011
android {
@@ -48,6 +49,7 @@ dependencies {
4849
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
4950
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
5051
implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'
52+
implementation 'com.google.firebase:firebase-database-ktx:20.2.0'
5153
testImplementation 'junit:junit:4.13.2'
5254
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
5355
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
@@ -80,5 +82,12 @@ dependencies {
8082
implementation "com.google.dagger:hilt-android:$hilt_version"
8183
kapt "com.google.dagger:hilt-compiler:$hilt_version"
8284

85+
//Firebase
86+
implementation platform('com.google.firebase:firebase-bom:31.1.1')
87+
88+
implementation 'com.google.firebase:firebase-analytics-ktx'
89+
implementation 'com.google.firebase:firebase-storage-ktx'
90+
implementation 'com.google.firebase:firebase-auth-ktx:21.3.0'
91+
8392

8493
}

app/google-services.json

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"project_info": {
3+
"project_number": "403891300830",
4+
"project_id": "planetpulse-37fe2",
5+
"storage_bucket": "planetpulse-37fe2.appspot.com"
6+
},
7+
"client": [
8+
{
9+
"client_info": {
10+
"mobilesdk_app_id": "1:403891300830:android:2bca01759f2b2f39c3954f",
11+
"android_client_info": {
12+
"package_name": "dev.redfox.planetpulse"
13+
}
14+
},
15+
"oauth_client": [
16+
{
17+
"client_id": "403891300830-lp6qem6lp8iq7vc1j85e8gqfe115n9hq.apps.googleusercontent.com",
18+
"client_type": 3
19+
}
20+
],
21+
"api_key": [
22+
{
23+
"current_key": "AIzaSyCxYqRaLNMMYjWVFYreJVlaLPeKa_GUQ_o"
24+
}
25+
],
26+
"services": {
27+
"appinvite_service": {
28+
"other_platform_oauth_client": [
29+
{
30+
"client_id": "403891300830-lp6qem6lp8iq7vc1j85e8gqfe115n9hq.apps.googleusercontent.com",
31+
"client_type": 3
32+
}
33+
]
34+
}
35+
}
36+
}
37+
],
38+
"configuration_version": "1"
39+
}

app/src/main/AndroidManifest.xml

+9
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,15 @@
3232
<activity
3333
android:name=".MainActivity"
3434
android:exported="true"></activity>
35+
36+
<activity
37+
android:name="dev.redfox.planetpulse.auth.SignUpActivity"
38+
android:exported="true">
39+
</activity>
40+
<activity
41+
android:name="dev.redfox.planetpulse.auth.LoginActivity"
42+
android:exported="true">" />
43+
</activity>
3544
</application>
3645

3746
</manifest>

app/src/main/java/dev/redfox/planetpulse/GetStartedActivity.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import android.os.Handler
1010
import android.view.View
1111
import android.view.ViewGroup
1212
import android.view.animation.AnimationUtils
13+
import dev.redfox.planetpulse.auth.LoginActivity
1314
import dev.redfox.planetpulse.databinding.ActivityGetStartedBinding
1415
import dev.redfox.planetpulse.databinding.ActivityMainBinding
1516

@@ -37,7 +38,7 @@ class GetStartedActivity : AppCompatActivity() {
3738
}
3839

3940
binding.btnGetStarted.setOnClickListener {
40-
val intent = Intent(this, QuestionsActivity::class.java)
41+
val intent = Intent(this, LoginActivity::class.java)
4142
startActivity(intent)
4243
}
4344
}

app/src/main/java/dev/redfox/planetpulse/MainActivity.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@ package dev.redfox.planetpulse
33
import androidx.appcompat.app.AppCompatActivity
44
import android.os.Bundle
55
import androidx.fragment.app.Fragment
6+
import com.google.firebase.FirebaseApp
67
import dev.redfox.planetpulse.databinding.ActivityMainBinding
78
import dev.redfox.planetpulse.ui.DashboardFragment
89
import dev.redfox.planetpulse.ui.GptFragment
910
import dev.redfox.planetpulse.ui.TipsFragment
1011

11-
class MainActivity : AppCompatActivity() {
12+
class MainActivity : AppCompatActivity() {
1213

1314
private lateinit var binding: ActivityMainBinding
1415
override fun onCreate(savedInstanceState: Bundle?) {
1516
super.onCreate(savedInstanceState)
1617
binding = ActivityMainBinding.inflate(layoutInflater)
1718

19+
FirebaseApp.initializeApp(this)
1820
replaceFragment(DashboardFragment())
1921

2022
window.setStatusBarColor(this.getResources().getColor(R.color.color_appBar))
@@ -40,4 +42,4 @@ class MainActivity : AppCompatActivity() {
4042
fragmentTransaction.commit()
4143
}
4244

43-
}
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package dev.redfox.planetpulse.auth
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
import androidx.appcompat.app.AppCompatActivity
6+
import android.os.Bundle
7+
import android.widget.Toast
8+
import androidx.core.content.ContextCompat
9+
import com.google.firebase.FirebaseApp
10+
import com.google.firebase.auth.FirebaseAuth
11+
12+
import dev.redfox.planetpulse.QuestionsActivity
13+
import dev.redfox.planetpulse.R
14+
import dev.redfox.planetpulse.databinding.ActivityLoginBinding
15+
16+
class LoginActivity : AppCompatActivity() {
17+
18+
19+
// your code here
20+
21+
22+
lateinit var binding: ActivityLoginBinding
23+
lateinit var firebaseAuth: FirebaseAuth
24+
25+
override fun onCreate(savedInstanceState: Bundle?) {
26+
super.onCreate(savedInstanceState)
27+
binding = ActivityLoginBinding.inflate(layoutInflater)
28+
setContentView(binding.root)
29+
FirebaseApp.initializeApp(this)
30+
window.setStatusBarColor(ContextCompat.getColor(baseContext, R.color.yellow))
31+
firebaseAuth = FirebaseAuth.getInstance()
32+
binding.tvSignUp.setOnClickListener {
33+
val intent = Intent(this, SignUpActivity::class.java)
34+
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
35+
startActivity(intent)
36+
finish()
37+
}
38+
39+
binding.btnSignIn.setOnClickListener {
40+
val email = binding.etEmail.text.toString()
41+
val pass = binding.etPassword.text.toString()
42+
43+
if (email.isNotEmpty() && pass.isNotEmpty()) {
44+
45+
firebaseAuth.signInWithEmailAndPassword(email, pass).addOnCompleteListener {
46+
if (it.isSuccessful) {
47+
48+
val sharedPreference =
49+
getSharedPreferences("LOGIN", Context.MODE_PRIVATE)
50+
val editor = sharedPreference.edit()
51+
editor.putBoolean("hasLoggedIn", true)
52+
editor.apply()
53+
54+
val sharedPref = getSharedPreferences("EMAIL", Context.MODE_PRIVATE)
55+
val editor2 = sharedPref.edit()
56+
editor2.putString("email", email)
57+
editor2.apply()
58+
59+
val intent = Intent(this, QuestionsActivity::class.java)
60+
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
61+
startActivity(intent)
62+
finish()
63+
} else {
64+
Toast.makeText(this, it.exception.toString(), Toast.LENGTH_SHORT).show()
65+
}
66+
}
67+
} else {
68+
Toast.makeText(this, "Empty Fields Are not Allowed !!", Toast.LENGTH_SHORT)
69+
.show()
70+
71+
}
72+
}
73+
}
74+
75+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package dev.redfox.planetpulse.auth
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
import android.net.Uri
6+
import android.os.Bundle
7+
import android.widget.Toast
8+
import androidx.appcompat.app.AppCompatActivity
9+
import com.google.firebase.auth.*
10+
import com.google.firebase.database.DatabaseReference
11+
import com.google.firebase.database.FirebaseDatabase
12+
import com.google.firebase.storage.FirebaseStorage
13+
import dev.redfox.planetpulse.auth.LoginActivity
14+
import dev.redfox.planetpulse.databinding.ActivitySignUpBinding
15+
16+
17+
class SignUpActivity : AppCompatActivity() {
18+
private lateinit var binding: ActivitySignUpBinding
19+
private lateinit var firebaseAuth: FirebaseAuth
20+
private lateinit var database: DatabaseReference
21+
private lateinit var auth: FirebaseAuth
22+
private lateinit var fdatabase: FirebaseDatabase
23+
private lateinit var storage: FirebaseStorage
24+
private lateinit var selectedImg: Uri
25+
private lateinit var email:String
26+
27+
override fun onCreate(savedInstanceState: Bundle?) {
28+
super.onCreate(savedInstanceState)
29+
30+
binding = ActivitySignUpBinding.inflate(layoutInflater)
31+
setContentView(binding.root)
32+
33+
firebaseAuth = FirebaseAuth.getInstance()
34+
35+
fdatabase = FirebaseDatabase.getInstance()
36+
storage = FirebaseStorage.getInstance()
37+
auth = FirebaseAuth.getInstance()
38+
39+
binding.tvSignIn.setOnClickListener {
40+
val intent = Intent(this, LoginActivity::class.java)
41+
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
42+
startActivity(intent)
43+
44+
}
45+
46+
binding.btnSignUp.setOnClickListener {
47+
email = binding.etEmail.text.toString()
48+
val name = binding.etName.text.toString()
49+
var pass = binding.etPassword.text.toString()
50+
var confirmPass = binding.confirmPassEt.text.toString()
51+
52+
val sharedPref = getSharedPreferences("LOGIN", Context.MODE_PRIVATE)
53+
val editor2 = sharedPref.edit()
54+
editor2.putBoolean("hasLoggedIn", true)
55+
editor2.apply()
56+
57+
val sharedPreference = getSharedPreferences("EMAIL", Context.MODE_PRIVATE)
58+
val editor = sharedPreference.edit()
59+
editor.putString("email", email)
60+
editor.apply()
61+
62+
63+
if (email.isNotEmpty() && name.isNotEmpty() && confirmPass.isNotEmpty() && pass.isNotEmpty()
64+
) {
65+
66+
firebaseAuth.createUserWithEmailAndPassword(email, pass)
67+
.addOnSuccessListener {
68+
69+
database = FirebaseDatabase.getInstance().getReference("employees")
70+
71+
database.child(EncodeString(email).toString()).child("Name").setValue(name)
72+
database.child(EncodeString(email).toString()).child("Email")
73+
.setValue(EncodeString(email).toString())
74+
75+
// binding.etEmail.text?.clear()
76+
// binding.etName.text?.clear()
77+
78+
Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show()
79+
80+
81+
}.addOnFailureListener {
82+
if (it is FirebaseAuthInvalidUserException) {
83+
Toast.makeText(
84+
this,
85+
"Email cannot be used to create account",
86+
Toast.LENGTH_SHORT
87+
).show()
88+
} else if (it is FirebaseAuthUserCollisionException) {
89+
Toast.makeText(this, "Email Already Exists", Toast.LENGTH_SHORT).show()
90+
} else if (pass != confirmPass) {
91+
Toast.makeText(this, "Check Password", Toast.LENGTH_SHORT).show()
92+
} else if (it is FirebaseAuthWeakPasswordException) {
93+
Toast.makeText(this, "Weak Password", Toast.LENGTH_SHORT).show()
94+
} else if (it is FirebaseAuthEmailException) {
95+
Toast.makeText(this, "Incorrect Email", Toast.LENGTH_SHORT).show()
96+
} else {
97+
Toast.makeText(this, "Unknown error", Toast.LENGTH_SHORT).show()
98+
}
99+
it.printStackTrace()
100+
}
101+
102+
} else {
103+
Toast.makeText(this, "Empty Fields Are not Allowed !!", Toast.LENGTH_SHORT).show()
104+
105+
}
106+
}
107+
}
108+
109+
110+
111+
fun EncodeString(string: String): String? {
112+
return string.replace(".", ",")
113+
}
114+
115+
fun DecodeString(string: String): String? {
116+
return string.replace(",", ".")
117+
}
118+
}

app/src/main/res/drawable/signin.png

8.19 KB
Loading

app/src/main/res/drawable/signup.png

8.31 KB
Loading

0 commit comments

Comments
 (0)