TP-65817 | Dagger to hilt migration for chat module (#10740)
This commit is contained in:
@@ -1,58 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2022-2023 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.chat.di.components
|
||||
|
||||
import android.content.Context
|
||||
import com.navi.chat.di.dependencies.NaviChatModuleDependencies
|
||||
import com.navi.chat.di.modules.NaviChatModule
|
||||
import com.navi.chat.di.scopes.NaviChatScope
|
||||
import com.navi.chat.ui.activities.NaviChatViewImageActivity
|
||||
import com.navi.chat.ui.activities.NaviChatViewVideoActivity
|
||||
import com.navi.chat.ui.activities.NaviHelpCenterActivity
|
||||
import com.navi.chat.ui.activities.NaviTicketViewActivity
|
||||
import com.navi.chat.ui.activities.SupportScreenActivity
|
||||
import com.navi.chat.ui.fragments.ChatAttachmentBottomSheet
|
||||
import com.navi.chat.ui.fragments.ChatExitBottomSheet
|
||||
import com.navi.chat.ui.fragments.FaqSearchFragment
|
||||
import com.navi.chat.ui.fragments.NaviChatFragment
|
||||
import dagger.BindsInstance
|
||||
import dagger.Component
|
||||
|
||||
@Component(dependencies = [NaviChatModuleDependencies::class], modules = [NaviChatModule::class])
|
||||
@NaviChatScope
|
||||
interface NaviChatComponent {
|
||||
|
||||
@Component.Builder
|
||||
interface Builder {
|
||||
@BindsInstance fun naviChatModule(naviChatModule: NaviChatModule): Builder
|
||||
|
||||
fun context(@BindsInstance context: Context): Builder
|
||||
|
||||
fun appDependencies(chatModuleDependencies: NaviChatModuleDependencies): Builder
|
||||
|
||||
fun build(): NaviChatComponent
|
||||
}
|
||||
|
||||
fun inject(naviChatFragment: NaviChatFragment)
|
||||
|
||||
fun inject(naviChatViewImageActivity: NaviChatViewImageActivity)
|
||||
|
||||
fun inject(chatAttachmentBottomSheet: ChatAttachmentBottomSheet)
|
||||
|
||||
fun inject(chatExitBottomSheet: ChatExitBottomSheet)
|
||||
|
||||
fun inject(naviChatViewVideoActivity: NaviChatViewVideoActivity)
|
||||
|
||||
fun inject(naviHelpCenterActivity: NaviHelpCenterActivity)
|
||||
|
||||
fun inject(naviTicketViewActivity: NaviTicketViewActivity)
|
||||
|
||||
fun inject(supportScreenActivity: SupportScreenActivity)
|
||||
|
||||
fun inject(faqSearchFragment: FaqSearchFragment)
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2022 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.chat.di.dependencies
|
||||
|
||||
import android.content.Context
|
||||
import com.navi.common.model.NetworkInfo
|
||||
import com.navi.common.network.BaseUrls
|
||||
import dagger.hilt.EntryPoint
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
|
||||
@EntryPoint
|
||||
@InstallIn(SingletonComponent::class)
|
||||
interface NaviChatModuleDependencies {
|
||||
@ApplicationContext fun getAppInstance(): Context
|
||||
|
||||
fun getNetworkInfo(): NetworkInfo
|
||||
|
||||
fun getBaseUrls(): BaseUrls
|
||||
}
|
||||
@@ -7,21 +7,11 @@
|
||||
|
||||
package com.navi.chat.di.modules
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.Room
|
||||
import com.google.gson.GsonBuilder
|
||||
import com.navi.base.cache.dao.NaviCacheDao
|
||||
import com.navi.base.cache.database.NaviSharedDatabase
|
||||
import com.navi.base.cache.repository.NaviCacheRepositoryImpl
|
||||
import com.navi.base.cache.util.NaviSharedDBConstant
|
||||
import com.navi.base.utils.ConnectivityObserver
|
||||
import com.navi.base.utils.ConnectivityObserverImpl
|
||||
import com.navi.chat.di.scopes.NaviChatScope
|
||||
import com.navi.chat.network.CoroutineProvider
|
||||
import com.navi.chat.network.NaviChatApiInterface
|
||||
import com.navi.chat.network.retrofit.NaviChatHttpClient
|
||||
import com.navi.chat.provider.firestore.FireStoreDataProvider
|
||||
import com.navi.chat.repositories.NaviChatRepository
|
||||
import com.navi.chat.utils.ChatJsonDeserializer
|
||||
import com.navi.common.model.ModuleNameV2
|
||||
import com.navi.common.network.BaseUrls
|
||||
@@ -31,17 +21,18 @@ import com.navi.naviwidgets.models.NaviWidget
|
||||
import com.navi.naviwidgets.widgets.NaviWidgetJsonDeserializer
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import dagger.hilt.migration.DisableInstallInCheck
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import javax.inject.Singleton
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.gson.GsonConverterFactory
|
||||
|
||||
@Module(includes = [NaviChatNetworkModule::class])
|
||||
@DisableInstallInCheck
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object NaviChatModule {
|
||||
|
||||
@Provides
|
||||
@NaviChatScope
|
||||
@Singleton
|
||||
fun provideChatService(
|
||||
naviChatHttpClient: NaviChatHttpClient,
|
||||
baseUrls: BaseUrls,
|
||||
@@ -78,34 +69,7 @@ object NaviChatModule {
|
||||
.create(clazz)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@NaviChatScope
|
||||
fun providesNaviChatRepository(naviChatApiInterface: NaviChatApiInterface) =
|
||||
NaviChatRepository(chatApiInterface = naviChatApiInterface)
|
||||
@Provides @Singleton fun providesCoroutineScope() = CoroutineProvider
|
||||
|
||||
@Provides
|
||||
@NaviChatScope
|
||||
fun providesNaviCacheRepository(naviCacheDao: NaviCacheDao) =
|
||||
NaviCacheRepositoryImpl(naviCacheDao)
|
||||
|
||||
@Provides
|
||||
@NaviChatScope
|
||||
fun providesNaviCacheDao(naviSharedDatabase: NaviSharedDatabase) =
|
||||
naviSharedDatabase.naviCacheDao()
|
||||
|
||||
@Provides
|
||||
@NaviChatScope
|
||||
fun providesNaviSharedDatabase(@ApplicationContext context: Context) =
|
||||
Room.databaseBuilder(context, NaviSharedDatabase::class.java, NaviSharedDBConstant.DB_NAME)
|
||||
.build()
|
||||
|
||||
@Provides
|
||||
@NaviChatScope
|
||||
fun bindsConnectivityObserver(
|
||||
connectivityObserverImpl: ConnectivityObserverImpl
|
||||
): ConnectivityObserver = connectivityObserverImpl
|
||||
|
||||
@Provides @NaviChatScope fun providesCoroutineScope() = CoroutineProvider
|
||||
|
||||
@Provides @NaviChatScope fun providesFireStoreDataProvider() = FireStoreDataProvider()
|
||||
@Provides fun providesFireStoreDataProvider() = FireStoreDataProvider()
|
||||
}
|
||||
|
||||
@@ -8,20 +8,21 @@
|
||||
package com.navi.chat.di.modules
|
||||
|
||||
import android.content.Context
|
||||
import com.navi.chat.di.scopes.NaviChatScope
|
||||
import com.navi.chat.network.retrofit.NaviChatHttpClient
|
||||
import com.navi.common.model.NetworkInfo
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import dagger.hilt.migration.DisableInstallInCheck
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@DisableInstallInCheck
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object NaviChatNetworkModule {
|
||||
|
||||
@Provides
|
||||
@NaviChatScope
|
||||
@Singleton
|
||||
fun providesOkHttpClient(
|
||||
networkInfo: NetworkInfo,
|
||||
@ApplicationContext context: Context
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2022 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.chat.di.scopes
|
||||
|
||||
import javax.inject.Scope
|
||||
|
||||
@Scope
|
||||
@MustBeDocumented
|
||||
@Retention(value = AnnotationRetention.RUNTIME)
|
||||
annotation class NaviChatScope
|
||||
@@ -7,7 +7,6 @@
|
||||
|
||||
package com.navi.chat.network
|
||||
|
||||
import com.navi.chat.di.scopes.NaviChatScope
|
||||
import com.navi.chat.models.ChatConfigResponse
|
||||
import com.navi.chat.models.request.NaviChatInitiateRequest
|
||||
import com.navi.chat.models.request.NaviMarkConversationsReadRequest
|
||||
@@ -25,7 +24,6 @@ import okhttp3.RequestBody
|
||||
import retrofit2.Response
|
||||
import retrofit2.http.*
|
||||
|
||||
@NaviChatScope
|
||||
interface NaviChatApiInterface {
|
||||
|
||||
@POST("/crm/api/v1/customersupport/start/conversation")
|
||||
|
||||
@@ -13,13 +13,13 @@ import androidx.lifecycle.OnLifecycleEvent
|
||||
import com.google.firebase.Timestamp
|
||||
import com.navi.base.utils.isNotNullAndNotEmpty
|
||||
import com.navi.chat.data.firestore.ChatFireStoreDatabase
|
||||
import com.navi.chat.di.scopes.NaviChatScope
|
||||
import com.navi.chat.models.FireStoreDataProviderModel
|
||||
import com.navi.chat.provider.ChatDataProvider
|
||||
import com.navi.chat.provider.MessageOperation
|
||||
import com.navi.naviwidgets.models.NaviChatWidget
|
||||
import dagger.hilt.android.scopes.ActivityRetainedScoped
|
||||
|
||||
@NaviChatScope
|
||||
@ActivityRetainedScoped
|
||||
class FireStoreDataProvider : ChatDataProvider, LifecycleObserver {
|
||||
|
||||
private lateinit var chatFireStoreDatabase: ChatFireStoreDatabase
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
|
||||
package com.navi.chat.repositories
|
||||
|
||||
import com.navi.chat.di.scopes.NaviChatScope
|
||||
import com.navi.chat.models.request.NaviChatInitiateRequest
|
||||
import com.navi.chat.models.request.NaviMarkConversationsReadRequest
|
||||
import com.navi.chat.network.NaviChatApiInterface
|
||||
@@ -21,7 +20,6 @@ import retrofit2.http.Part
|
||||
import retrofit2.http.PartMap
|
||||
import retrofit2.http.Url
|
||||
|
||||
@NaviChatScope
|
||||
class NaviChatRepository @Inject constructor(private val chatApiInterface: NaviChatApiInterface) :
|
||||
ResponseCallback(), AwsRepositoryInterface {
|
||||
|
||||
|
||||
@@ -35,7 +35,9 @@ import com.navi.chat.utils.NaviChatAnalytics.Companion.SEND_MEDIA_ATTACHMENTS_CL
|
||||
import com.navi.chat.utils.URI_LIST
|
||||
import com.navi.common.model.ModuleNameV2
|
||||
import com.navi.common.ui.activity.BaseActivity
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class AttachmentConfirmationActivity : BaseActivity() {
|
||||
|
||||
private val crmEventTracker = NaviChatAnalytics.naviChatAnalytics.CRM()
|
||||
|
||||
@@ -43,7 +43,9 @@ import com.navi.chat.viewmodels.NaviChatSharedViewModel
|
||||
import com.navi.common.model.ModuleNameV2
|
||||
import com.navi.common.ui.activity.BaseActivity
|
||||
import com.navi.common.utils.getSessionId
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class NaviChatActivity :
|
||||
BaseActivity(),
|
||||
AttachmentOptionClickListener,
|
||||
|
||||
@@ -16,18 +16,16 @@ import com.bumptech.glide.Glide
|
||||
import com.navi.chat.R
|
||||
import com.navi.chat.base.ChatBaseActivity
|
||||
import com.navi.chat.databinding.ActivityNaviChatViewImageBinding
|
||||
import com.navi.chat.di.components.DaggerNaviChatComponent
|
||||
import com.navi.chat.di.dependencies.NaviChatModuleDependencies
|
||||
import com.navi.chat.di.modules.NaviChatModule
|
||||
import com.navi.chat.utils.ChatFileHelper
|
||||
import com.navi.chat.utils.FILENAME
|
||||
import com.navi.chat.utils.FILE_URI
|
||||
import com.navi.chat.utils.ToolbarInteraction
|
||||
import com.navi.common.utils.log
|
||||
import dagger.hilt.android.EntryPointAccessors
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
class NaviChatViewImageActivity : ChatBaseActivity(), ToolbarInteraction {
|
||||
override val screenName: String
|
||||
get() = NaviChatViewImageActivity::class.java.simpleName
|
||||
@@ -40,7 +38,6 @@ class NaviChatViewImageActivity : ChatBaseActivity(), ToolbarInteraction {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = DataBindingUtil.setContentView(this, R.layout.activity_navi_chat_view_image)
|
||||
setContentView(binding.root)
|
||||
injectDependencies()
|
||||
val filename = intent?.extras?.getString(FILENAME)
|
||||
initUi(filename)
|
||||
showImageInImageView(filename)
|
||||
@@ -53,20 +50,6 @@ class NaviChatViewImageActivity : ChatBaseActivity(), ToolbarInteraction {
|
||||
)
|
||||
}
|
||||
|
||||
private fun injectDependencies() {
|
||||
DaggerNaviChatComponent.builder()
|
||||
.context(this)
|
||||
.naviChatModule(NaviChatModule)
|
||||
.appDependencies(
|
||||
EntryPointAccessors.fromApplication(
|
||||
this.applicationContext,
|
||||
NaviChatModuleDependencies::class.java
|
||||
)
|
||||
)
|
||||
.build()
|
||||
.inject(this)
|
||||
}
|
||||
|
||||
private fun showImageInImageView(fileName: String?) {
|
||||
fileName?.let {
|
||||
try {
|
||||
|
||||
@@ -25,13 +25,11 @@ import androidx.databinding.DataBindingUtil
|
||||
import com.navi.chat.R
|
||||
import com.navi.chat.base.ChatBaseActivity
|
||||
import com.navi.chat.databinding.ActivityNaviChatViewVideoBinding
|
||||
import com.navi.chat.di.components.DaggerNaviChatComponent
|
||||
import com.navi.chat.di.dependencies.NaviChatModuleDependencies
|
||||
import com.navi.chat.di.modules.NaviChatModule
|
||||
import com.navi.chat.utils.*
|
||||
import dagger.hilt.android.EntryPointAccessors
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import java.io.File
|
||||
|
||||
@AndroidEntryPoint
|
||||
class NaviChatViewVideoActivity :
|
||||
ChatBaseActivity(),
|
||||
ToolbarInteraction,
|
||||
@@ -54,7 +52,6 @@ class NaviChatViewVideoActivity :
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = DataBindingUtil.setContentView(this, R.layout.activity_navi_chat_view_video)
|
||||
setContentView(binding.root)
|
||||
injectDependencies()
|
||||
binding.progressBar.visibility = View.VISIBLE
|
||||
fileName = intent?.extras?.getString(FILENAME)
|
||||
fileType = intent?.extras?.getString(FILE_TYPE_PARAM)
|
||||
@@ -131,20 +128,6 @@ class NaviChatViewVideoActivity :
|
||||
)
|
||||
}
|
||||
|
||||
private fun injectDependencies() {
|
||||
DaggerNaviChatComponent.builder()
|
||||
.context(this)
|
||||
.naviChatModule(NaviChatModule)
|
||||
.appDependencies(
|
||||
EntryPointAccessors.fromApplication(
|
||||
this.applicationContext,
|
||||
NaviChatModuleDependencies::class.java
|
||||
)
|
||||
)
|
||||
.build()
|
||||
.inject(this)
|
||||
}
|
||||
|
||||
override fun onToolbarBackClicked() {
|
||||
this.onBackPressed()
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ package com.navi.chat.ui.activities
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.navi.base.deeplink.DeepLinkManager
|
||||
import com.navi.base.model.ActionData
|
||||
@@ -17,9 +18,6 @@ import com.navi.base.model.CtaData
|
||||
import com.navi.base.model.NaviClickAction
|
||||
import com.navi.chat.R
|
||||
import com.navi.chat.databinding.ActivityHelpCenterBinding
|
||||
import com.navi.chat.di.components.DaggerNaviChatComponent
|
||||
import com.navi.chat.di.dependencies.NaviChatModuleDependencies
|
||||
import com.navi.chat.di.modules.NaviChatModule
|
||||
import com.navi.chat.utils.CONVERSATION_ID
|
||||
import com.navi.chat.utils.CONVERSATION_ID_PARAM
|
||||
import com.navi.chat.utils.NaviChatAnalytics
|
||||
@@ -43,9 +41,9 @@ import com.navi.common.ui.activity.BaseActivity
|
||||
import com.navi.naviwidgets.adapters.NaviAdapter
|
||||
import com.navi.naviwidgets.callbacks.WidgetCallback
|
||||
import com.navi.naviwidgets.viewholder.ViewHolderFactoryImpl
|
||||
import dagger.hilt.android.EntryPointAccessors
|
||||
import javax.inject.Inject
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class NaviHelpCenterActivity : BaseActivity(), HeaderInteractionListener, WidgetCallback {
|
||||
|
||||
override val screenName: String
|
||||
@@ -57,7 +55,7 @@ class NaviHelpCenterActivity : BaseActivity(), HeaderInteractionListener, Widget
|
||||
private lateinit var binding: ActivityHelpCenterBinding
|
||||
private val naviAdapter = NaviAdapter(widgetCallback = this, factory = ViewHolderFactoryImpl())
|
||||
|
||||
@Inject lateinit var viewModel: HelpCenterViewModel
|
||||
private val viewModel by lazy { ViewModelProvider(this)[HelpCenterViewModel::class.java] }
|
||||
|
||||
private val crmEventTracker = NaviChatAnalytics.naviChatAnalytics.CRM()
|
||||
|
||||
@@ -65,7 +63,6 @@ class NaviHelpCenterActivity : BaseActivity(), HeaderInteractionListener, Widget
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = DataBindingUtil.setContentView(this, R.layout.activity_help_center)
|
||||
setContentView(binding.root)
|
||||
injectDependencies()
|
||||
initObservers()
|
||||
initError(
|
||||
viewModel = viewModel,
|
||||
@@ -130,20 +127,6 @@ class NaviHelpCenterActivity : BaseActivity(), HeaderInteractionListener, Widget
|
||||
onBackPressed()
|
||||
}
|
||||
|
||||
private fun injectDependencies() {
|
||||
DaggerNaviChatComponent.builder()
|
||||
.context(this)
|
||||
.naviChatModule(NaviChatModule)
|
||||
.appDependencies(
|
||||
EntryPointAccessors.fromApplication(
|
||||
this.applicationContext,
|
||||
NaviChatModuleDependencies::class.java
|
||||
)
|
||||
)
|
||||
.build()
|
||||
.inject(this)
|
||||
}
|
||||
|
||||
override fun onClick(naviClickAction: NaviClickAction, widgetId: String?) {
|
||||
when (naviClickAction) {
|
||||
is ActionData -> {
|
||||
|
||||
@@ -9,6 +9,7 @@ package com.navi.chat.ui.activities
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.navi.analytics.utils.NaviTrackEvent
|
||||
import com.navi.base.deeplink.DeepLinkManager
|
||||
import com.navi.base.model.CtaData
|
||||
@@ -16,9 +17,6 @@ import com.navi.base.model.LineItem
|
||||
import com.navi.base.sharedpref.CommonPrefConstants
|
||||
import com.navi.base.sharedpref.PreferenceManager
|
||||
import com.navi.chat.db.utils.crmEventTracker
|
||||
import com.navi.chat.di.components.DaggerNaviChatComponent
|
||||
import com.navi.chat.di.dependencies.NaviChatModuleDependencies
|
||||
import com.navi.chat.di.modules.NaviChatModule
|
||||
import com.navi.chat.models.TicketDetailsData
|
||||
import com.navi.chat.ui.compose.TicketScreen
|
||||
import com.navi.chat.utils.CONVERSATION_ID
|
||||
@@ -34,9 +32,9 @@ import com.navi.chat.utils.TICKET_CLICKED
|
||||
import com.navi.chat.viewmodels.TicketListViewModel
|
||||
import com.navi.common.model.ModuleNameV2
|
||||
import com.navi.common.ui.activity.BaseActivity
|
||||
import dagger.hilt.android.EntryPointAccessors
|
||||
import javax.inject.Inject
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class NaviTicketViewActivity : BaseActivity() {
|
||||
|
||||
override val screenName: String
|
||||
@@ -45,8 +43,7 @@ class NaviTicketViewActivity : BaseActivity() {
|
||||
override val moduleName: ModuleNameV2
|
||||
get() = ModuleNameV2.CHAT
|
||||
|
||||
@Inject lateinit var viewModel: TicketListViewModel
|
||||
|
||||
private val viewModel by lazy { ViewModelProvider(this)[TicketListViewModel::class.java] }
|
||||
private val userExternalId =
|
||||
PreferenceManager.getStringPreference(CommonPrefConstants.USER_EXTERNAL_ID)
|
||||
|
||||
@@ -59,27 +56,12 @@ class NaviTicketViewActivity : BaseActivity() {
|
||||
ticketListVM = viewModel
|
||||
)
|
||||
}
|
||||
injectDependencies()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
}
|
||||
|
||||
private fun injectDependencies() {
|
||||
DaggerNaviChatComponent.builder()
|
||||
.context(this)
|
||||
.naviChatModule(NaviChatModule)
|
||||
.appDependencies(
|
||||
EntryPointAccessors.fromApplication(
|
||||
this.applicationContext,
|
||||
NaviChatModuleDependencies::class.java
|
||||
)
|
||||
)
|
||||
.build()
|
||||
.inject(this)
|
||||
}
|
||||
|
||||
private fun ticketDetailClick(ticketDetailsData: TicketDetailsData) {
|
||||
val ticketIdFormatted = ticketDetailsData.ticketId.substringAfter(":", "")
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
|
||||
@@ -28,9 +28,6 @@ import com.navi.base.sharedpref.PreferenceManager
|
||||
import com.navi.base.utils.isNotNull
|
||||
import com.navi.chat.R
|
||||
import com.navi.chat.databinding.ActivitySupportScreenBinding
|
||||
import com.navi.chat.di.components.DaggerNaviChatComponent
|
||||
import com.navi.chat.di.dependencies.NaviChatModuleDependencies
|
||||
import com.navi.chat.di.modules.NaviChatModule
|
||||
import com.navi.chat.interfaces.ChatCtaClickListener
|
||||
import com.navi.chat.interfaces.FaqClickListener
|
||||
import com.navi.chat.interfaces.FaqCtaClickListener
|
||||
@@ -83,9 +80,9 @@ import com.navi.design.utils.getNaviDrawable
|
||||
import com.navi.design.utils.setFontStyle
|
||||
import com.navi.naviwidgets.actions.ChatDeepLinkClickAction
|
||||
import com.navi.naviwidgets.extensions.showWhenDataIsAvailable
|
||||
import dagger.hilt.android.EntryPointAccessors
|
||||
import javax.inject.Inject
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class SupportScreenActivity :
|
||||
BaseActivity(),
|
||||
HeaderInteractionListener,
|
||||
@@ -101,7 +98,7 @@ class SupportScreenActivity :
|
||||
override val moduleName: ModuleNameV2
|
||||
get() = ModuleNameV2.CHAT
|
||||
|
||||
@Inject lateinit var viewModel: SupportScreenViewModel
|
||||
private val viewModel by lazy { ViewModelProvider(this)[SupportScreenViewModel::class.java] }
|
||||
private lateinit var binding: ActivitySupportScreenBinding
|
||||
private lateinit var commonBottomSheet: NewCommonBottomSheet
|
||||
private var sourceScreenName: String? = null
|
||||
@@ -120,7 +117,6 @@ class SupportScreenActivity :
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = DataBindingUtil.setContentView(this, R.layout.activity_support_screen)
|
||||
setContentView(binding.root)
|
||||
injectDependencies()
|
||||
initListeners()
|
||||
initObservers()
|
||||
sourceScreenName = intent?.extras?.getString(KEY_SCREEN_NAME)
|
||||
@@ -221,6 +217,7 @@ class SupportScreenActivity :
|
||||
Pair("product", binding.titleTv.text.toString()),
|
||||
Pair("screen_name", sourceScreenName.orEmpty()),
|
||||
Pair("customer_id", userExternalId.toString()),
|
||||
Pair("session_id", getSessionId().orEmpty())
|
||||
)
|
||||
)
|
||||
moveToNextScreen(actionData, bundle)
|
||||
@@ -294,20 +291,6 @@ class SupportScreenActivity :
|
||||
binding.shimmerLayout.startShimmer()
|
||||
}
|
||||
|
||||
private fun injectDependencies() {
|
||||
DaggerNaviChatComponent.builder()
|
||||
.context(this)
|
||||
.naviChatModule(NaviChatModule)
|
||||
.appDependencies(
|
||||
EntryPointAccessors.fromApplication(
|
||||
this.applicationContext,
|
||||
NaviChatModuleDependencies::class.java
|
||||
)
|
||||
)
|
||||
.build()
|
||||
.inject(this)
|
||||
}
|
||||
|
||||
override fun setProperties(header: Header?) {
|
||||
binding.headerView.setProperties(header, this)
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.navi.chat.utils.ToolbarInteraction
|
||||
import com.navi.chat.viewmodels.NaviChatSharedViewModel
|
||||
import com.navi.naviwidgets.extensions.showWhenDataIsAvailable
|
||||
import com.navi.naviwidgets.models.response.ChatLanguages
|
||||
import dagger.hilt.android.internal.managers.ViewComponentManager
|
||||
|
||||
class NaviChatToolbar
|
||||
@JvmOverloads
|
||||
@@ -43,7 +44,19 @@ constructor(
|
||||
private var languageSelected: String? = null
|
||||
private var conversationId: String? = null
|
||||
private val naviChatSharedViewModel by lazy {
|
||||
ViewModelProvider(context as NaviChatActivity)[NaviChatSharedViewModel::class.java]
|
||||
val activityContext = getActivityContext()
|
||||
if (activityContext != null && activityContext is NaviChatActivity) {
|
||||
ViewModelProvider(activityContext)[NaviChatSharedViewModel::class.java]
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
private fun getActivityContext(): Context? {
|
||||
val currentContext = context
|
||||
return if (currentContext is ViewComponentManager.FragmentContextWrapper) {
|
||||
currentContext.baseContext
|
||||
} else currentContext
|
||||
}
|
||||
|
||||
init {
|
||||
@@ -133,7 +146,7 @@ constructor(
|
||||
) {
|
||||
setSelectedLanguage(languageKeys[position])
|
||||
if (position != selectedItemPosition) {
|
||||
naviChatSharedViewModel.setLanguageSelected(true)
|
||||
naviChatSharedViewModel?.setLanguageSelected(true)
|
||||
languages[position]?.let {
|
||||
crmEventTracker.sendEvent(
|
||||
LANGUAGE_SELECTION_CLICK,
|
||||
|
||||
@@ -38,6 +38,7 @@ import androidx.compose.ui.platform.LocalLifecycleOwner
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.constraintlayout.compose.ConstraintLayout
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
@@ -60,7 +61,7 @@ import kotlinx.coroutines.launch
|
||||
|
||||
@Composable
|
||||
fun TicketScreen(
|
||||
ticketListVM: TicketListViewModel,
|
||||
ticketListVM: TicketListViewModel = hiltViewModel(),
|
||||
onBackPress: () -> Unit = {},
|
||||
onTicketClick: TicketDetailsData.() -> Unit
|
||||
) {
|
||||
|
||||
@@ -24,9 +24,6 @@ import com.navi.chat.R
|
||||
import com.navi.chat.adapters.ChatAttachmentOptionAdapter
|
||||
import com.navi.chat.common.fragment.BaseBottomSheet
|
||||
import com.navi.chat.databinding.ChatAttachmentBottomSheetBinding
|
||||
import com.navi.chat.di.components.DaggerNaviChatComponent
|
||||
import com.navi.chat.di.dependencies.NaviChatModuleDependencies
|
||||
import com.navi.chat.di.modules.NaviChatModule
|
||||
import com.navi.chat.interfaces.AttachmentOptionClickListener
|
||||
import com.navi.chat.interfaces.ChatAttachmentOptionsInterface
|
||||
import com.navi.chat.models.ChatAttachmentData
|
||||
@@ -41,10 +38,11 @@ import com.navi.chat.utils.NaviChatAnalytics.Companion.CHAT_ATTACHMENT_BOTTOM_SH
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.FILE_ATTACHMENT_CLICK
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.MEDIA_FILE_ATTACHMENT_CLICK
|
||||
import com.navi.chat.viewmodels.AttachmentPickerViewModel
|
||||
import dagger.hilt.android.EntryPointAccessors
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
|
||||
@AndroidEntryPoint
|
||||
class ChatAttachmentBottomSheet : BaseBottomSheet(), ChatAttachmentOptionsInterface {
|
||||
|
||||
private lateinit var binding: ChatAttachmentBottomSheetBinding
|
||||
@@ -72,18 +70,6 @@ class ChatAttachmentBottomSheet : BaseBottomSheet(), ChatAttachmentOptionsInterf
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
DaggerNaviChatComponent.builder()
|
||||
.context(requireContext())
|
||||
.naviChatModule(NaviChatModule)
|
||||
.appDependencies(
|
||||
EntryPointAccessors.fromApplication(
|
||||
requireContext().applicationContext,
|
||||
NaviChatModuleDependencies::class.java
|
||||
)
|
||||
)
|
||||
.build()
|
||||
.inject(this)
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
|
||||
launch {
|
||||
attachmentPickerViewModel.dismissBottomSheetDialog.collect {
|
||||
|
||||
@@ -33,9 +33,6 @@ import com.navi.chat.R
|
||||
import com.navi.chat.adapters.RecentSearchOptionAdapter
|
||||
import com.navi.chat.databinding.FragmentFaqSearchBinding
|
||||
import com.navi.chat.db.utils.crmEventTracker
|
||||
import com.navi.chat.di.components.DaggerNaviChatComponent
|
||||
import com.navi.chat.di.dependencies.NaviChatModuleDependencies
|
||||
import com.navi.chat.di.modules.NaviChatModule
|
||||
import com.navi.chat.interfaces.ChatCtaClickListener
|
||||
import com.navi.chat.interfaces.FaqClickListener
|
||||
import com.navi.chat.interfaces.FaqCtaClickListener
|
||||
@@ -62,11 +59,11 @@ import com.navi.common.utils.hideKeyboard
|
||||
import com.navi.common.utils.observeNonNull
|
||||
import com.navi.design.utils.underlinedText
|
||||
import com.navi.naviwidgets.extensions.showWhenDataIsAvailable
|
||||
import dagger.hilt.android.EntryPointAccessors
|
||||
import javax.inject.Inject
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@AndroidEntryPoint
|
||||
class FaqSearchFragment : BaseFragment(), RecentSearchClickInterface, HeaderInteractionListener {
|
||||
private lateinit var binding: FragmentFaqSearchBinding
|
||||
private lateinit var supportScreenFaqListAdapter: SupportScreenFaqAdapter
|
||||
@@ -85,7 +82,7 @@ class FaqSearchFragment : BaseFragment(), RecentSearchClickInterface, HeaderInte
|
||||
ViewModelProvider(requireActivity())[SupportScreenSharedViewModel::class.java]
|
||||
}
|
||||
|
||||
@Inject lateinit var viewModel: FaqSearchScreenViewModel
|
||||
private val viewModel by lazy { ViewModelProvider(this)[FaqSearchScreenViewModel::class.java] }
|
||||
|
||||
override fun onAttach(context: Context) {
|
||||
super.onAttach(context)
|
||||
@@ -114,17 +111,6 @@ class FaqSearchFragment : BaseFragment(), RecentSearchClickInterface, HeaderInte
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
DaggerNaviChatComponent.builder()
|
||||
.context(requireContext())
|
||||
.naviChatModule(NaviChatModule)
|
||||
.appDependencies(
|
||||
EntryPointAccessors.fromApplication(
|
||||
requireContext().applicationContext,
|
||||
NaviChatModuleDependencies::class.java
|
||||
)
|
||||
)
|
||||
.build()
|
||||
.inject(this)
|
||||
readArguments()
|
||||
binding.searchEt.requestFocus()
|
||||
openKeyboard(binding.searchEt) {}
|
||||
|
||||
@@ -65,9 +65,6 @@ import com.navi.chat.db.utils.getLanguageSelectedResponse
|
||||
import com.navi.chat.db.utils.getNaviChatResolutionStatusResponse
|
||||
import com.navi.chat.db.utils.getNaviChatUserCsatResponse
|
||||
import com.navi.chat.db.utils.getTimerExpiredResponse
|
||||
import com.navi.chat.di.components.DaggerNaviChatComponent
|
||||
import com.navi.chat.di.dependencies.NaviChatModuleDependencies
|
||||
import com.navi.chat.di.modules.NaviChatModule
|
||||
import com.navi.chat.interfaces.ChatConversationIdListenerInterface
|
||||
import com.navi.chat.interfaces.ChatTopBackButtonClickListener
|
||||
import com.navi.chat.models.ChatDataProviderModel
|
||||
@@ -128,7 +125,7 @@ import com.navi.naviwidgets.models.NaviTextComponent
|
||||
import com.navi.naviwidgets.models.response.*
|
||||
import com.navi.naviwidgets.utils.*
|
||||
import com.navi.naviwidgets.viewholder.NaviChatViewHolderFactoryImpl
|
||||
import dagger.hilt.android.EntryPointAccessors
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
@@ -141,9 +138,9 @@ import kotlinx.coroutines.launch
|
||||
import org.joda.time.DateTime
|
||||
import timber.log.Timber
|
||||
|
||||
@AndroidEntryPoint
|
||||
class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, ToolbarInteraction {
|
||||
|
||||
@Inject lateinit var naviChatViewModel: NaviChatViewModel
|
||||
@Inject lateinit var fireStoreDataProvider: FireStoreDataProvider
|
||||
@Inject lateinit var fileUploadManager: FileUploadManager
|
||||
@Inject lateinit var fileHelper: ChatFileHelper
|
||||
@@ -180,6 +177,7 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
|
||||
private val crmEventTracker = NaviChatAnalytics.naviChatAnalytics.CRM()
|
||||
private val botMessageList = ArrayList<NaviChatWidget>()
|
||||
private val fileSizes = HashMap<String, Int>()
|
||||
private val naviChatViewModel by lazy { ViewModelProvider(this)[NaviChatViewModel::class.java] }
|
||||
private val attachmentPickerViewModel by lazy {
|
||||
ViewModelProvider(requireActivity())[AttachmentPickerViewModel::class.java]
|
||||
}
|
||||
@@ -204,17 +202,6 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
|
||||
private val genericChatErrorOnRetryClick = View.OnClickListener { fetchChatData() }
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
DaggerNaviChatComponent.builder()
|
||||
.context(requireContext())
|
||||
.naviChatModule(NaviChatModule)
|
||||
.appDependencies(
|
||||
EntryPointAccessors.fromApplication(
|
||||
requireContext().applicationContext,
|
||||
NaviChatModuleDependencies::class.java
|
||||
)
|
||||
)
|
||||
.build()
|
||||
.inject(this)
|
||||
initError(
|
||||
viewModel = naviChatViewModel,
|
||||
dialogDismissClicked = { fetchChatData() },
|
||||
|
||||
@@ -25,7 +25,9 @@ import com.navi.chat.models.response.QuestionAnswerList
|
||||
import com.navi.chat.ui.adapters.SupportScreenFaqAdapter
|
||||
import com.navi.chat.viewmodels.SupportScreenSharedViewModel
|
||||
import com.navi.common.ui.fragment.BaseFragment
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class SupportScreenFaqFragment : BaseFragment() {
|
||||
|
||||
private lateinit var binding: FragmentSupportScreenFaqBinding
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.navi.chat.utils.FAQ_SEARCH_QUERY_MIN_LENGTH
|
||||
import com.navi.chat.utils.FAQ_SEARCH_THRESHOLD_LIMIT
|
||||
import com.navi.common.utils.log
|
||||
import com.navi.common.viewmodel.BaseVM
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.FlowPreview
|
||||
@@ -30,6 +31,7 @@ import kotlinx.coroutines.flow.onStart
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
@HiltViewModel
|
||||
class FaqSearchScreenViewModel
|
||||
@Inject
|
||||
constructor(private val naviChatRepository: NaviChatRepository) : BaseVM() {
|
||||
|
||||
@@ -30,9 +30,11 @@ import com.navi.naviwidgets.validations.ValidationJsonDeserializer
|
||||
import com.navi.naviwidgets.widgets.NaviWidgetJsonDeserializer
|
||||
import com.navi.naviwidgets.widgets.NaviWidgetJsonSerializer
|
||||
import com.navi.naviwidgets.widgets.ParameterValueJsonDeserializer
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@HiltViewModel
|
||||
class HelpCenterViewModel
|
||||
@Inject
|
||||
constructor(
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.navi.base.utils.isNotNullAndNotEmpty
|
||||
import com.navi.base.utils.orZero
|
||||
import com.navi.chat.db.utils.crmEventTracker
|
||||
import com.navi.chat.db.utils.getDisplayableMessages
|
||||
import com.navi.chat.di.scopes.NaviChatScope
|
||||
import com.navi.chat.models.ChatActivityRedirectionConstructedResponse
|
||||
import com.navi.chat.models.ChatConfigConstructedResponse
|
||||
import com.navi.chat.models.ChatConfigResponse
|
||||
@@ -50,6 +49,8 @@ import com.navi.naviwidgets.utils.getCalendarDate
|
||||
import com.navi.naviwidgets.utils.getCalendarMonth
|
||||
import com.navi.naviwidgets.utils.getCalendarYear
|
||||
import com.navi.naviwidgets.utils.isDateSameWithCurrentDay
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
@@ -59,12 +60,12 @@ import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
@NaviChatScope
|
||||
@HiltViewModel
|
||||
class NaviChatViewModel
|
||||
@Inject
|
||||
constructor(
|
||||
private val naviChatRepository: NaviChatRepository,
|
||||
private val context: Context,
|
||||
@ApplicationContext private val context: Context,
|
||||
private val connectivityObserver: ConnectivityObserver
|
||||
) : BaseVM(), FileDownloadManager.StatusCallBack {
|
||||
|
||||
|
||||
@@ -28,9 +28,11 @@ import com.navi.naviwidgets.validations.BaseInputValidation
|
||||
import com.navi.naviwidgets.validations.ValidationJsonDeserializer
|
||||
import com.navi.naviwidgets.widgets.NaviWidgetJsonDeserializer
|
||||
import com.navi.naviwidgets.widgets.ParameterValueJsonDeserializer
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@HiltViewModel
|
||||
class SupportScreenViewModel
|
||||
@Inject
|
||||
constructor(
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.navi.chat.repositories.NaviChatRepository
|
||||
import com.navi.chat.repositories.TicketsListSource
|
||||
import com.navi.common.utils.log
|
||||
import com.navi.common.viewmodel.BaseVM
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
@@ -24,6 +25,7 @@ import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@HiltViewModel
|
||||
class TicketListViewModel @Inject constructor(private val naviChatRepository: NaviChatRepository) :
|
||||
BaseVM() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user