Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @AndroidEntryPoint
- class ChatFragment : Fragment(), InputListener {
- private var _binding: FragmentChatBinding? = null
- private val binding get() = _binding!!
- private val args by navArgs<ChatFragmentArgs>()
- private val viewModel: ChatViewModel by viewModels()
- private lateinit var messageListAdapter: MessagesListAdapter<KitMessage>
- private var ecosystemRepository: EcosystemRepository? = null
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View {
- _binding = FragmentChatBinding.inflate(inflater, container, false)
- return binding.root
- }
- override fun onStart() {
- super.onStart()
- if (ecosystemRepository?.getSubscriptionPurchased() == true)
- binding.buttonPremium.hide()
- }
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
- initViews()
- subscribeToObservers()
- initEcoSystem()
- }
- override fun onOptionsItemSelected(item: MenuItem): Boolean {
- return when (item.itemId) {
- R.id.menu_settings -> {
- findNavController().navigate(R.id.settingsFragment)
- true
- }
- else -> super.onOptionsItemSelected(item)
- }
- }
- private fun initToolbar() {
- binding.toolbarChat.apply {
- inflateMenu(R.menu.menu_main)
- setOnMenuItemClickListener {
- onOptionsItemSelected(it)
- }
- setNavigationOnClickListener {
- binding.root.hideKeyboard()
- findNavController().popBackStack()
- }
- }
- }
- private fun initViews() {
- initToolbar()
- initGirl()
- initMessageListAdapter()
- initMessageInput()
- initHistoryMessages()
- initPremium()
- }
- private fun initPremium() {
- binding.apply {
- buttonPremium.setOnClickListener {
- ecosystemRepository?.setOfferPlace(VALUE_PREMIUM)
- logEvent(EVENT_CLICK_ON_PREMIUM_BUTTON)
- }
- }
- }
- private fun initGirl() {
- val girl = args.currentDialog.users[KIT_GIRL_INDEX]
- binding.apply {
- girlName.text = girl.name
- avatar.loadResizedImage(girl.avatar)
- }
- }
- private fun initHistoryMessages() {
- val dialogId = args.currentDialog.id
- val historyMessages = viewModel.getDialogListOfMessagesById(dialogId)
- messageListAdapter.addToEnd(historyMessages, false)
- }
- private fun initMessageListAdapter() {
- val holdersConfig = MessageHolders()
- .setIncomingTextConfig(
- CustomIncomingTextMessageViewHolder::class.java,
- R.layout.item_custom_incoming_text_message
- )
- .setOutcomingTextConfig(
- CustomOutcomingTextMessageViewHolder::class.java,
- R.layout.item_custom_outcoming_text_message
- )
- messageListAdapter = MessagesListAdapter<KitMessage>(USER_ID, holdersConfig, null)
- binding.messagesList.setAdapter(messageListAdapter)
- }
- private fun subscribeToObservers() {
- val girl = args.currentDialog.users[KIT_GIRL_INDEX]
- /*viewModel.girlBotReply.observe(viewLifecycleOwner, { message ->
- message ?: binding.input.showSnackbar(getString(R.string.internet_problem), 2000)
- if (message != null) {
- val kitGirlMessage = KitMessage(
- id = girl.id,
- kitUser = girl,
- text = message
- )
- messageListAdapter.addToStart(kitGirlMessage, true)
- viewModel.saveDialogListOfMessagesById(args.currentDialog.id, kitGirlMessage)
- }
- })*/
- viewModel.uploadGirlBotReply.observe(viewLifecycleOwner, { message->
- message ?: binding.input.showSnackbar(getString(R.string.internet_problem), 2000)
- Timber.e("message $message")
- if (message != null) {
- val kitGirlMessage = KitMessage(
- id = girl.id,
- kitUser = girl,
- text = message
- )
- messageListAdapter.addToStart(kitGirlMessage, true)
- viewModel.saveDialogListOfMessagesById(args.currentDialog.id, kitGirlMessage)
- }
- })
- viewModel.dialogMessages.observe(viewLifecycleOwner, {
- viewModel.saveDialogListOfMessagesById(args.currentDialog.id, it)
- })
- }
- private fun initMessageInput() {
- binding.input.setInputListener(this)
- }
- private fun initEcoSystem() {
- ecosystemRepository =
- EcosystemDependencyFactory.provideEcosystemRepository(requireActivity().applicationContext)
- }
- override fun onSubmit(input: CharSequence): Boolean {
- val currentKitMessage = args.currentDialog.lastMessage
- val user = args.currentDialog.users[KIT_USER_INDEX]
- val girl = args.currentDialog.users[KIT_GIRL_INDEX]
- val newKitMessage = KitMessage(
- id = currentKitMessage.id,
- kitUser = user,
- text = input.toString()
- )
- messageListAdapter.addToStart(
- newKitMessage, true
- )
- viewModel.getGirlfriendBotReply(girl.id, newKitMessage)
- viewModel.setDialogMessages(newKitMessage)
- return true
- }
- override fun onDestroy() {
- super.onDestroy()
- _binding = null
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement