From b9f387a6267af2a9d95e6169341f3ec20765da59 Mon Sep 17 00:00:00 2001 From: shaulascr Date: Thu, 29 May 2025 02:49:02 +0700 Subject: [PATCH] delete chatliststore and chatstoreadapter --- .../mystore/chat/ChatListStoreFragment.kt | 96 ----------- .../profile/mystore/chat/ChatStoreAdapter.kt | 152 ------------------ 2 files changed, 248 deletions(-) delete mode 100644 app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/chat/ChatListStoreFragment.kt delete mode 100644 app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/chat/ChatStoreAdapter.kt diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/chat/ChatListStoreFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/chat/ChatListStoreFragment.kt deleted file mode 100644 index 3e8e0b6..0000000 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/chat/ChatListStoreFragment.kt +++ /dev/null @@ -1,96 +0,0 @@ -//package com.alya.ecommerce_serang.ui.profile.mystore.chat -// -//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.fragment.app.viewModels -//import com.alya.ecommerce_serang.data.api.retrofit.ApiConfig -//import com.alya.ecommerce_serang.data.repository.ChatRepository -//import com.alya.ecommerce_serang.data.repository.Result -//import com.alya.ecommerce_serang.databinding.FragmentChatListBinding -//import com.alya.ecommerce_serang.ui.chat.ChatViewModel -//import com.alya.ecommerce_serang.ui.chat.SocketIOService -//import com.alya.ecommerce_serang.utils.BaseViewModelFactory -//import com.alya.ecommerce_serang.utils.SessionManager -// -//class ChatListStoreFragment : Fragment() { -// -// private var _binding: FragmentChatListBinding? = null -// -// private val binding get() = _binding!! -// private lateinit var socketService: SocketIOService -// private lateinit var sessionManager: SessionManager -// -// private val viewModel: com.alya.ecommerce_serang.ui.chat.ChatViewModel by viewModels { -// BaseViewModelFactory { -// val apiService = ApiConfig.getApiService(sessionManager) -// val chatRepository = ChatRepository(apiService) -// ChatViewModel(chatRepository, socketService, sessionManager) -// } -// } -// override fun onCreate(savedInstanceState: Bundle?) { -// super.onCreate(savedInstanceState) -// sessionManager = SessionManager(requireContext()) -// socketService = SocketIOService(sessionManager) -// -// } -// -// override fun onCreateView( -// inflater: LayoutInflater, container: ViewGroup?, -// savedInstanceState: Bundle? -// ): View { -// _binding = FragmentChatListBinding.inflate(inflater, container, false) -// return _binding!!.root -// } -// -// override fun onViewCreated(view: View, savedInstanceState: Bundle?) { -// super.onViewCreated(view, savedInstanceState) -// -// viewModel.getChatListStore() -// observeChatList() -// } -// -// private fun observeChatList() { -// viewModel.chatListStore.observe(viewLifecycleOwner) { result -> -// when (result) { -// is Result.Success -> { -// val adapter = ChatListAdapter(result.data) { chatItem -> -// // Use the ChatActivity.createIntent factory method for proper navigation -// ChatStoreActivity.createIntent( -// context = requireActivity(), -// storeId = chatItem.storeId, -// productId = 0, // Default value since we don't have it in ChatListItem -// productName = null, // Null is acceptable as per ChatActivity -// productPrice = "", -// productImage = null, -// productRating = null, -// storeName = chatItem.storeName, -// chatRoomId = chatItem.chatRoomId, -// storeImage = chatItem.storeImage -// ) -// } -// binding.chatListRecyclerView.adapter = adapter -// } -// is Result.Error -> { -// Toast.makeText(requireContext(), "Failed to load chats", Toast.LENGTH_SHORT).show() -// } -// Result.Loading -> { -// // Optional: show progress bar -// } -// } -// } -// } -// -// -// override fun onDestroyView() { -// super.onDestroyView() -// _binding = null -// } -// -// companion object{ -// -// } -//} \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/chat/ChatStoreAdapter.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/chat/ChatStoreAdapter.kt deleted file mode 100644 index 8fcc2b9..0000000 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/chat/ChatStoreAdapter.kt +++ /dev/null @@ -1,152 +0,0 @@ -package com.alya.ecommerce_serang.ui.profile.mystore.chat - -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.recyclerview.widget.DiffUtil -import androidx.recyclerview.widget.ListAdapter -import androidx.recyclerview.widget.RecyclerView -import com.alya.ecommerce_serang.BuildConfig.BASE_URL -import com.alya.ecommerce_serang.R -import com.alya.ecommerce_serang.databinding.ItemMessageReceivedBinding -import com.alya.ecommerce_serang.databinding.ItemMessageSentBinding -import com.alya.ecommerce_serang.ui.chat.ChatUiMessage -import com.alya.ecommerce_serang.utils.Constants -import com.bumptech.glide.Glide - -class ChatStoreAdapter : ListAdapter(ChatMessageDiffCallback()) { - - companion object { - private const val VIEW_TYPE_MESSAGE_SENT = 1 - private const val VIEW_TYPE_MESSAGE_RECEIVED = 2 - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return if (viewType == VIEW_TYPE_MESSAGE_SENT) { - val binding = ItemMessageSentBinding.inflate( - LayoutInflater.from(parent.context), - parent, - false - ) - SentMessageViewHolder(binding) - } else { - val binding = ItemMessageReceivedBinding.inflate( - LayoutInflater.from(parent.context), - parent, - false - ) - ReceivedMessageViewHolder(binding) - } - } - - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - val message = getItem(position) - - when (holder.itemViewType) { - VIEW_TYPE_MESSAGE_SENT -> (holder as SentMessageViewHolder).bind(message) - VIEW_TYPE_MESSAGE_RECEIVED -> (holder as ReceivedMessageViewHolder).bind(message) - } - } - - override fun getItemViewType(position: Int): Int { - val message = getItem(position) - return if (message.isSentByMe) { - VIEW_TYPE_MESSAGE_SENT - } else { - VIEW_TYPE_MESSAGE_RECEIVED - } - } - - /** - * ViewHolder for messages sent by the current user - */ - inner class SentMessageViewHolder(private val binding: ItemMessageSentBinding) : - RecyclerView.ViewHolder(binding.root) { - - fun bind(message: ChatUiMessage) { - binding.tvMessage.text = message.message - binding.tvTimestamp.text = message.time - - // Show message status - val statusIcon = when (message.status) { - Constants.STATUS_SENT -> R.drawable.check_single_24 - Constants.STATUS_DELIVERED -> R.drawable.check_double_24 - Constants.STATUS_READ -> R.drawable.check_double_read_24 - else -> R.drawable.check_single_24 - } - binding.imgStatus.setImageResource(statusIcon) - - // Handle attachment if exists - if (message.attachment?.isNotEmpty() == true) { - binding.imgAttachment.visibility = View.VISIBLE - - val fullImageUrl = when (val img = message.attachment) { - is String -> { - if (img.startsWith("/")) BASE_URL + img.substring(1) else img - } - else -> R.drawable.placeholder_image - } - - Glide.with(binding.root.context) - .load(fullImageUrl) - .centerCrop() - .placeholder(R.drawable.placeholder_image) - .error(R.drawable.placeholder_image) - .into(binding.imgAttachment) - } else { - binding.imgAttachment.visibility = View.GONE - } - } - } - - /** - * ViewHolder for messages received from other users - */ - inner class ReceivedMessageViewHolder(private val binding: ItemMessageReceivedBinding) : - RecyclerView.ViewHolder(binding.root) { - - fun bind(message: ChatUiMessage) { - binding.tvMessage.text = message.message - binding.tvTimestamp.text = message.time - - // Handle attachment if exists - val fullImageUrl = when (val img = message.attachment) { - is String -> { - if (img.startsWith("/")) BASE_URL + img.substring(1) else img - } - else -> R.drawable.placeholder_image - } - - if (message.attachment?.isNotEmpty() == true) { - binding.imgAttachment.visibility = View.VISIBLE - Glide.with(binding.root.context) - .load(fullImageUrl) - .centerCrop() - .placeholder(R.drawable.placeholder_image) - .error(R.drawable.placeholder_image) - .into(binding.imgAttachment) - } else { - binding.imgAttachment.visibility = View.GONE - } - - // Load avatar image - Glide.with(binding.root.context) - .load(R.drawable.placeholder_image) // Replace with actual avatar URL if available - .circleCrop() - .into(binding.imgAvatar) - } - } -} - -/** - * DiffUtil callback for optimizing RecyclerView updates - */ -class ChatMessageDiffCallback : DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: ChatUiMessage, newItem: ChatUiMessage): Boolean { - return oldItem.id == newItem.id - } - - override fun areContentsTheSame(oldItem: ChatUiMessage, newItem: ChatUiMessage): Boolean { - return oldItem == newItem - } -} \ No newline at end of file