diff --git a/app/build.gradle b/app/build.gradle index 0c63a14a..301bf771 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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 diff --git a/app/src/main/java/com/ncs/o2/Api/MailApiService.kt b/app/src/main/java/com/ncs/o2/Api/MailApiService.kt index 7fb40800..05ee9099 100644 --- a/app/src/main/java/com/ncs/o2/Api/MailApiService.kt +++ b/app/src/main/java/com/ncs/o2/Api/MailApiService.kt @@ -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 + + + @POST("/send-msg-copy") + fun sendEmail( + @Query("message") message: String, + @Query("email") emailAddress: String + ): Response + } \ No newline at end of file diff --git a/app/src/main/java/com/ncs/o2/Api/NotificationApiService.kt b/app/src/main/java/com/ncs/o2/Api/NotificationApiService.kt index c4fe8c77..fa7e7224 100644 --- a/app/src/main/java/com/ncs/o2/Api/NotificationApiService.kt +++ b/app/src/main/java/com/ncs/o2/Api/NotificationApiService.kt @@ -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 diff --git a/app/src/main/java/com/ncs/o2/Domain/Components/EmailComponent.kt b/app/src/main/java/com/ncs/o2/Domain/Components/EmailComponent.kt new file mode 100644 index 00000000..e69de29b diff --git a/app/src/main/java/com/ncs/o2/Domain/Repositories/FirebaseAuthRepository.kt b/app/src/main/java/com/ncs/o2/Domain/Repositories/FirebaseAuthRepository.kt index 19d66cb3..d9f7185d 100644 --- a/app/src/main/java/com/ncs/o2/Domain/Repositories/FirebaseAuthRepository.kt +++ b/app/src/main/java/com/ncs/o2/Domain/Repositories/FirebaseAuthRepository.kt @@ -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 /* @@ -27,7 +29,6 @@ Tasks FUTURE ADDITION : class FirebaseAuthRepository @Inject constructor(val firebaseAuth: FirebaseAuth) : AuthRepository { - override val currentUser: FirebaseUser get() = firebaseAuth.currentUser!! @@ -36,10 +37,15 @@ class FirebaseAuthRepository @Inject constructor(val firebaseAuth: FirebaseAuth) password: String ): ServerResult { + 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) } diff --git a/app/src/main/java/com/ncs/o2/Domain/Utility/NotificationsUtils.kt b/app/src/main/java/com/ncs/o2/Domain/Utility/NotificationsUtils.kt index c302cbae..46e9225b 100644 --- a/app/src/main/java/com/ncs/o2/Domain/Utility/NotificationsUtils.kt +++ b/app/src/main/java/com/ncs/o2/Domain/Utility/NotificationsUtils.kt @@ -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 @@ -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() + val workRequest = OneTimeWorkRequestBuilder() .setConstraints(contraints) .setBackoffCriteria(BackoffPolicy.LINEAR, 500L, TimeUnit.MICROSECONDS) .setInputData(payloadInputData) @@ -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() + val workRequest = OneTimeWorkRequestBuilder() .setConstraints(constraints) .setBackoffCriteria(BackoffPolicy.LINEAR, 500L, TimeUnit.MICROSECONDS) .setInputData(payloadInputData) diff --git a/app/src/main/java/com/ncs/o2/Domain/Workers/FCMWorker.kt b/app/src/main/java/com/ncs/o2/Domain/Workers/NotificationsFCMWorker.kt similarity index 98% rename from app/src/main/java/com/ncs/o2/Domain/Workers/FCMWorker.kt rename to app/src/main/java/com/ncs/o2/Domain/Workers/NotificationsFCMWorker.kt index 7d79d8c4..95fadaec 100644 --- a/app/src/main/java/com/ncs/o2/Domain/Workers/FCMWorker.kt +++ b/app/src/main/java/com/ncs/o2/Domain/Workers/NotificationsFCMWorker.kt @@ -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, diff --git a/app/src/main/java/com/ncs/o2/O2Application.kt b/app/src/main/java/com/ncs/o2/O2Application.kt index 539c7b0b..803a58ce 100644 --- a/app/src/main/java/com/ncs/o2/O2Application.kt +++ b/app/src/main/java/com/ncs/o2/O2Application.kt @@ -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 @@ -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 @@ -297,7 +292,7 @@ class O2Application : Application(), Configuration.Provider, LifecycleEventObser workerClassName: String, workerParameters: WorkerParameters ): ListenableWorker - = FCMWorker( + = NotificationsFCMWorker( appContext, workerParameters, notificationApiService) diff --git a/app/src/main/java/com/ncs/o2/Services/ApiClient.kt b/app/src/main/java/com/ncs/o2/Services/ApiClient.kt deleted file mode 100644 index 9fcc8594..00000000 --- a/app/src/main/java/com/ncs/o2/Services/ApiClient.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.ncs.o2.Services - -import com.ncs.o2.BuildConfig -import okhttp3.Interceptor -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.logging.HttpLoggingInterceptor -import retrofit2.Retrofit -import retrofit2.converter.gson.GsonConverterFactory -import javax.inject.Inject - - -/* -File : ApiClient.kt -> com.ncs.o2.Services -Description : Client - -Author : Alok Ranjan (VC uname : apple) -Link : https://github.com/arpitmx -From : Bitpolarity x Noshbae (@Project : O2 Android) - -Creation : 1:51 am on 01/06/23 - -Todo > -Tasks CLEAN CODE : -Tasks BUG FIXES : -Tasks FEATURE MUST HAVE : -Tasks FUTURE ADDITION : - -*/ - -object ApiClient { -} \ No newline at end of file diff --git a/app/src/main/java/com/ncs/o2/UI/Auth/LoginScreen/LoginScreenFragment.kt b/app/src/main/java/com/ncs/o2/UI/Auth/LoginScreen/LoginScreenFragment.kt index 0aa04082..aae92c86 100644 --- a/app/src/main/java/com/ncs/o2/UI/Auth/LoginScreen/LoginScreenFragment.kt +++ b/app/src/main/java/com/ncs/o2/UI/Auth/LoginScreen/LoginScreenFragment.kt @@ -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() @@ -75,6 +78,7 @@ class LoginScreenFragment @Inject constructor() : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + setUpViews() setUpValidation() @@ -82,63 +86,64 @@ class LoginScreenFragment @Inject constructor() : Fragment() { 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?) { + + 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()) { @@ -177,6 +182,7 @@ class LoginScreenFragment @Inject constructor() : Fragment() { } } val notification_timestamp=document.getLong("NOTIFICATION_LAST_SEEN") + if (fcmToken == null) { fcmToken { token-> fcmToken = token @@ -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) @@ -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) } @@ -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 diff --git a/app/src/main/java/com/ncs/o2/UI/Auth/LoginScreen/LoginScreenViewModel.kt b/app/src/main/java/com/ncs/o2/UI/Auth/LoginScreen/LoginScreenViewModel.kt index bcd1a97c..921528a2 100644 --- a/app/src/main/java/com/ncs/o2/UI/Auth/LoginScreen/LoginScreenViewModel.kt +++ b/app/src/main/java/com/ncs/o2/UI/Auth/LoginScreen/LoginScreenViewModel.kt @@ -18,6 +18,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.receiveAsFlow import kotlinx.coroutines.launch +import timber.log.Timber import javax.inject.Inject @@ -36,8 +37,8 @@ class LoginScreenViewModel @Inject constructor( private val _passwordError = MutableLiveData(null) val passwordError: LiveData get() = _passwordError - private val validationEventChannel = Channel() - val validationEvents = validationEventChannel.receiveAsFlow() +// private val validationEventChannel = Channel() +// val validationEvents = validationEventChannel.receiveAsFlow() private val _loginLiveData = MutableLiveData?>(null) val loginLiveData: LiveData?> = _loginLiveData @@ -45,6 +46,7 @@ class LoginScreenViewModel @Inject constructor( @Issue("Running multiple times on wrong input...") fun validateInput(email: String, password: String) { + val isEmailValid = emailValidator.execute(email) val isPasswordValid = passwordValidator.execute(password) @@ -69,33 +71,21 @@ class LoginScreenViewModel @Inject constructor( if (hasError) return viewModelScope.launch { - validationEventChannel.send(ValidationEvent.Success) loginUser(email, password = password) } } suspend fun loginUser(email: String, password: String) { + _loginLiveData.postValue(ServerResult.Progress) val result = authRepository.login(email, password) _loginLiveData.postValue(result) - - } - fun fetchUserInfo() { - repository.getUserInfo { result -> - when (result) { - is ServerResult.Success -> { - _user.value = result.data - } - else -> { - } - } - } } - sealed class ValidationEvent { - object Success: ValidationEvent () - } +// sealed class ValidationEvent { +// object Success: ValidationEvent () +// } } \ No newline at end of file diff --git a/app/src/main/java/com/ncs/o2/UI/NewChanges.kt b/app/src/main/java/com/ncs/o2/UI/NewChanges.kt index 74e418c1..224707ca 100644 --- a/app/src/main/java/com/ncs/o2/UI/NewChanges.kt +++ b/app/src/main/java/com/ncs/o2/UI/NewChanges.kt @@ -36,8 +36,8 @@ class NewChanges : AppCompatActivity() { setViews() - val desc="## Release Notes [24.2.10] - [10/02/2024]\n" + - "\n" + + val desc="## Release Notes [24.2.15] - [15/02/2024]\n" + + "\n ![img](https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbTFodDNscnE5b3E5Mm4yZDQ2cWh0bTdrNjZkamt0NHFiNXV4NGRodCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/lKrfxjj5soCIw/giphy.gif) \n" + "### New Features\n" + " - Created project stats: Now you can easily track and analyze project statistics within the app.\n" + " \n" + @@ -67,7 +67,7 @@ class NewChanges : AppCompatActivity() { "- Made general improvements in UX\n" + "\n" + "### How to Update\n" + - "- Latest Version of O2 is 24.2.10, it can be downloaded from the release page, find version 24.2.10 at [Release Page](https://github.com/arpitmx/Oxygen/releases)\n" + + "- Latest Version of O2 is 24.2.15, it can be downloaded from the release page, find version 24.2.15 at [Release Page](https://github.com/arpitmx/Oxygen/releases)\n" + "\n" + "### Feedback\n" + "- Feedback is the key to enhancing user experience, it is our appeal to the users for providing any constructive feedback about any issues faced by them.\n" + diff --git a/app/src/main/java/com/ncs/o2/UI/Setting/SettingsActivity.kt b/app/src/main/java/com/ncs/o2/UI/Setting/SettingsActivity.kt index a936fc7a..3b2e0858 100644 --- a/app/src/main/java/com/ncs/o2/UI/Setting/SettingsActivity.kt +++ b/app/src/main/java/com/ncs/o2/UI/Setting/SettingsActivity.kt @@ -69,7 +69,7 @@ class SettingsActivity : AppCompatActivity(), settingAdater.onSettingClick,Netwo settingOption("Edit Profile", R.drawable.round_edit_24, ""), settingTitle("what's new"), - settingOption("What's New", R.drawable.baseline_info_24, "Version 24.2.10"), + settingOption("What's New", R.drawable.baseline_info_24, "Version 24.2.15"), settingTitle("Report & Feedback"), settingOption("Feedback", R.drawable.baseline_feedback_24, ""), diff --git a/app/src/main/java/com/ncs/o2/UI/StartScreen/StartScreen.kt b/app/src/main/java/com/ncs/o2/UI/StartScreen/StartScreen.kt index 439ae152..9f9b7449 100644 --- a/app/src/main/java/com/ncs/o2/UI/StartScreen/StartScreen.kt +++ b/app/src/main/java/com/ncs/o2/UI/StartScreen/StartScreen.kt @@ -183,7 +183,6 @@ class StartScreen @Inject constructor() : AppCompatActivity(), NetworkChangeRece } } - lateinit var scaleAnimation: ScaleAnimation private val requestPermissionLauncher = registerForActivityResult( diff --git a/app/src/main/java/com/ncs/o2/UI/Tasks/TaskPage/Chat/TaskChatFragment.kt b/app/src/main/java/com/ncs/o2/UI/Tasks/TaskPage/Chat/TaskChatFragment.kt index b43d9985..3885a513 100644 --- a/app/src/main/java/com/ncs/o2/UI/Tasks/TaskPage/Chat/TaskChatFragment.kt +++ b/app/src/main/java/com/ncs/o2/UI/Tasks/TaskPage/Chat/TaskChatFragment.kt @@ -85,7 +85,7 @@ import com.ncs.o2.UI.Tasks.TaskPage.Details.TaskDetailsFragment import com.ncs.o2.UI.Tasks.TaskPage.TaskDetailActivity import com.ncs.o2.UI.Tasks.TaskPage.TaskDetailViewModel import com.ncs.o2.UI.UIComponents.Adapters.MentionUsersAdapter -import com.ncs.o2.UI.UIComponents.BottomSheets.MessageMoreOptions +import com.ncs.o2.UI.UIComponents.BottomSheets.ChatMoreOptions import com.ncs.o2.databinding.FragmentTaskChatBinding import com.ncs.versa.Constants.Endpoints import com.ncs.versa.HelperClasses.BounceEdgeEffectFactory @@ -124,7 +124,7 @@ import javax.inject.Inject @AndroidEntryPoint class TaskChatFragment : Fragment(), ChatAdapter.onChatDoubleClickListner, ChatAdapter.onImageClicked, MentionUsersAdapter.onUserClick, ChatAdapter.OnMessageLongPress, - MessageMoreOptions.OnReplyClick,ChatAdapter.OnLinkPreviewClick { + ChatMoreOptions.OnReplyClick,ChatAdapter.OnLinkPreviewClick { @Inject @FirebaseRepository lateinit var repository: Repository @@ -1632,7 +1632,7 @@ class TaskChatFragment : Fragment(), ChatAdapter.onChatDoubleClickListner, override fun onLongPress(message: Message, senderName: String) { requireContext().performHapticFeedback() val moreOptionBottomSheet = - MessageMoreOptions( + ChatMoreOptions( message, "Task Chat", this, diff --git a/app/src/main/java/com/ncs/o2/UI/Tasks/TaskPage/TaskDetailViewModel.kt b/app/src/main/java/com/ncs/o2/UI/Tasks/TaskPage/TaskDetailViewModel.kt index 76bcbb20..cde24f04 100644 --- a/app/src/main/java/com/ncs/o2/UI/Tasks/TaskPage/TaskDetailViewModel.kt +++ b/app/src/main/java/com/ncs/o2/UI/Tasks/TaskPage/TaskDetailViewModel.kt @@ -22,7 +22,7 @@ import com.ncs.o2.Domain.Repositories.FirestoreRepository import com.ncs.o2.Domain.Repositories.TaskRepository import com.ncs.o2.Domain.Utility.FirebaseRepository import com.ncs.o2.Api.NotificationApiService -import com.ncs.o2.Domain.Workers.FCMWorker +import com.ncs.o2.Domain.Workers.NotificationsFCMWorker import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -94,14 +94,14 @@ constructor(val notificationApiService: NotificationApiService, val payloadJsonObject = buildNotificationPayload(fcmToken) 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() + val workRequest = OneTimeWorkRequestBuilder() .setConstraints(contraints) .setBackoffCriteria(BackoffPolicy.LINEAR,500L,TimeUnit.MICROSECONDS) .setInputData(payloadInputData) diff --git a/app/src/main/java/com/ncs/o2/UI/Teams/Chat/ChannelChatFragment.kt b/app/src/main/java/com/ncs/o2/UI/Teams/Chat/ChannelChatFragment.kt index 68a2a36b..bca7f693 100644 --- a/app/src/main/java/com/ncs/o2/UI/Teams/Chat/ChannelChatFragment.kt +++ b/app/src/main/java/com/ncs/o2/UI/Teams/Chat/ChannelChatFragment.kt @@ -83,7 +83,7 @@ import com.ncs.o2.UI.Tasks.TaskPage.TaskDetailViewModel import com.ncs.o2.UI.Teams.ChannelHolderActivity import com.ncs.o2.UI.UIComponents.Adapters.MentionUsersAdapter import com.ncs.o2.UI.UIComponents.Adapters.RecyclerViewAdapter -import com.ncs.o2.UI.UIComponents.BottomSheets.MessageMoreOptions +import com.ncs.o2.UI.UIComponents.BottomSheets.ChatMoreOptions import com.ncs.o2.databinding.FragmentTeamsChatBinding import com.ncs.versa.Constants.Endpoints import com.ncs.versa.HelperClasses.BounceEdgeEffectFactory @@ -121,7 +121,7 @@ import javax.inject.Inject @AndroidEntryPoint class ChannelChatFragment : Fragment(), ChannelChatAdapter.onChatDoubleClickListner, - ChannelChatAdapter.onImageClicked, MentionUsersAdapter.onUserClick,ChannelChatAdapter.OnMessageLongPress,MessageMoreOptions.OnReplyClick,ChannelChatAdapter.OnLinkPreviewClick{ + ChannelChatAdapter.onImageClicked, MentionUsersAdapter.onUserClick,ChannelChatAdapter.OnMessageLongPress,ChatMoreOptions.OnReplyClick,ChannelChatAdapter.OnLinkPreviewClick{ lateinit var binding: FragmentTeamsChatBinding private val activityBinding: ChannelHolderActivity by lazy { @@ -1584,7 +1584,7 @@ class ChannelChatFragment : Fragment(), ChannelChatAdapter.onChatDoubleClickList override fun onLongPress(message: Message,senderName: String) { requireContext().performHapticFeedback() val moreOptionBottomSheet = - MessageMoreOptions(message,"Channel Chat",this, senderName) + ChatMoreOptions(message,"Channel Chat",this, senderName) moreOptionBottomSheet.show(requireFragmentManager(), "Options") } override fun onReplyClicked(message: Message,senderName: String) { diff --git a/app/src/main/java/com/ncs/o2/UI/Testing/TestingActivity.kt b/app/src/main/java/com/ncs/o2/UI/Testing/TestingActivity.kt index b8e09b97..0a5eb591 100644 --- a/app/src/main/java/com/ncs/o2/UI/Testing/TestingActivity.kt +++ b/app/src/main/java/com/ncs/o2/UI/Testing/TestingActivity.kt @@ -7,11 +7,9 @@ import android.os.Bundle import android.util.Log import android.widget.Toast import androidx.appcompat.app.AppCompatActivity -import androidx.work.ListenableWorker import com.google.firebase.Timestamp import com.google.firebase.firestore.FirebaseFirestore import com.ncs.o2.Api.MailApiService -import com.ncs.o2.Api.NotificationApiService import com.ncs.o2.Constants.NotificationType import com.ncs.o2.Constants.TestingConfig import com.ncs.o2.Domain.Interfaces.Repository @@ -28,10 +26,8 @@ import com.ncs.o2.Domain.Utility.RandomIDGenerator import com.ncs.o2.HelperClasses.PrefManager import com.ncs.o2.Data.Room.NotificationRepository.NotificationDatabase import com.ncs.o2.Domain.Models.Mail -import com.ncs.o2.Domain.Workers.FCMWorker import com.ncs.o2.databinding.ActivityTestingBinding import com.ncs.versa.Constants.Endpoints -import dagger.assisted.Assisted import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/com/ncs/o2/UI/UIComponents/BottomSheets/MessageMoreOptions.kt b/app/src/main/java/com/ncs/o2/UI/UIComponents/BottomSheets/ChatMoreOptions.kt similarity index 95% rename from app/src/main/java/com/ncs/o2/UI/UIComponents/BottomSheets/MessageMoreOptions.kt rename to app/src/main/java/com/ncs/o2/UI/UIComponents/BottomSheets/ChatMoreOptions.kt index 23f36872..a5373676 100644 --- a/app/src/main/java/com/ncs/o2/UI/UIComponents/BottomSheets/MessageMoreOptions.kt +++ b/app/src/main/java/com/ncs/o2/UI/UIComponents/BottomSheets/ChatMoreOptions.kt @@ -4,7 +4,6 @@ package com.ncs.o2.UI.UIComponents.BottomSheets import android.content.ClipData import android.content.ClipboardManager import android.content.Context -import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -25,8 +24,6 @@ import com.ncs.o2.Domain.Utility.GlobalUtils import com.ncs.o2.Domain.Utility.NotificationsUtils import com.ncs.o2.Domain.Utility.RandomIDGenerator import com.ncs.o2.HelperClasses.PrefManager -import com.ncs.o2.R -import com.ncs.o2.UI.Report.ShakeDetectedActivity import com.ncs.o2.UI.Tasks.TaskPage.Details.TaskDetailsFragment import com.ncs.o2.UI.Tasks.TaskPage.TaskDetailActivity import com.ncs.o2.databinding.MsgMoreOptionsBinding @@ -40,8 +37,8 @@ import timber.log.Timber import javax.inject.Inject @AndroidEntryPoint -class MessageMoreOptions(private val message: com.ncs.o2.Domain.Models.Message,private val openBy:String,private val onReplyClick: OnReplyClick,private val senderName:String, - val segmentName: String?=null,val sectionName: String?=null) : BottomSheetDialogFragment(){ +class ChatMoreOptions(private val message: com.ncs.o2.Domain.Models.Message, private val openBy:String, private val onReplyClick: OnReplyClick, private val senderName:String, + val segmentName: String?=null, val sectionName: String?=null) : BottomSheetDialogFragment(){ @Inject lateinit var utils : GlobalUtils.EasyElements lateinit var binding:MsgMoreOptionsBinding diff --git a/app/src/main/res/layout/chat_image_item.xml b/app/src/main/res/layout/chat_image_item.xml index bfaaf165..f04bb3ab 100644 --- a/app/src/main/res/layout/chat_image_item.xml +++ b/app/src/main/res/layout/chat_image_item.xml @@ -104,7 +104,7 @@ android:text="2 days ago" android:gravity="start|center" android:textColor="@color/account" - android:textSize="@dimen/chat_msg_text_size" + android:textSize="@dimen/font_size_timestamp" /> diff --git a/app/src/main/res/layout/chat_message_item.xml b/app/src/main/res/layout/chat_message_item.xml index 46aea12e..5bff46b3 100644 --- a/app/src/main/res/layout/chat_message_item.xml +++ b/app/src/main/res/layout/chat_message_item.xml @@ -56,7 +56,7 @@ android:text="Loading.." android:visibility="visible" android:textColor="@color/primary" - android:textSize="15dp" + android:textSize="16dp" app:layout_constraintTop_toTopOf="parent" /> @@ -122,13 +122,13 @@ + android:orientation="horizontal" + android:weightSum="10"> + android:scaleType="center" + android:src="@drawable/placeholder_image" /> @@ -158,13 +158,13 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" - android:paddingStart="15dp" - android:paddingEnd="15dp" - android:paddingTop="10dp" - android:fontFamily="@font/sfbold" - android:text="..." android:ellipsize="end" + android:fontFamily="@font/sf_pro_display_semibold" android:maxLines="2" + android:paddingStart="15dp" + android:paddingTop="10dp" + android:paddingEnd="15dp" + android:text="........" android:textColor="@color/primary" android:textSize="15dp" /> @@ -174,18 +174,18 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" + android:ellipsize="end" android:fontFamily="@font/sfregular" android:gravity="center_vertical" android:maxWidth="260dp" + android:maxLength="80" + android:maxLines="3" + android:minWidth="30dp" android:paddingStart="15dp" android:paddingEnd="15dp" android:paddingBottom="8dp" - android:maxLength="80" - android:minWidth="30dp" android:singleLine="false" android:text="..." - android:ellipsize="end" - android:maxLines="3" android:textColor="@color/better_white" android:textSize="15dp" diff --git a/app/src/main/res/layout/chat_message_reply_item.xml b/app/src/main/res/layout/chat_message_reply_item.xml index de499625..ad3497ca 100644 --- a/app/src/main/res/layout/chat_message_reply_item.xml +++ b/app/src/main/res/layout/chat_message_reply_item.xml @@ -103,7 +103,7 @@ android:gravity="start|center" android:text="2 days ago" android:textColor="@color/account" - android:textSize="@dimen/chat_msg_text_size" + android:textSize="@dimen/font_size_timestamp" /> diff --git a/app/src/main/res/layout/fragment_teams_chat.xml b/app/src/main/res/layout/fragment_teams_chat.xml index c09286c9..91c9917f 100644 --- a/app/src/main/res/layout/fragment_teams_chat.xml +++ b/app/src/main/res/layout/fragment_teams_chat.xml @@ -79,6 +79,7 @@ android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" android:layout_marginStart="-1dp" + android:elevation="2dp" android:layout_marginEnd="1dp" android:layout_marginBottom="0dp" android:orientation="vertical"> @@ -89,7 +90,7 @@ android:layout_height="wrap_content" android:background="@drawable/curvedbggreymentionlist" android:orientation="vertical" - android:elevation="5dp" + android:elevation="1dp" android:visibility="gone"> 80dp 55dp - 16dp + 17dp 15dp 16sp 15dp @@ -39,5 +39,6 @@ 8dp 18dp 17dp + 15dp \ No newline at end of file