-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from ahmedhrayyan/register-and-login
Finish Login And Register.
- Loading branch information
Showing
30 changed files
with
597 additions
and
97 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
package com.ahmed.contactbook | ||
|
||
import android.app.Dialog | ||
import android.content.Context | ||
import android.os.Bundle | ||
import android.view.LayoutInflater | ||
import android.view.View | ||
import android.view.ViewGroup | ||
import androidx.fragment.app.Fragment | ||
import androidx.viewbinding.ViewBinding | ||
|
||
|
||
abstract class BaseFragment<T : ViewBinding> : Fragment() { | ||
|
||
|
||
//Binding View | ||
private var _binding: ViewBinding? = null | ||
abstract val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> T | ||
|
||
//this will be used in child classes | ||
protected val binding: T | ||
get() = _binding as T | ||
|
||
|
||
lateinit var mDialog: Dialog | ||
fun showProgressDialog(context: Context) { | ||
mDialog = Dialog(context) | ||
mDialog.setContentView(R.layout.fragment_base) | ||
mDialog.show() | ||
} | ||
|
||
fun hideProgressDialog() { | ||
mDialog.dismiss() | ||
} | ||
|
||
override fun onCreateView( | ||
inflater: LayoutInflater, | ||
container: ViewGroup?, | ||
savedInstanceState: Bundle? | ||
): View? { | ||
_binding = bindingInflater.invoke(layoutInflater, container, false) | ||
return _binding!!.root | ||
} | ||
|
||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
super.onViewCreated(view, savedInstanceState) | ||
setupOnViewCreated(view) | ||
} | ||
|
||
override fun onDestroy() { | ||
super.onDestroy() | ||
_binding = null | ||
hideProgressDialog() | ||
} | ||
|
||
|
||
//Implemented into the child class | ||
abstract fun setupOnViewCreated(view: View) | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package com.ahmed.contactbook | ||
|
||
import android.app.Application | ||
import android.content.Context | ||
|
||
class MyApp:Application() { | ||
|
||
override fun onCreate() { | ||
super.onCreate() | ||
appContext =applicationContext | ||
} | ||
companion object{ | ||
lateinit var appContext: Context | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,6 @@ | ||
|
||
|
||
|
||
package com.ahmed.contactbook.data.db | ||
|
||
import androidx.room.Dao | ||
|
2 changes: 1 addition & 1 deletion
2
app/src/main/java/com/ahmed/contactbook/data/model/LoginResponse.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
package com.ahmed.contactbook.data.model | ||
|
||
data class LoginResponse (var toekn:String) | ||
data class LoginResponse (var token:String) |
7 changes: 7 additions & 0 deletions
7
app/src/main/java/com/ahmed/contactbook/data/model/UserRegister.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.ahmed.contactbook.data.model | ||
|
||
data class UserRegister( | ||
var name:String, | ||
var email:String, | ||
var password:String | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,42 +1,16 @@ | ||
package com.ahmed.contactbook.data.repo | ||
|
||
import android.util.Log | ||
import androidx.lifecycle.LiveData | ||
import androidx.lifecycle.MutableLiveData | ||
import com.ahmed.contactbook.data.model.LoginResponse | ||
import com.ahmed.contactbook.data.model.UserData | ||
import com.ahmed.contactbook.data.model.UserRegister | ||
import com.ahmed.contactbook.data.remote.ApiSettings | ||
import retrofit2.Call | ||
import retrofit2.Callback | ||
import retrofit2.Response | ||
|
||
class Repo { | ||
val liveData: MutableLiveData<String> = MutableLiveData() | ||
fun loginUser(email: String, password: String): LiveData<String> { | ||
val user = UserData(email, password) | ||
ApiSettings.apiInstance.loginUser(user) | ||
.enqueue(object : Callback<LoginResponse> { | ||
override fun onResponse( | ||
call: Call<LoginResponse>, | ||
response: Response<LoginResponse> | ||
) { | ||
|
||
try { | ||
if (response.isSuccessful) | ||
liveData.value = response.body()!!.toString() + "01097203910" | ||
else | ||
liveData.value = response.message() | ||
} catch (t: Exception) { | ||
Log.d("error", response.errorBody().toString()) | ||
} | ||
} | ||
|
||
override fun onFailure(call: Call<LoginResponse>, t: Throwable) { | ||
liveData.value = t.message | ||
Log.d("Error", t.message.toString()) | ||
} | ||
suspend fun loginUser(user: UserData): Response<LoginResponse> = | ||
ApiSettings.apiInstance.loginUser(user) | ||
|
||
}) | ||
return liveData | ||
} | ||
suspend fun registerUser(user: UserRegister): Response<LoginResponse> = | ||
ApiSettings.apiInstance.registerUser(user) | ||
} |
22 changes: 22 additions & 0 deletions
22
app/src/main/java/com/ahmed/contactbook/ui/home/HomeFragment.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package com.ahmed.contactbook.ui.home | ||
|
||
import android.view.LayoutInflater | ||
import android.view.View | ||
import android.view.ViewGroup | ||
import androidx.lifecycle.ViewModelProvider | ||
import com.ahmed.contactbook.BaseFragment | ||
import com.ahmed.contactbook.databinding.HomeFragmentBinding | ||
|
||
class HomeFragment : BaseFragment<HomeFragmentBinding>() { | ||
|
||
|
||
private lateinit var viewModel: HomeViewModel | ||
override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> HomeFragmentBinding | ||
get() = HomeFragmentBinding::inflate | ||
|
||
override fun setupOnViewCreated(view: View) { | ||
viewModel = ViewModelProvider(this).get(HomeViewModel::class.java) | ||
} | ||
|
||
|
||
} |
7 changes: 7 additions & 0 deletions
7
app/src/main/java/com/ahmed/contactbook/ui/home/HomeViewModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.ahmed.contactbook.ui.home | ||
|
||
import androidx.lifecycle.ViewModel | ||
|
||
class HomeViewModel : ViewModel() { | ||
// TODO: Implement the ViewModel | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 22 additions & 20 deletions
42
app/src/main/java/com/ahmed/contactbook/ui/login/LoginFragment.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,53 +1,55 @@ | ||
package com.ahmed.contactbook.ui.login | ||
|
||
import android.os.Bundle | ||
import android.view.LayoutInflater | ||
import android.view.View | ||
import android.view.ViewGroup | ||
import android.widget.Toast | ||
import androidx.fragment.app.Fragment | ||
import androidx.lifecycle.LiveData | ||
import androidx.lifecycle.ViewModelProvider | ||
import androidx.navigation.NavController | ||
import androidx.navigation.Navigation | ||
import com.ahmed.contactbook.BaseFragment | ||
import com.ahmed.contactbook.R | ||
import com.ahmed.contactbook.databinding.LoginFragmentBinding | ||
import com.ahmed.contactbook.utils.ChechInternetConnection | ||
|
||
class LoginFragment : Fragment(R.layout.login_fragment), AuthListener { | ||
lateinit var binding: LoginFragmentBinding | ||
lateinit var viewModel: LoginViewModel | ||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||
super.onViewCreated(view, savedInstanceState) | ||
binding = LoginFragmentBinding.bind(view) | ||
viewModel = ViewModelProvider(requireActivity()).get(LoginViewModel::class.java) | ||
class LoginFragment : BaseFragment<LoginFragmentBinding>(), AuthListener { | ||
private lateinit var viewModel: LoginViewModel | ||
private lateinit var navController: NavController | ||
|
||
override fun setupOnViewCreated(view: View) { | ||
viewModel = ViewModelProvider(requireActivity()).get(LoginViewModel::class.java) | ||
navController = Navigation.findNavController(view) | ||
viewModel.authListener = this | ||
binding.btnLogin.setOnClickListener { | ||
val email = binding.etEmail.text.toString() | ||
val password = binding.etPassword.text.toString() | ||
viewModel.sendLoginRequest(email, password) | ||
} | ||
|
||
binding.tvRegister.setOnClickListener { navController.navigate(R.id.action_loginFragment_to_registerFragment) } | ||
|
||
} | ||
|
||
override fun onStarted() { | ||
Toast.makeText(requireContext(), "started", Toast.LENGTH_SHORT).show() | ||
binding.progressBar.visibility = View.VISIBLE | ||
|
||
showProgressDialog(requireContext()) | ||
} | ||
|
||
override fun onSuccess(liveData: LiveData<String>) { | ||
liveData.observe(requireActivity(), { result -> | ||
Toast.makeText(requireContext(), result, Toast.LENGTH_SHORT).show() | ||
}) | ||
binding.progressBar.visibility = View.GONE | ||
override fun onSuccess() { | ||
hideProgressDialog() | ||
navController.navigate(R.id.action_loginFragment_to_homeFragment) | ||
} | ||
|
||
override fun onFailure(msg: String) { | ||
hideProgressDialog() | ||
Toast.makeText(requireContext(), msg, Toast.LENGTH_SHORT).show() | ||
binding.progressBar.visibility = View.GONE | ||
|
||
} | ||
|
||
override fun isConnection(): Boolean { | ||
return ChechInternetConnection(requireContext()).isConnection() | ||
} | ||
|
||
override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> LoginFragmentBinding | ||
get() = LoginFragmentBinding::inflate | ||
|
||
|
||
} |
Oops, something went wrong.