New cache system
Refactoring Separation into libraries
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
package com.meloda.fast.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.ProgressBar
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.meloda.concurrent.TaskManager
|
||||
import com.meloda.fast.R
|
||||
import com.meloda.fast.adapter.ConversationsAdapterDeprecated
|
||||
import com.meloda.fast.base.BaseFragment
|
||||
import com.meloda.fast.database.CacheStorage
|
||||
import com.meloda.fast.widget.Toolbar
|
||||
import com.meloda.vksdk.OnResponseListener
|
||||
import com.meloda.vksdk.VKApi
|
||||
import com.meloda.vksdk.VKConstants
|
||||
import com.meloda.vksdk.model.VKConversation
|
||||
import com.meloda.vksdk.model.VKMessage
|
||||
|
||||
class ChatsFragment : BaseFragment() {
|
||||
|
||||
private lateinit var toolbar: Toolbar
|
||||
private lateinit var progressBar: ProgressBar
|
||||
private lateinit var recyclerView: RecyclerView
|
||||
private lateinit var refreshLayout: SwipeRefreshLayout
|
||||
|
||||
private lateinit var noItemsView: LinearLayout
|
||||
private lateinit var noInternetView: LinearLayout
|
||||
private lateinit var errorView: LinearLayout
|
||||
|
||||
private lateinit var adapter: ConversationsAdapterDeprecated
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
return inflater.inflate(R.layout.fragment_conversations, container, false)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
initViews()
|
||||
prepareViews()
|
||||
|
||||
createAdapter()
|
||||
|
||||
loadConversations()
|
||||
}
|
||||
|
||||
private fun initViews() {
|
||||
toolbar = requireView().findViewById(R.id.toolbar)
|
||||
progressBar = requireView().findViewById(R.id.progressBar)
|
||||
recyclerView = requireView().findViewById(R.id.recyclerView)
|
||||
refreshLayout = requireView().findViewById(R.id.refreshLayout)
|
||||
|
||||
noItemsView = requireView().findViewById(R.id.noItemsView)
|
||||
noInternetView = requireView().findViewById(R.id.noInternetView)
|
||||
errorView = requireView().findViewById(R.id.errorView)
|
||||
}
|
||||
|
||||
private fun prepareViews() {
|
||||
prepareRecyclerView()
|
||||
}
|
||||
|
||||
private fun prepareRecyclerView() {
|
||||
val manager = LinearLayoutManager(requireContext(), RecyclerView.VERTICAL, false)
|
||||
|
||||
recyclerView.layoutManager = manager
|
||||
}
|
||||
|
||||
private fun createAdapter() {
|
||||
adapter = ConversationsAdapterDeprecated(recyclerView, arrayListOf())
|
||||
recyclerView.adapter = adapter
|
||||
}
|
||||
|
||||
private fun loadConversations() {
|
||||
TaskManager.execute {
|
||||
VKApi.messages()
|
||||
.getConversations()
|
||||
.filter("all")
|
||||
.extended(true)
|
||||
.fields(VKConstants.USER_FIELDS)
|
||||
.offset(0)
|
||||
.count(30)
|
||||
.executeArray(
|
||||
VKConversation::class.java,
|
||||
object : OnResponseListener<ArrayList<VKConversation>> {
|
||||
override fun onResponse(response: ArrayList<VKConversation>) {
|
||||
TaskManager.execute {
|
||||
CacheStorage.chatsStorage.insertValues(response)
|
||||
|
||||
val lastMessages = arrayListOf<VKMessage>()
|
||||
response.forEach { lastMessages.add(it.lastMessage) }
|
||||
|
||||
CacheStorage.messagesStorage.insertValues(lastMessages)
|
||||
CacheStorage.usersStorage.insertValues(VKConversation.profiles)
|
||||
CacheStorage.groupsStorage.insertValues(VKConversation.groups)
|
||||
}
|
||||
|
||||
adapter.updateValues(response)
|
||||
adapter.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
override fun onError(t: Throwable) {
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,22 +13,18 @@ import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.meloda.concurrent.EventInfo
|
||||
import com.meloda.concurrent.TaskManager
|
||||
import com.meloda.fast.R
|
||||
import com.meloda.fast.UserConfig
|
||||
import com.meloda.fast.activity.MessagesActivityDeprecated
|
||||
import com.meloda.fast.api.UserConfig
|
||||
import com.meloda.fast.api.VKApiKeys
|
||||
import com.meloda.fast.base.BaseFragment
|
||||
import com.meloda.fast.common.AppGlobal
|
||||
import com.meloda.fast.common.TaskManager
|
||||
import com.meloda.fast.event.EventInfo
|
||||
import com.meloda.fast.extensions.FragmentExtensions.findViewById
|
||||
import com.meloda.fast.extensions.FragmentExtensions.runOnUiThread
|
||||
import com.meloda.fast.fragment.ui.presenter.ConversationsPresenterDeprecated
|
||||
import com.meloda.fast.fragment.ui.view.ConversationsViewDeprecated
|
||||
import com.meloda.fast.util.AndroidUtils
|
||||
import com.meloda.fast.util.ViewUtils
|
||||
import com.meloda.fast.widget.Toolbar
|
||||
|
||||
import com.meloda.vksdk.VKApiKeys
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
class FragmentConversationsDeprecated : BaseFragment(), ConversationsViewDeprecated {
|
||||
@@ -62,14 +58,14 @@ class FragmentConversationsDeprecated : BaseFragment(), ConversationsViewDepreca
|
||||
}
|
||||
|
||||
private fun initViews() {
|
||||
toolbar = findViewById(R.id.toolbar)
|
||||
recyclerView = findViewById(R.id.recyclerView)
|
||||
refreshLayout = findViewById(R.id.refreshLayout)
|
||||
progressBar = findViewById(R.id.progressBar)
|
||||
toolbar = requireView().findViewById(R.id.toolbar)
|
||||
recyclerView = requireView().findViewById(R.id.recyclerView)
|
||||
refreshLayout = requireView().findViewById(R.id.refreshLayout)
|
||||
progressBar = requireView().findViewById(R.id.progressBar)
|
||||
|
||||
noItemsView = findViewById(R.id.noItemsView)
|
||||
noInternetView = findViewById(R.id.noInternetView)
|
||||
errorView = findViewById(R.id.errorView)
|
||||
noItemsView = requireView().findViewById(R.id.noItemsView)
|
||||
noInternetView = requireView().findViewById(R.id.noInternetView)
|
||||
errorView = requireView().findViewById(R.id.errorView)
|
||||
}
|
||||
|
||||
private fun prepareToolbar() {
|
||||
@@ -79,7 +75,7 @@ class FragmentConversationsDeprecated : BaseFragment(), ConversationsViewDepreca
|
||||
|
||||
TaskManager.addOnEventListener(object : TaskManager.OnEventListener {
|
||||
override fun onNewEvent(info: EventInfo<*>) {
|
||||
if (info.key == VKApiKeys.UPDATE_USER) {
|
||||
if (info.key == VKApiKeys.UPDATE_USER.name) {
|
||||
val userIds = info.data as ArrayList<Int>
|
||||
|
||||
if (userIds.contains(UserConfig.userId)) {
|
||||
@@ -100,7 +96,12 @@ class FragmentConversationsDeprecated : BaseFragment(), ConversationsViewDepreca
|
||||
val decoration = DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
|
||||
|
||||
decoration.setDrawable(
|
||||
ColorDrawable(AndroidUtils.getThemeAttrColor(requireContext(), R.attr.dividerHorizontal))
|
||||
ColorDrawable(
|
||||
AndroidUtils.getThemeAttrColor(
|
||||
requireContext(),
|
||||
R.attr.dividerHorizontal
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
recyclerView.itemAnimator = null
|
||||
@@ -111,18 +112,22 @@ class FragmentConversationsDeprecated : BaseFragment(), ConversationsViewDepreca
|
||||
|
||||
private fun setProfileAvatar() {
|
||||
TaskManager.execute {
|
||||
AppGlobal.database.users.getById(UserConfig.userId)?.let {
|
||||
if (it.photo100.isNotEmpty()) {
|
||||
runOnUiThread {
|
||||
toolbar.getAvatar().setImageURI(it.photo100)
|
||||
}
|
||||
}
|
||||
}
|
||||
// AppGlobal.database.users.getById(UserConfig.userId)?.let {
|
||||
// if (it.photo100.isNotEmpty()) {
|
||||
// runOnUiThread {
|
||||
// toolbar.getAvatar().setImageURI(it.photo100)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
override fun openChat(extras: Bundle) {
|
||||
startActivity(Intent(requireContext(), MessagesActivityDeprecated::class.java).putExtras(extras))
|
||||
startActivity(
|
||||
Intent(requireContext(), MessagesActivityDeprecated::class.java).putExtras(
|
||||
extras
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun showErrorSnackbar(t: Throwable) {
|
||||
|
||||
@@ -14,21 +14,20 @@ import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.meloda.concurrent.EventInfo
|
||||
import com.meloda.concurrent.TaskManager
|
||||
import com.meloda.fast.R
|
||||
import com.meloda.fast.UserConfig
|
||||
import com.meloda.fast.activity.MessagesActivityDeprecated
|
||||
import com.meloda.fast.api.UserConfig
|
||||
import com.meloda.fast.api.VKApiKeys
|
||||
import com.meloda.fast.base.BaseFragment
|
||||
import com.meloda.fast.common.AppGlobal
|
||||
import com.meloda.fast.common.TaskManager
|
||||
import com.meloda.fast.event.EventInfo
|
||||
import com.meloda.fast.extensions.FragmentExtensions.findViewById
|
||||
import com.meloda.fast.fragment.ui.presenter.FriendsPresenterDeprecated
|
||||
import com.meloda.fast.fragment.ui.view.FriendsViewDeprecated
|
||||
import com.meloda.fast.util.ViewUtils
|
||||
import com.meloda.fast.widget.Toolbar
|
||||
import com.meloda.vksdk.VKApiKeys
|
||||
|
||||
class FragmentFriendsDeprecated(private val userId: Int = 0) : BaseFragment(), FriendsViewDeprecated {
|
||||
class FragmentFriendsDeprecated(private val userId: Int = 0) : BaseFragment(),
|
||||
FriendsViewDeprecated {
|
||||
|
||||
private lateinit var presenterDeprecated: FriendsPresenterDeprecated
|
||||
|
||||
@@ -61,14 +60,14 @@ class FragmentFriendsDeprecated(private val userId: Int = 0) : BaseFragment(), F
|
||||
}
|
||||
|
||||
private fun initViews() {
|
||||
toolbar = findViewById(R.id.toolbar)
|
||||
recyclerView = findViewById(R.id.recyclerView)
|
||||
refreshLayout = findViewById(R.id.refreshLayout)
|
||||
progressBar = findViewById(R.id.progressBar)
|
||||
toolbar = requireView().findViewById(R.id.toolbar)
|
||||
recyclerView = requireView().findViewById(R.id.recyclerView)
|
||||
refreshLayout = requireView().findViewById(R.id.refreshLayout)
|
||||
progressBar = requireView().findViewById(R.id.progressBar)
|
||||
|
||||
noItemsView = findViewById(R.id.noItemsView)
|
||||
noInternetView = findViewById(R.id.noInternetView)
|
||||
errorView = findViewById(R.id.errorView)
|
||||
noItemsView = requireView().findViewById(R.id.noItemsView)
|
||||
noInternetView = requireView().findViewById(R.id.noInternetView)
|
||||
errorView = requireView().findViewById(R.id.errorView)
|
||||
}
|
||||
|
||||
private fun prepareToolbar() {
|
||||
@@ -80,7 +79,7 @@ class FragmentFriendsDeprecated(private val userId: Int = 0) : BaseFragment(), F
|
||||
|
||||
TaskManager.addOnEventListener(object : TaskManager.OnEventListener {
|
||||
override fun onNewEvent(info: EventInfo<*>) {
|
||||
if (info.key == VKApiKeys.UPDATE_USER) {
|
||||
if (info.key == VKApiKeys.UPDATE_USER.name) {
|
||||
val userId = info.data as ArrayList<Int>
|
||||
|
||||
if (userId[0] == UserConfig.userId) {
|
||||
@@ -93,13 +92,13 @@ class FragmentFriendsDeprecated(private val userId: Int = 0) : BaseFragment(), F
|
||||
|
||||
private fun setProfileAvatar() {
|
||||
TaskManager.execute {
|
||||
AppGlobal.database.users.getById(UserConfig.userId)?.let {
|
||||
if (it.photo100.isNotEmpty()) {
|
||||
runOnUi {
|
||||
toolbar.getAvatar().setImageURI(it.photo100)
|
||||
}
|
||||
}
|
||||
}
|
||||
// AppGlobal.database.users.getById(UserConfig.userId)?.let {
|
||||
// if (it.photo100.isNotEmpty()) {
|
||||
// runOnUi {
|
||||
// toolbar.getAvatar().setImageURI(it.photo100)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,7 +130,11 @@ class FragmentFriendsDeprecated(private val userId: Int = 0) : BaseFragment(), F
|
||||
}
|
||||
|
||||
override fun openChat(extras: Bundle) {
|
||||
startActivity(Intent(requireContext(), MessagesActivityDeprecated::class.java).putExtras(extras))
|
||||
startActivity(
|
||||
Intent(requireContext(), MessagesActivityDeprecated::class.java).putExtras(
|
||||
extras
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun showErrorSnackbar(t: Throwable) {
|
||||
|
||||
@@ -7,12 +7,12 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import androidx.preference.PreferenceScreen
|
||||
import com.meloda.concurrent.TaskManager
|
||||
import com.meloda.extensions.ContextExtensions.color
|
||||
import com.meloda.fast.R
|
||||
import com.meloda.fast.activity.DropUserDataActivity
|
||||
import com.meloda.fast.activity.UpdateActivityDeprecated
|
||||
import com.meloda.fast.common.AppGlobal
|
||||
import com.meloda.fast.common.TaskManager
|
||||
import com.meloda.fast.extensions.ContextExtensions.color
|
||||
import com.meloda.fast.util.AndroidUtils
|
||||
|
||||
class SettingsFragment : PreferenceFragmentCompat(),
|
||||
@@ -162,8 +162,8 @@ class SettingsFragment : PreferenceFragmentCompat(),
|
||||
builder.setMessage("Clear cache?")
|
||||
builder.setPositiveButton("Yes") { _, _ ->
|
||||
TaskManager.execute {
|
||||
AppGlobal.database.users.clear()
|
||||
AppGlobal.database.groups.clear()
|
||||
// AppGlobal.database.users.clear()
|
||||
// AppGlobal.database.groups.clear()
|
||||
}
|
||||
}
|
||||
builder.setNegativeButton("No", null)
|
||||
|
||||
@@ -10,8 +10,8 @@ import android.webkit.CookieManager
|
||||
import android.webkit.WebView
|
||||
import android.webkit.WebViewClient
|
||||
import androidx.core.os.bundleOf
|
||||
import com.meloda.fast.api.VKAuth
|
||||
import com.meloda.fast.base.BaseFragment
|
||||
import com.meloda.vksdk.VKAuth
|
||||
|
||||
|
||||
class ValidationFragment : BaseFragment() {
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
package com.meloda.fast.fragment.ui.presenter
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.meloda.fast.adapter.ChatsAdapter
|
||||
import com.meloda.fast.common.TimeManager
|
||||
import com.meloda.fast.fragment.ui.repository.ChatsRepository
|
||||
import com.meloda.fast.fragment.ui.view.ChatsView
|
||||
import com.meloda.fast.listener.ItemClickListener
|
||||
import com.meloda.fast.listener.ItemLongClickListener
|
||||
import com.meloda.fast.util.AndroidUtils
|
||||
import com.meloda.mvp.MvpOnLoadListener
|
||||
import com.meloda.mvp.MvpPresenter
|
||||
import com.meloda.vksdk.model.VKConversation
|
||||
|
||||
class ChatsPresenter(viewState: ChatsView) :
|
||||
MvpPresenter<VKConversation, ChatsRepository, ChatsView>(
|
||||
viewState, ChatsRepository::class.java.name
|
||||
),
|
||||
ItemClickListener,
|
||||
ItemLongClickListener,
|
||||
TimeManager.OnMinuteChangeListener {
|
||||
|
||||
companion object {
|
||||
const val DEFAULT_CONVERSATIONS_COUNT = 30
|
||||
}
|
||||
|
||||
private lateinit var adapter: ChatsAdapter
|
||||
|
||||
override fun onViewCreated(bundle: Bundle?) {
|
||||
viewState.initViews()
|
||||
}
|
||||
|
||||
fun setup(recyclerView: RecyclerView, refreshLayout: SwipeRefreshLayout) {
|
||||
viewState.prepareViews()
|
||||
|
||||
createAdapter()
|
||||
}
|
||||
|
||||
private fun createAdapter() {
|
||||
adapter = ChatsAdapter(requireContext(), arrayListOf()).also {
|
||||
it.itemClickListener = this
|
||||
it.itemLongClickListener = this
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun fillAdapter(conversations: ArrayList<VKConversation>, offset: Int) {
|
||||
|
||||
}
|
||||
|
||||
private fun getCachedConversations(
|
||||
offset: Int = 0,
|
||||
count: Int = DEFAULT_CONVERSATIONS_COUNT,
|
||||
listener: MvpOnLoadListener? = null
|
||||
) {
|
||||
listener?.onSuccess()
|
||||
}
|
||||
|
||||
private fun loadConversations(
|
||||
offset: Int = 0,
|
||||
count: Int = DEFAULT_CONVERSATIONS_COUNT,
|
||||
listener: MvpOnLoadListener? = null
|
||||
) {
|
||||
if (AndroidUtils.hasConnection()) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
override fun onItemClick(position: Int) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun onItemLongClick(position: Int) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun onMinuteChange(currentMinute: Int) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
}
|
||||
+36
-35
@@ -1,27 +1,22 @@
|
||||
package com.meloda.fast.fragment.ui.presenter
|
||||
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.meloda.arrayutils.ArrayUtils
|
||||
import com.meloda.fast.BuildConfig
|
||||
import com.meloda.fast.activity.MessagesActivityDeprecated
|
||||
import com.meloda.fast.adapter.ConversationsAdapterDeprecated
|
||||
import com.meloda.fast.adapter.diffutil.ConversationsCallbackDeprecated
|
||||
import com.meloda.fast.api.model.VKConversation
|
||||
import com.meloda.fast.api.util.VKUtil
|
||||
import com.meloda.fast.common.TaskManager
|
||||
import com.meloda.fast.common.TimeManager
|
||||
import com.meloda.fast.database.MemoryCache
|
||||
import com.meloda.fast.fragment.ui.repository.ConversationsRepositoryDeprecated
|
||||
import com.meloda.fast.fragment.ui.view.ConversationsViewDeprecated
|
||||
import com.meloda.fast.listener.ItemClickListener
|
||||
import com.meloda.fast.listener.ItemLongClickListener
|
||||
import com.meloda.fast.util.AndroidUtils
|
||||
import com.meloda.fast.util.ArrayUtils
|
||||
import com.meloda.mvp.MvpOnLoadListener
|
||||
import com.meloda.mvp.MvpOnResponseListener
|
||||
import com.meloda.mvp.MvpPresenter
|
||||
import com.meloda.vksdk.model.VKConversation
|
||||
import java.util.*
|
||||
|
||||
class ConversationsPresenterDeprecated(viewState: ConversationsViewDeprecated) :
|
||||
@@ -89,7 +84,7 @@ class ConversationsPresenterDeprecated(viewState: ConversationsViewDeprecated) :
|
||||
setState(ListState.FILLED_LOADING)
|
||||
if (AndroidUtils.hasConnection()) {
|
||||
loadConversations(adapter.itemCount, DEFAULT_CONVERSATIONS_COUNT,
|
||||
object : MvpOnLoadListener<Any?> {
|
||||
object : MvpOnResponseListener<Any?> {
|
||||
override fun onResponse(response: Any?) {
|
||||
recyclerView.scrollToPosition(position)
|
||||
|
||||
@@ -102,7 +97,7 @@ class ConversationsPresenterDeprecated(viewState: ConversationsViewDeprecated) :
|
||||
})
|
||||
} else {
|
||||
getCachedConversations(adapter.itemCount, DEFAULT_CONVERSATIONS_COUNT,
|
||||
object : MvpOnLoadListener<Any?> {
|
||||
object : MvpOnResponseListener<Any?> {
|
||||
override fun onResponse(response: Any?) {
|
||||
recyclerView.scrollToPosition(position)
|
||||
|
||||
@@ -130,12 +125,12 @@ class ConversationsPresenterDeprecated(viewState: ConversationsViewDeprecated) :
|
||||
private fun getCachedConversations(
|
||||
offset: Int = 0,
|
||||
count: Int = DEFAULT_CONVERSATIONS_COUNT,
|
||||
listener: MvpOnLoadListener<Any?>? = null
|
||||
listener: MvpOnResponseListener<Any?>? = null
|
||||
) {
|
||||
setState(if (adapter.isEmpty()) ListState.EMPTY_LOADING else ListState.FILLED_LOADING)
|
||||
|
||||
repository.getCachedConversations(offset, count,
|
||||
object : MvpOnLoadListener<ArrayList<VKConversation>> {
|
||||
object : MvpOnResponseListener<ArrayList<VKConversation>> {
|
||||
override fun onResponse(response: ArrayList<VKConversation>) {
|
||||
conversationsCount = response.size
|
||||
|
||||
@@ -159,7 +154,7 @@ class ConversationsPresenterDeprecated(viewState: ConversationsViewDeprecated) :
|
||||
private fun loadConversations(
|
||||
offset: Int = 0,
|
||||
count: Int = DEFAULT_CONVERSATIONS_COUNT,
|
||||
listener: MvpOnLoadListener<Any?>? = null
|
||||
listener: MvpOnResponseListener<Any?>? = null
|
||||
) {
|
||||
if (!AndroidUtils.hasConnection()) {
|
||||
setState(if (adapter.isEmpty()) ListState.EMPTY_NO_INTERNET else ListState.FILLED)
|
||||
@@ -169,7 +164,7 @@ class ConversationsPresenterDeprecated(viewState: ConversationsViewDeprecated) :
|
||||
}
|
||||
|
||||
repository.loadConversations(offset, count,
|
||||
object : MvpOnLoadListener<ArrayList<VKConversation>> {
|
||||
object : MvpOnResponseListener<ArrayList<VKConversation>> {
|
||||
override fun onResponse(response: ArrayList<VKConversation>) {
|
||||
conversationsCount = VKConversation.conversationsCount
|
||||
|
||||
@@ -225,30 +220,36 @@ class ConversationsPresenterDeprecated(viewState: ConversationsViewDeprecated) :
|
||||
}
|
||||
|
||||
override fun onMinuteChange(currentMinute: Int) {
|
||||
post { adapter.notifyItemRangeChanged(0, adapter.itemCount, ConversationsCallbackDeprecated.DATE) }
|
||||
post {
|
||||
adapter.notifyItemRangeChanged(
|
||||
0,
|
||||
adapter.itemCount,
|
||||
ConversationsCallbackDeprecated.DATE
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun openChat(conversation: VKConversation) {
|
||||
TaskManager.execute {
|
||||
val peerUser = MemoryCache.getUserById(conversation.conversationId)
|
||||
val peerGroup = MemoryCache.getGroupById(conversation.conversationId)
|
||||
|
||||
val extras = Bundle().also {
|
||||
it.putInt(MessagesActivityDeprecated.TAG_EXTRA_ID, conversation.conversationId)
|
||||
it.putString(
|
||||
MessagesActivityDeprecated.TAG_EXTRA_TITLE,
|
||||
VKUtil.getTitle(conversation, peerUser, peerGroup)
|
||||
)
|
||||
it.putString(
|
||||
MessagesActivityDeprecated.TAG_EXTRA_AVATAR,
|
||||
VKUtil.getAvatar(conversation, peerUser, peerGroup)
|
||||
)
|
||||
it.putSerializable(MessagesActivityDeprecated.TAG_EXTRA_USER, peerUser)
|
||||
it.putSerializable(MessagesActivityDeprecated.TAG_EXTRA_GROUP, peerGroup)
|
||||
}
|
||||
|
||||
post { viewState.openChat(extras) }
|
||||
}
|
||||
// TaskManager.execute {
|
||||
// val peerUser = MemoryCache.getUserById(conversation.conversationId)
|
||||
// val peerGroup = MemoryCache.getGroupById(conversation.conversationId)
|
||||
//
|
||||
// val extras = Bundle().also {
|
||||
// it.putInt(MessagesActivityDeprecated.TAG_EXTRA_ID, conversation.conversationId)
|
||||
// it.putString(
|
||||
// MessagesActivityDeprecated.TAG_EXTRA_TITLE,
|
||||
// VKUtil.getTitle(conversation, peerUser, peerGroup)
|
||||
// )
|
||||
// it.putString(
|
||||
// MessagesActivityDeprecated.TAG_EXTRA_AVATAR,
|
||||
// VKUtil.getAvatar(conversation, peerUser, peerGroup)
|
||||
// )
|
||||
// it.putSerializable(MessagesActivityDeprecated.TAG_EXTRA_USER, peerUser)
|
||||
// it.putSerializable(MessagesActivityDeprecated.TAG_EXTRA_GROUP, peerGroup)
|
||||
// }
|
||||
//
|
||||
// post { viewState.openChat(extras) }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
+10
-10
@@ -5,16 +5,16 @@ import android.util.Log
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.meloda.arrayutils.ArrayUtils
|
||||
import com.meloda.fast.activity.MessagesActivityDeprecated
|
||||
import com.meloda.fast.adapter.UsersAdapterDeprecated
|
||||
import com.meloda.fast.api.model.VKUser
|
||||
import com.meloda.fast.fragment.ui.repository.FriendsRepositoryDeprecated
|
||||
import com.meloda.fast.fragment.ui.view.FriendsViewDeprecated
|
||||
import com.meloda.fast.listener.ItemClickListener
|
||||
import com.meloda.fast.util.AndroidUtils
|
||||
import com.meloda.fast.util.ArrayUtils
|
||||
import com.meloda.mvp.MvpOnLoadListener
|
||||
import com.meloda.mvp.MvpOnResponseListener
|
||||
import com.meloda.mvp.MvpPresenter
|
||||
import com.meloda.vksdk.model.VKUser
|
||||
|
||||
class FriendsPresenterDeprecated(viewState: FriendsViewDeprecated) :
|
||||
MvpPresenter<VKUser, FriendsRepositoryDeprecated, FriendsViewDeprecated>(
|
||||
@@ -48,7 +48,7 @@ class FriendsPresenterDeprecated(viewState: FriendsViewDeprecated) :
|
||||
|
||||
createAdapter()
|
||||
|
||||
getCachedFriends(userId, 0, DEFAULT_FRIENDS_COUNT, false, object : MvpOnLoadListener<Any?> {
|
||||
getCachedFriends(userId, 0, DEFAULT_FRIENDS_COUNT, false, object : MvpOnResponseListener<Any?> {
|
||||
override fun onResponse(response: Any?) {
|
||||
setState(if (adapter.isEmpty()) MvpPresenter.ListState.EMPTY_LOADING else ListState.FILLED_LOADING)
|
||||
loadFriends(userId, 0, DEFAULT_FRIENDS_COUNT)
|
||||
@@ -66,7 +66,7 @@ class FriendsPresenterDeprecated(viewState: FriendsViewDeprecated) :
|
||||
offset: Int = 0,
|
||||
count: Int = DEFAULT_FRIENDS_COUNT,
|
||||
onlyOnline: Boolean = false,
|
||||
listener: MvpOnLoadListener<Any?>? = null
|
||||
listener: MvpOnResponseListener<Any?>? = null
|
||||
) {
|
||||
setState(if (adapter.isEmpty()) ListState.EMPTY_LOADING else ListState.FILLED_LOADING)
|
||||
|
||||
@@ -75,7 +75,7 @@ class FriendsPresenterDeprecated(viewState: FriendsViewDeprecated) :
|
||||
offset,
|
||||
count,
|
||||
onlyOnline,
|
||||
object : MvpOnLoadListener<ArrayList<VKUser>> {
|
||||
object : MvpOnResponseListener<ArrayList<VKUser>> {
|
||||
override fun onResponse(response: ArrayList<VKUser>) {
|
||||
val friends = ArrayUtils.cut(response, offset, count)
|
||||
|
||||
@@ -99,7 +99,7 @@ class FriendsPresenterDeprecated(viewState: FriendsViewDeprecated) :
|
||||
offset: Int = 0,
|
||||
count: Int = DEFAULT_FRIENDS_COUNT,
|
||||
onlyOnline: Boolean = false,
|
||||
listener: MvpOnLoadListener<Any?>? = null
|
||||
listener: MvpOnResponseListener<Any?>? = null
|
||||
) {
|
||||
if (!AndroidUtils.hasConnection()) {
|
||||
setState(if (adapter.isEmpty()) ListState.EMPTY_NO_INTERNET else ListState.FILLED)
|
||||
@@ -112,7 +112,7 @@ class FriendsPresenterDeprecated(viewState: FriendsViewDeprecated) :
|
||||
userId,
|
||||
offset,
|
||||
count,
|
||||
object : MvpOnLoadListener<ArrayList<VKUser>> {
|
||||
object : MvpOnResponseListener<ArrayList<VKUser>> {
|
||||
override fun onResponse(response: ArrayList<VKUser>) {
|
||||
friendsCount = VKUser.friendsCount
|
||||
|
||||
@@ -151,7 +151,7 @@ class FriendsPresenterDeprecated(viewState: FriendsViewDeprecated) :
|
||||
adapter.itemCount,
|
||||
DEFAULT_FRIENDS_COUNT,
|
||||
false,
|
||||
object : MvpOnLoadListener<Any?> {
|
||||
object : MvpOnResponseListener<Any?> {
|
||||
override fun onResponse(response: Any?) {
|
||||
recyclerView.scrollToPosition(position)
|
||||
|
||||
@@ -168,7 +168,7 @@ class FriendsPresenterDeprecated(viewState: FriendsViewDeprecated) :
|
||||
adapter.itemCount,
|
||||
DEFAULT_FRIENDS_COUNT,
|
||||
false,
|
||||
object : MvpOnLoadListener<Any?> {
|
||||
object : MvpOnResponseListener<Any?> {
|
||||
override fun onResponse(response: Any?) {
|
||||
recyclerView.scrollToPosition(position)
|
||||
|
||||
|
||||
@@ -11,18 +11,20 @@ import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.setFragmentResultListener
|
||||
import com.google.android.material.textfield.TextInputEditText
|
||||
import com.meloda.fast.R
|
||||
import com.meloda.fast.activity.MainActivityDeprecated
|
||||
import com.meloda.fast.api.UserConfig
|
||||
import com.meloda.fast.extensions.FragmentExtensions.runOnUiThread
|
||||
import com.meloda.fast.fragment.FragmentConversationsDeprecated
|
||||
import com.meloda.fast.UserConfig
|
||||
import com.meloda.fast.activity.MainActivity
|
||||
import com.meloda.fast.common.AppGlobal
|
||||
import com.meloda.fast.fragment.ChatsFragment
|
||||
import com.meloda.fast.fragment.LoginFragment
|
||||
import com.meloda.fast.fragment.ValidationFragment
|
||||
import com.meloda.fast.fragment.ui.repository.LoginRepository
|
||||
import com.meloda.fast.fragment.ui.view.LoginView
|
||||
import com.meloda.mvp.MvpOnLoadListener
|
||||
import com.meloda.mvp.MvpOnResponseListener
|
||||
import com.meloda.mvp.MvpPresenter
|
||||
import com.meloda.vksdk.VKApi
|
||||
import com.squareup.picasso.Picasso
|
||||
import org.json.JSONObject
|
||||
import java.util.*
|
||||
|
||||
|
||||
class LoginPresenter(
|
||||
@@ -51,19 +53,19 @@ class LoginPresenter(
|
||||
email: String,
|
||||
password: String,
|
||||
captcha: String = "",
|
||||
onLoadListener: MvpOnLoadListener<Any?>? = null
|
||||
onResponseListener: MvpOnResponseListener<Any?>? = null
|
||||
) {
|
||||
lastEmail = email
|
||||
lastPassword = password
|
||||
|
||||
repository.login(requireContext(), email, password, captcha,
|
||||
object : MvpOnLoadListener<JSONObject> {
|
||||
object : MvpOnResponseListener<JSONObject> {
|
||||
override fun onResponse(response: JSONObject) {
|
||||
checkResponse(response, onLoadListener)
|
||||
checkResponse(response, onResponseListener)
|
||||
}
|
||||
|
||||
override fun onError(t: Throwable) {
|
||||
onLoadListener?.onError(t)
|
||||
onResponseListener?.onError(t)
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -71,7 +73,7 @@ class LoginPresenter(
|
||||
@Suppress("MoveVariableDeclarationIntoWhen")
|
||||
private fun checkResponse(
|
||||
response: JSONObject,
|
||||
onLoadListener: MvpOnLoadListener<Any?>? = null
|
||||
onResponseListener: MvpOnResponseListener<Any?>? = null
|
||||
) {
|
||||
if (response.has("error")) {
|
||||
val errorString = response.optString("error")
|
||||
@@ -113,18 +115,20 @@ class LoginPresenter(
|
||||
|
||||
openMainScreen()
|
||||
|
||||
onLoadListener?.onResponse(null)
|
||||
onResponseListener?.onResponse(null)
|
||||
}
|
||||
}
|
||||
|
||||
private fun openMainScreen() {
|
||||
fragment.runOnUiThread {
|
||||
(fragment.requireActivity() as MainActivityDeprecated).bottomBar.isVisible = true
|
||||
VKApi.init(Locale.getDefault().language, UserConfig.token, AppGlobal.handler)
|
||||
|
||||
(fragment.requireActivity() as MainActivity).bottomBar.isVisible = true
|
||||
|
||||
fragment.parentFragmentManager.beginTransaction()
|
||||
.replace(
|
||||
R.id.fragmentContainer,
|
||||
FragmentConversationsDeprecated()
|
||||
ChatsFragment()
|
||||
).commit()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.meloda.fast.fragment.ui.repository
|
||||
|
||||
import com.meloda.mvp.MvpRepository
|
||||
import com.meloda.vksdk.model.VKConversation
|
||||
|
||||
class ChatsRepository : MvpRepository<VKConversation>() {
|
||||
}
|
||||
+32
-35
@@ -1,29 +1,26 @@
|
||||
package com.meloda.fast.fragment.ui.repository
|
||||
|
||||
import com.meloda.fast.api.VKApi
|
||||
import com.meloda.fast.api.model.VKConversation
|
||||
import com.meloda.fast.api.model.VKMessage
|
||||
import com.meloda.fast.api.model.VKUser
|
||||
import com.meloda.fast.api.util.VKUtil
|
||||
import com.meloda.fast.common.TaskManager
|
||||
import com.meloda.fast.database.MemoryCache
|
||||
import com.meloda.fast.extensions.ArrayExtensions.asArrayList
|
||||
import com.meloda.fast.listener.OnResponseListener
|
||||
import com.meloda.mvp.MvpOnLoadListener
|
||||
import com.meloda.concurrent.TaskManager
|
||||
import com.meloda.mvp.MvpOnResponseListener
|
||||
import com.meloda.mvp.MvpRepository
|
||||
import com.meloda.vksdk.OnResponseListener
|
||||
import com.meloda.vksdk.VKApi
|
||||
import com.meloda.vksdk.VKConstants
|
||||
import com.meloda.vksdk.model.VKConversation
|
||||
import com.meloda.vksdk.model.VKMessage
|
||||
|
||||
class ConversationsRepositoryDeprecated : MvpRepository<VKConversation>() {
|
||||
|
||||
fun loadConversations(
|
||||
offset: Int, count: Int,
|
||||
listener: MvpOnLoadListener<ArrayList<VKConversation>>
|
||||
listener: MvpOnResponseListener<ArrayList<VKConversation>>
|
||||
) {
|
||||
TaskManager.execute {
|
||||
VKApi.messages()
|
||||
.getConversations()
|
||||
.filter("all")
|
||||
.extended(true)
|
||||
.fields(VKUser.DEFAULT_FIELDS)
|
||||
.fields(VKConstants.USER_FIELDS)
|
||||
.offset(offset)
|
||||
.count(count)
|
||||
.executeArray(VKConversation::class.java,
|
||||
@@ -32,8 +29,8 @@ class ConversationsRepositoryDeprecated : MvpRepository<VKConversation>() {
|
||||
TaskManager.execute {
|
||||
cacheLoadedConversations(response)
|
||||
|
||||
MemoryCache.putUsers(VKConversation.profiles)
|
||||
MemoryCache.putGroups(VKConversation.groups)
|
||||
// MemoryCache.putUsers(VKConversation.profiles)
|
||||
// MemoryCache.putGroups(VKConversation.groups)
|
||||
|
||||
sendResponse(listener, response)
|
||||
}
|
||||
@@ -48,18 +45,18 @@ class ConversationsRepositoryDeprecated : MvpRepository<VKConversation>() {
|
||||
|
||||
fun getCachedConversations(
|
||||
offset: Int, count: Int,
|
||||
listener: MvpOnLoadListener<ArrayList<VKConversation>>
|
||||
listener: MvpOnResponseListener<ArrayList<VKConversation>>
|
||||
) {
|
||||
if (true) {
|
||||
sendResponse(listener, arrayListOf())
|
||||
return
|
||||
}
|
||||
TaskManager.execute {
|
||||
val conversations = MemoryCache.getConversations().asArrayList()
|
||||
// val conversations = MemoryCache.getConversations().asArrayList()
|
||||
//
|
||||
// VKUtil.sortConversationsByDate(conversations, true)
|
||||
|
||||
VKUtil.sortConversationsByDate(conversations, true)
|
||||
|
||||
sendResponse(listener, conversations)
|
||||
// sendResponse(listener, conversations)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,27 +65,27 @@ class ConversationsRepositoryDeprecated : MvpRepository<VKConversation>() {
|
||||
val lastMessage = conversation.lastMessage
|
||||
|
||||
when (conversation.type) {
|
||||
VKConversation.TYPE_USER -> {
|
||||
VKUtil.searchUser(conversation.conversationId)?.let {
|
||||
conversation.peerUser = it
|
||||
}
|
||||
VKConversation.Type.USER -> {
|
||||
// VKUtil.searchUser(conversation.conversationId)?.let {
|
||||
// conversation.peerUser = it
|
||||
// }
|
||||
}
|
||||
|
||||
VKConversation.TYPE_GROUP -> {
|
||||
VKUtil.searchGroup(conversation.conversationId)?.let {
|
||||
conversation.peerGroup = it
|
||||
}
|
||||
VKConversation.Type.GROUP -> {
|
||||
// VKUtil.searchGroup(conversation.conversationId)?.let {
|
||||
// conversation.peerGroup = it
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
if (lastMessage.isFromGroup()) {
|
||||
VKUtil.searchGroup(lastMessage.fromId)?.let {
|
||||
lastMessage.fromGroup = it
|
||||
}
|
||||
// VKUtil.searchGroup(lastMessage.fromId)?.let {
|
||||
// lastMessage.fromGroup = it
|
||||
// }
|
||||
} else {
|
||||
VKUtil.searchUser(lastMessage.fromId)?.let {
|
||||
lastMessage.fromUser = it
|
||||
}
|
||||
// VKUtil.searchUser(lastMessage.fromId)?.let {
|
||||
// lastMessage.fromUser = it
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -100,7 +97,7 @@ class ConversationsRepositoryDeprecated : MvpRepository<VKConversation>() {
|
||||
messages.add(conversation.lastMessage)
|
||||
}
|
||||
|
||||
MemoryCache.putMessages(messages)
|
||||
MemoryCache.putConversations(conversations)
|
||||
// MemoryCache.putMessages(messages)
|
||||
// MemoryCache.putConversations(conversations)
|
||||
}
|
||||
}
|
||||
|
||||
+41
-42
@@ -1,14 +1,13 @@
|
||||
package com.meloda.fast.fragment.ui.repository
|
||||
|
||||
import android.util.Log
|
||||
import com.meloda.fast.api.VKApi
|
||||
import com.meloda.fast.api.model.VKFriend
|
||||
import com.meloda.fast.api.model.VKUser
|
||||
import com.meloda.fast.common.TaskManager
|
||||
import com.meloda.fast.database.MemoryCache
|
||||
import com.meloda.fast.listener.OnResponseListener
|
||||
import com.meloda.mvp.MvpOnLoadListener
|
||||
import com.meloda.concurrent.TaskManager
|
||||
import com.meloda.mvp.MvpOnResponseListener
|
||||
import com.meloda.mvp.MvpRepository
|
||||
import com.meloda.vksdk.OnResponseListener
|
||||
import com.meloda.vksdk.VKApi
|
||||
import com.meloda.vksdk.VKConstants
|
||||
import com.meloda.vksdk.model.VKUser
|
||||
|
||||
class FriendsRepositoryDeprecated : MvpRepository<VKUser>() {
|
||||
|
||||
@@ -16,14 +15,14 @@ class FriendsRepositoryDeprecated : MvpRepository<VKUser>() {
|
||||
userId: Int,
|
||||
offset: Int,
|
||||
count: Int,
|
||||
listener: MvpOnLoadListener<ArrayList<VKUser>>
|
||||
listener: MvpOnResponseListener<ArrayList<VKUser>>
|
||||
) {
|
||||
TaskManager.execute {
|
||||
VKApi.friends()
|
||||
.get()
|
||||
.order("hints")
|
||||
.userId(userId)
|
||||
.fields(VKUser.DEFAULT_FIELDS)
|
||||
.fields(VKConstants.USER_FIELDS)
|
||||
.count(count)
|
||||
.offset(offset)
|
||||
.executeArray(VKUser::class.java,
|
||||
@@ -47,43 +46,43 @@ class FriendsRepositoryDeprecated : MvpRepository<VKUser>() {
|
||||
|
||||
fun getCachedFriends(
|
||||
userId: Int, offset: Int, count: Int, onlyOnline: Boolean,
|
||||
listener: MvpOnLoadListener<ArrayList<VKUser>>
|
||||
listener: MvpOnResponseListener<ArrayList<VKUser>>
|
||||
) {
|
||||
TaskManager.execute {
|
||||
val friendsArray = MemoryCache.getFriends(userId)
|
||||
|
||||
Log.d("FriendsRepository", "get ${friendsArray.size} friends from cache")
|
||||
|
||||
if (friendsArray.isEmpty()) {
|
||||
sendError(listener, NullPointerException("Friends list is empty"))
|
||||
return@execute
|
||||
}
|
||||
|
||||
val friends = arrayListOf<VKUser>()
|
||||
|
||||
for (friend in friendsArray) {
|
||||
val user = MemoryCache.getUserById(friend.friendId)
|
||||
|
||||
user?.let {
|
||||
if (onlyOnline && user.isOnline || !onlyOnline) {
|
||||
friends.add(user)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sendResponse(listener, friends)
|
||||
}
|
||||
// TaskManager.execute {
|
||||
// val friendsArray = MemoryCache.getFriends(userId)
|
||||
//
|
||||
// Log.d("FriendsRepository", "get ${friendsArray.size} friends from cache")
|
||||
//
|
||||
// if (friendsArray.isEmpty()) {
|
||||
// sendError(listener, NullPointerException("Friends list is empty"))
|
||||
// return@execute
|
||||
// }
|
||||
//
|
||||
// val friends = arrayListOf<VKUser>()
|
||||
//
|
||||
// for (friend in friendsArray) {
|
||||
// val user = MemoryCache.getUserById(friend.friendId)
|
||||
//
|
||||
// user?.let {
|
||||
// if (onlyOnline && user.isOnline || !onlyOnline) {
|
||||
// friends.add(user)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// sendResponse(listener, friends)
|
||||
// }
|
||||
}
|
||||
|
||||
private fun cacheLoadedUsers(userId: Int, users: ArrayList<VKUser>) {
|
||||
MemoryCache.putUsers(users)
|
||||
// MemoryCache.putUsers(users)
|
||||
//
|
||||
// val friends = ArrayList<VKFriend>()
|
||||
//
|
||||
// for (user in users) {
|
||||
// friends.add(VKFriend(user.userId, userId))
|
||||
// }
|
||||
|
||||
val friends = ArrayList<VKFriend>()
|
||||
|
||||
for (user in users) {
|
||||
friends.add(VKFriend(user.userId, userId))
|
||||
}
|
||||
|
||||
MemoryCache.putFriends(friends)
|
||||
// MemoryCache.putFriends(friends)
|
||||
}
|
||||
}
|
||||
@@ -6,9 +6,9 @@ import android.webkit.CookieManager
|
||||
import android.webkit.JavascriptInterface
|
||||
import android.webkit.WebView
|
||||
import android.webkit.WebViewClient
|
||||
import com.meloda.fast.api.VKAuth
|
||||
import com.meloda.mvp.MvpOnLoadListener
|
||||
import com.meloda.mvp.MvpOnResponseListener
|
||||
import com.meloda.mvp.MvpRepository
|
||||
import com.meloda.vksdk.VKAuth
|
||||
import org.json.JSONObject
|
||||
import org.jsoup.Jsoup
|
||||
|
||||
@@ -19,14 +19,14 @@ class LoginRepository : MvpRepository<Any>() {
|
||||
email: String,
|
||||
password: String,
|
||||
captcha: String,
|
||||
onLoadListener: MvpOnLoadListener<JSONObject>
|
||||
onResponseListener: MvpOnResponseListener<JSONObject>
|
||||
) {
|
||||
if (email.trim().isEmpty() || password.trim().isEmpty()) return
|
||||
val loadingUrl = VKAuth.getDirectAuthUrl(email, password, captcha)
|
||||
|
||||
val webView = createWebView(context)
|
||||
|
||||
webView.addJavascriptInterface(WebViewHandlerInterface(onLoadListener), "HtmlHandler")
|
||||
webView.addJavascriptInterface(WebViewHandlerInterface(onResponseListener), "HtmlHandler")
|
||||
webView.webViewClient = object : WebViewClient() {
|
||||
override fun onPageFinished(view: WebView?, url: String?) {
|
||||
webView.loadUrl(
|
||||
@@ -58,7 +58,7 @@ class LoginRepository : MvpRepository<Any>() {
|
||||
return loginWebView
|
||||
}
|
||||
|
||||
private class WebViewHandlerInterface(private var onLoadListener: MvpOnLoadListener<JSONObject>) {
|
||||
private class WebViewHandlerInterface(private var onResponseListener: MvpOnResponseListener<JSONObject>) {
|
||||
@JavascriptInterface
|
||||
fun handleHtml(html: String?) {
|
||||
val doc = Jsoup.parse(html)
|
||||
@@ -68,7 +68,7 @@ class LoginRepository : MvpRepository<Any>() {
|
||||
.first()
|
||||
.text()
|
||||
|
||||
onLoadListener.onResponse(JSONObject(responseString))
|
||||
onResponseListener.onResponse(JSONObject(responseString))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.meloda.fast.fragment.ui.view
|
||||
|
||||
import com.meloda.mvp.MvpView
|
||||
|
||||
interface ChatsView : MvpView {
|
||||
|
||||
fun initViews()
|
||||
|
||||
fun prepareViews()
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user