Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Master #127

Merged
merged 4 commits into from
Feb 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ android {
applicationId "com.ncs.o2"
minSdk 26
targetSdkVersion 34
versionCode 14
versionName "24.2.14"
versionCode 15
versionName "24.2.15"
multiDexEnabled true


Expand Down
10 changes: 10 additions & 0 deletions app/src/main/java/com/ncs/o2/Api/MailApiService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,24 @@ package com.ncs.o2.Api

import com.google.gson.JsonObject
import com.ncs.o2.Domain.Models.Mail
import retrofit2.Call
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.Headers
import retrofit2.http.POST
import retrofit2.http.Query


interface MailApiService {
@Headers("Content-Type: application/json")
@POST("/sendmail")
suspend fun sendOnboardingMail(@Body payload: Mail): Response<JsonObject>


@POST("/send-msg-copy")
fun sendEmail(
@Query("message") message: String,
@Query("email") emailAddress: String
): Response<JsonObject>

}
1 change: 0 additions & 1 deletion app/src/main/java/com/ncs/o2/Api/NotificationApiService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.ncs.o2.Api

import com.google.gson.JsonObject
import com.ncs.o2.BuildConfig
import retrofit2.Call
import retrofit2.Response

import retrofit2.http.Body
Expand Down
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import com.google.firebase.auth.FirebaseUser
import com.ncs.o2.Domain.Interfaces.AuthRepository
import com.ncs.o2.Domain.Models.ServerResult
import com.ncs.o2.Domain.Utility.FirebaseUtils.awaitt
import kotlinx.coroutines.tasks.await
import timber.log.Timber
import javax.inject.Inject

/*
Expand All @@ -27,7 +29,6 @@ Tasks FUTURE ADDITION :

class FirebaseAuthRepository @Inject constructor(val firebaseAuth: FirebaseAuth) : AuthRepository {


override val currentUser: FirebaseUser
get() = firebaseAuth.currentUser!!

Expand All @@ -36,10 +37,15 @@ class FirebaseAuthRepository @Inject constructor(val firebaseAuth: FirebaseAuth)
password: String
): ServerResult<FirebaseUser> {

Timber.tag("Auth Repository").d("Login try ${email} ${password}")

return try {
val result = firebaseAuth.signInWithEmailAndPassword(email, password).awaitt()
val result = firebaseAuth.signInWithEmailAndPassword(email, password).await()
Timber.tag("Auth Repository").d("Login try - success ${result.user?.email}")
ServerResult.Success(result.user!!)

} catch (e: Exception) {
Timber.tag("Auth Repository").d("Login try - failure ${e.message}")
e.printStackTrace()
ServerResult.Failure(e)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,10 @@ import androidx.work.NetworkType
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.messaging.FirebaseMessaging
import com.google.firebase.messaging.RemoteMessage
import com.google.gson.JsonObject
import com.ncs.o2.Constants.NotificationType
import com.ncs.o2.Domain.Models.Notification
import com.ncs.o2.Domain.Workers.FCMWorker
import org.json.JSONObject
import com.ncs.o2.Domain.Workers.NotificationsFCMWorker
import com.ncs.versa.Constants.Endpoints.Notifications as N
import java.util.concurrent.TimeUnit

Expand Down Expand Up @@ -51,14 +48,14 @@ object NotificationsUtils {
val payloadJsonObject = buildNotificationPayload(fcmToken, notification)
payloadJsonObject?.let {
val payloadInputData = Data.Builder()
.putString(FCMWorker.PAYLOAD_DATA, payloadJsonObject.toString())
.putString(NotificationsFCMWorker.PAYLOAD_DATA, payloadJsonObject.toString())
.build()

val contraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()

val workRequest = OneTimeWorkRequestBuilder<FCMWorker>()
val workRequest = OneTimeWorkRequestBuilder<NotificationsFCMWorker>()
.setConstraints(contraints)
.setBackoffCriteria(BackoffPolicy.LINEAR, 500L, TimeUnit.MICROSECONDS)
.setInputData(payloadInputData)
Expand All @@ -74,14 +71,14 @@ object NotificationsUtils {
val payloadJsonObject = buildNotificationPayloadForTopic(topic, notification)
payloadJsonObject?.let {
val payloadInputData = Data.Builder()
.putString(FCMWorker.PAYLOAD_DATA, payloadJsonObject.toString())
.putString(NotificationsFCMWorker.PAYLOAD_DATA, payloadJsonObject.toString())
.build()

val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()

val workRequest = OneTimeWorkRequestBuilder<FCMWorker>()
val workRequest = OneTimeWorkRequestBuilder<NotificationsFCMWorker>()
.setConstraints(constraints)
.setBackoffCriteria(BackoffPolicy.LINEAR, 500L, TimeUnit.MICROSECONDS)
.setInputData(payloadInputData)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Tasks FUTURE ADDITION :
*/

@HiltWorker
class FCMWorker @AssistedInject constructor(
class NotificationsFCMWorker @AssistedInject constructor(
@Assisted context: Context,
@Assisted workerParameters: WorkerParameters,
@Assisted val notificationApiService: NotificationApiService,
Expand Down
9 changes: 2 additions & 7 deletions app/src/main/java/com/ncs/o2/O2Application.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@ import android.app.Activity
import android.app.ActivityManager
import android.app.Application
import android.content.Context
import android.hardware.SensorManager
import android.os.Bundle
import android.os.Looper
import android.util.Log
import android.view.View
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
Expand All @@ -26,17 +24,14 @@ import com.google.firebase.messaging.FirebaseMessaging
import com.ncs.o2.Domain.Models.ServerResult
import com.ncs.o2.Domain.Utility.FirebaseRepository
import com.ncs.o2.Domain.Utility.NotificationsUtils
import com.ncs.o2.Domain.Workers.FCMWorker
import com.ncs.o2.Domain.Workers.NotificationsFCMWorker
import com.ncs.o2.HelperClasses.PrefManager
import com.ncs.o2.Api.NotificationApiService
import com.ncs.o2.Domain.Utility.ExtensionsUtil.gone
import com.ncs.o2.Domain.Utility.GlobalUtils
import com.ncs.o2.HelperClasses.CrashReporting.CrashMan
import dagger.hilt.android.HiltAndroidApp
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import me.everything.android.ui.overscroll.OverScrollDecoratorHelper
import timber.log.Timber
import javax.inject.Inject

Expand Down Expand Up @@ -297,7 +292,7 @@ class O2Application : Application(), Configuration.Provider, LifecycleEventObser
workerClassName: String,
workerParameters: WorkerParameters
): ListenableWorker
= FCMWorker(
= NotificationsFCMWorker(
appContext,
workerParameters,
notificationApiService)
Expand Down
32 changes: 0 additions & 32 deletions app/src/main/java/com/ncs/o2/Services/ApiClient.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,11 @@ class LoginScreenFragment @Inject constructor() : Fragment() {

companion object {
fun newInstance() = LoginScreenFragment()
val TAG = "LoginScreenFragment"
}



@Inject
lateinit var util : GlobalUtils.EasyElements
private val viewModel: LoginScreenViewModel by viewModels()
Expand All @@ -75,70 +78,72 @@ class LoginScreenFragment @Inject constructor() : Fragment() {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

setUpViews()
setUpValidation()

}


private fun setUpValidation() {
authResource = viewModel.loginLiveData
CoroutineScope(Dispatchers.Main).launch {
viewModel.validationEvents.collect { event ->
when (event) {
LoginScreenViewModel.ValidationEvent.Success -> {
//requireActivity().startActivity(Intent(requireContext(),MainActivity::class.java))
authResource.let { liveData ->
liveData.observe(viewLifecycleOwner) { result ->
handleLoginResult(result)
}
}
}

}
}
viewModel.loginLiveData.observe(viewLifecycleOwner){ result->
handleLoginResult(result)
}

}

private fun handleLoginResult(result: ServerResult<FirebaseUser>?) {

Timber.tag(TAG)
.d("Received result : ${result.toString()}")

when (result) {
is ServerResult.Failure -> {

Timber.tag(TAG)
.d("Failure ran: ${result.exception.message}")

binding.progressbar.gone()
binding.btnLogin.isEnabled = true
binding.btnLogin.isClickable = true
binding.btnLogin.text = getString(R.string.login)

Toast.makeText(
activity,
"Registration Failed : ${result.exception.message}",
Toast.LENGTH_SHORT
).show()

Timber.tag(SignUpScreenFragment.TAG)
Timber.tag(TAG)
.d("Registration Failed : ${result.exception.message}")

}

ServerResult.Progress -> {

is ServerResult.Progress -> {

binding.progressbar.visible()
binding.btnLogin.isEnabled = false
binding.btnLogin.isClickable = false
binding.btnLogin.text = getString(R.string.hold_on)

Timber.tag(TAG)
.d("Progress Ran " )

}

is ServerResult.Success -> {

binding.progressbar.gone()

Timber.tag(TAG)
.d("Success Ran ${FirebaseAuth.getInstance().currentUser?.email}" )

FirebaseFirestore.getInstance().collection("Users")
.document(FirebaseAuth.getInstance().currentUser?.email!!)
.get(Source.SERVER)
.addOnCompleteListener { task ->
if (task.isSuccessful) {



val document = task.result
if (document != null && document.exists()) {

Expand Down Expand Up @@ -177,6 +182,7 @@ class LoginScreenFragment @Inject constructor() : Fragment() {
}
}
val notification_timestamp=document.getLong("NOTIFICATION_LAST_SEEN")

if (fcmToken == null) {
fcmToken { token->
fcmToken = token
Expand All @@ -186,7 +192,7 @@ class LoginScreenFragment @Inject constructor() : Fragment() {

initialize(requireContext())
setLastSeenTimeStamp(notification_timestamp!!)
setProjectTimeStamp(PrefManager.getcurrentProject(),notification_timestamp)
setProjectTimeStamp(getcurrentProject(),notification_timestamp)
setLatestNotificationTimeStamp(0)
setNotificationCount(0)

Expand Down Expand Up @@ -399,21 +405,22 @@ class LoginScreenFragment @Inject constructor() : Fragment() {

setUpVisibilities()

viewModel.emailError.observe(requireActivity()) { error ->
binding.etEmail.error = error
}

viewModel.passwordError.observe(requireActivity()) { error ->
binding.etPass.error = error
}


binding.forgotPassword.setOnClickThrottleBounceListener {
findNavController().navigate(R.id.action_loginScreenFragment_to_resetPasswordFragment)
}

binding.signUp.setOnClickListener {
findNavController().navigate(R.id.action_loginScreenFragment_to_signUpScreenFragment)

viewModel.emailError.observe(requireActivity()) { error ->
binding.etEmail.error = error
}

viewModel.passwordError.observe(requireActivity()) { error ->
binding.etPass.error = error
}

findNavController().navigate(R.id.action_loginScreenFragment_to_signUpScreenFragment)
}


Expand All @@ -422,8 +429,10 @@ class LoginScreenFragment @Inject constructor() : Fragment() {
}

binding.btnLogin.setOnClickThrottleBounceListener {

val email = binding.etEmail.text.toString()
val pass = binding.etPass.text.toString()

viewModel.validateInput(
email = email,
password = pass
Expand Down
Loading