Dark theme

This commit is contained in:
2021-02-20 23:21:25 +03:00
parent 88dddcb133
commit 06aa41cab1
179 changed files with 1011 additions and 1133 deletions
+10 -4
View File
@@ -6,10 +6,10 @@ plugins {
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
buildToolsVersion "31.0.0-rc1"
defaultConfig {
applicationId "ru.melod1n.project.vkm"
applicationId "com.meloda.fast"
minSdkVersion 23
targetSdkVersion 30
versionCode 1
@@ -21,6 +21,10 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix '.debug'
}
}
compileOptions {
coreLibraryDesugaringEnabled true
@@ -34,6 +38,8 @@ android {
}
dependencies {
implementation(name: 'mvp-debug', ext: 'aar')
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.1'
implementation "org.jetbrains.kotlin:kotlin-stdlib:${kotlin_version}"
@@ -48,8 +54,8 @@ dependencies {
implementation 'androidx.fragment:fragment-ktx:1.3.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.room:room-runtime:2.3.0-beta01'
kapt 'androidx.room:room-compiler:2.3.0-beta01'
implementation 'androidx.room:room-runtime:2.3.0-beta02'
kapt 'androidx.room:room-compiler:2.3.0-beta02'
implementation 'com.facebook.fresco:fresco:2.3.0'
Binary file not shown.
Binary file not shown.
+18
View File
@@ -0,0 +1,18 @@
{
"version": 2,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "ru.melod1n.project.vkm",
"variantName": "processReleaseResources",
"elements": [
{
"type": "SINGLE",
"filters": [],
"versionCode": 1,
"versionName": "1.0",
"outputFile": "app-release.apk"
}
]
}
+11 -11
View File
@@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ru.melod1n.project.vkm">
package="com.meloda.fast">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".common.AppGlobal"
android:name="com.meloda.fast.common.AppGlobal"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".activity.MainActivity">
<activity android:name="com.meloda.fast.activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -21,29 +21,29 @@
</activity>
<service
android:name=".service.LongPollService"
android:name="com.meloda.fast.service.LongPollService"
android:enabled="true" />
<activity android:name=".activity.MessagesActivity" />
<activity android:name="com.meloda.fast.activity.MessagesActivity" />
<activity
android:name=".activity.StartActivity"
android:name="com.meloda.fast.activity.StartActivity"
android:theme="@style/AppTheme.Start" />
<activity
android:name=".activity.LoginActivity"
android:name="com.meloda.fast.activity.LoginActivity"
android:label="@string/activity_login" />
<activity android:name=".activity.DropUserDataActivity" />
<activity android:name="com.meloda.fast.activity.DropUserDataActivity" />
<activity
android:name=".activity.SettingsActivity"
android:name="com.meloda.fast.activity.SettingsActivity"
android:label="@string/navigation_settings" />
<activity android:name=".activity.UpdateActivity" />
<activity android:name="com.meloda.fast.activity.UpdateActivity" />
<receiver
android:name=".receiver.MinuteReceiver"
android:name="com.meloda.fast.receiver.MinuteReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.ACTION_TIME_CHANGED" />
@@ -1,11 +1,11 @@
package ru.melod1n.project.vkm.activity
package com.meloda.fast.activity
import android.content.Intent
import android.os.Bundle
import ru.melod1n.project.vkm.base.BaseActivity
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.api.UserConfig
import com.meloda.fast.api.UserConfig
import com.meloda.fast.base.BaseActivity
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.common.TaskManager
class DropUserDataActivity : BaseActivity() {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.activity
package com.meloda.fast.activity
import android.annotation.SuppressLint
import android.content.Intent
@@ -10,14 +10,14 @@ import android.webkit.*
import android.widget.ProgressBar
import androidx.core.view.isVisible
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.api.UserConfig
import ru.melod1n.project.vkm.api.VKAuth
import ru.melod1n.project.vkm.base.BaseActivity
import ru.melod1n.project.vkm.extensions.ContextExtensions.color
import ru.melod1n.project.vkm.extensions.ContextExtensions.drawable
import ru.melod1n.project.vkm.extensions.DrawableExtensions.tint
import ru.melod1n.project.vkm.widget.Toolbar
import com.meloda.fast.R
import com.meloda.fast.api.UserConfig
import com.meloda.fast.api.VKAuth
import com.meloda.fast.base.BaseActivity
import com.meloda.fast.extensions.ContextExtensions.color
import com.meloda.fast.extensions.ContextExtensions.drawable
import com.meloda.fast.extensions.DrawableExtensions.tint
import com.meloda.fast.widget.Toolbar
class LoginActivity : BaseActivity() {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.activity
package com.meloda.fast.activity
import android.content.Intent
import android.os.Bundle
@@ -9,28 +9,28 @@ import androidx.core.view.isVisible
import androidx.drawerlayout.widget.DrawerLayout
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.navigation.NavigationView
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.api.UserConfig
import ru.melod1n.project.vkm.api.VKApiKeys
import ru.melod1n.project.vkm.api.model.VKUser
import ru.melod1n.project.vkm.base.BaseActivity
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.FragmentSwitcher
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.common.TimeManager
import ru.melod1n.project.vkm.dialog.AccountDialog
import ru.melod1n.project.vkm.extensions.ContextExtensions.color
import ru.melod1n.project.vkm.extensions.ContextExtensions.drawable
import ru.melod1n.project.vkm.extensions.DrawableExtensions.tint
import ru.melod1n.project.vkm.fragment.FragmentConversations
import ru.melod1n.project.vkm.fragment.FragmentFriends
import ru.melod1n.project.vkm.fragment.FragmentSettings
import ru.melod1n.project.vkm.fragment.LoginFragment
import ru.melod1n.project.vkm.listener.OnResponseListener
import ru.melod1n.project.vkm.service.LongPollService
import ru.melod1n.project.vkm.util.AndroidUtils
import ru.melod1n.project.vkm.util.ViewUtils
import ru.melod1n.project.vkm.widget.Toolbar
import com.meloda.fast.R
import com.meloda.fast.api.UserConfig
import com.meloda.fast.api.VKApiKeys
import com.meloda.fast.api.model.VKUser
import com.meloda.fast.base.BaseActivity
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.common.FragmentSwitcher
import com.meloda.fast.common.TaskManager
import com.meloda.fast.common.TimeManager
import com.meloda.fast.dialog.AccountDialog
import com.meloda.fast.extensions.ContextExtensions.color
import com.meloda.fast.extensions.ContextExtensions.drawable
import com.meloda.fast.extensions.DrawableExtensions.tint
import com.meloda.fast.fragment.FragmentConversations
import com.meloda.fast.fragment.FragmentFriends
import com.meloda.fast.fragment.FragmentSettings
import com.meloda.fast.fragment.LoginFragment
import com.meloda.fast.listener.OnResponseListener
import com.meloda.fast.service.LongPollService
import com.meloda.fast.util.AndroidUtils
import com.meloda.fast.util.ViewUtils
import com.meloda.fast.widget.Toolbar
class MainActivity : BaseActivity(),
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.activity
package com.meloda.fast.activity
import android.content.res.ColorStateList
import android.graphics.Color
@@ -14,24 +14,24 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.amulyakhare.textdrawable.TextDrawable
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.activity.ui.presenter.MessagesPresenter
import ru.melod1n.project.vkm.activity.ui.view.MessagesView
import ru.melod1n.project.vkm.api.model.VKConversation
import ru.melod1n.project.vkm.api.model.VKGroup
import ru.melod1n.project.vkm.api.model.VKModel
import ru.melod1n.project.vkm.api.model.VKUser
import ru.melod1n.project.vkm.base.BaseActivity
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.dialog.ProfileDialog
import ru.melod1n.project.vkm.extensions.ContextExtensions.color
import ru.melod1n.project.vkm.extensions.DrawableExtensions.tint
import ru.melod1n.project.vkm.extensions.ImageViewExtensions.loadImage
import ru.melod1n.project.vkm.fragment.FragmentSettings
import ru.melod1n.project.vkm.util.KeyboardUtils
import ru.melod1n.project.vkm.util.TextUtils
import ru.melod1n.project.vkm.util.ViewUtils
import ru.melod1n.project.vkm.widget.CircleImageView
import com.meloda.fast.R
import com.meloda.fast.activity.ui.presenter.MessagesPresenter
import com.meloda.fast.activity.ui.view.MessagesView
import com.meloda.fast.api.model.VKConversation
import com.meloda.fast.api.model.VKGroup
import com.meloda.fast.api.model.VKModel
import com.meloda.fast.api.model.VKUser
import com.meloda.fast.base.BaseActivity
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.dialog.ProfileDialog
import com.meloda.fast.extensions.ContextExtensions.color
import com.meloda.fast.extensions.DrawableExtensions.tint
import com.meloda.fast.extensions.ImageViewExtensions.loadImage
import com.meloda.fast.fragment.FragmentSettings
import com.meloda.fast.util.KeyboardUtils
import com.meloda.fast.util.TextUtils
import com.meloda.fast.util.ViewUtils
import com.meloda.fast.widget.CircleImageView
class MessagesActivity : BaseActivity(), MessagesView {
@@ -1,14 +1,14 @@
package ru.melod1n.project.vkm.activity
package com.meloda.fast.activity
import android.os.Bundle
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.base.BaseActivity
import ru.melod1n.project.vkm.common.FragmentSwitcher
import ru.melod1n.project.vkm.extensions.ContextExtensions.color
import ru.melod1n.project.vkm.extensions.ContextExtensions.drawable
import ru.melod1n.project.vkm.extensions.DrawableExtensions.tint
import ru.melod1n.project.vkm.fragment.FragmentSettings
import ru.melod1n.project.vkm.widget.Toolbar
import com.meloda.fast.R
import com.meloda.fast.base.BaseActivity
import com.meloda.fast.common.FragmentSwitcher
import com.meloda.fast.extensions.ContextExtensions.color
import com.meloda.fast.extensions.ContextExtensions.drawable
import com.meloda.fast.extensions.DrawableExtensions.tint
import com.meloda.fast.fragment.FragmentSettings
import com.meloda.fast.widget.Toolbar
class SettingsActivity : BaseActivity() {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.activity
package com.meloda.fast.activity
import android.annotation.SuppressLint
import android.content.Intent
@@ -9,9 +9,9 @@ import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.AppCompatEditText
import com.google.android.material.button.MaterialButton
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.api.UserConfig
import ru.melod1n.project.vkm.base.BaseActivity
import com.meloda.fast.R
import com.meloda.fast.api.UserConfig
import com.meloda.fast.base.BaseActivity
@SuppressLint("InflateParams")
class StartActivity : BaseActivity() {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.activity
package com.meloda.fast.activity
import android.app.Activity
import android.app.DownloadManager
@@ -18,19 +18,19 @@ import androidx.core.text.HtmlCompat
import androidx.core.view.isVisible
import com.github.rahatarmanahmed.cpv.CircularProgressView
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
import ru.melod1n.project.vkm.BuildConfig
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.base.BaseActivity
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.common.UpdateManager
import ru.melod1n.project.vkm.extensions.ContextExtensions.drawable
import ru.melod1n.project.vkm.extensions.FloatExtensions.int
import ru.melod1n.project.vkm.listener.OnResponseListener
import ru.melod1n.project.vkm.model.NewUpdateInfo
import ru.melod1n.project.vkm.receiver.DownloadUpdateReceiver
import ru.melod1n.project.vkm.util.AndroidUtils
import ru.melod1n.project.vkm.util.TimeUtils
import com.meloda.fast.BuildConfig
import com.meloda.fast.R
import com.meloda.fast.base.BaseActivity
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.common.TaskManager
import com.meloda.fast.common.UpdateManager
import com.meloda.fast.extensions.ContextExtensions.drawable
import com.meloda.fast.extensions.FloatExtensions.int
import com.meloda.fast.listener.OnResponseListener
import com.meloda.fast.model.NewUpdateInfo
import com.meloda.fast.receiver.DownloadUpdateReceiver
import com.meloda.fast.util.AndroidUtils
import com.meloda.fast.util.TimeUtils
import java.io.File
import java.text.SimpleDateFormat
import java.util.*
@@ -1,24 +1,23 @@
package ru.melod1n.project.vkm.activity.ui.presenter
package com.meloda.fast.activity.ui.presenter
import android.content.Context
import androidx.recyclerview.widget.RecyclerView
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.activity.ui.repository.MessagesRepository
import ru.melod1n.project.vkm.activity.ui.view.MessagesView
import ru.melod1n.project.vkm.adapter.MessagesAdapter
import ru.melod1n.project.vkm.api.UserConfig
import ru.melod1n.project.vkm.api.VKApiKeys
import ru.melod1n.project.vkm.api.model.VKConversation
import ru.melod1n.project.vkm.api.model.VKMessage
import ru.melod1n.project.vkm.api.model.VKModel
import ru.melod1n.project.vkm.base.mvp.MvpOnLoadListener
import ru.melod1n.project.vkm.base.mvp.MvpPresenter
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.database.MemoryCache
import ru.melod1n.project.vkm.event.EventInfo
import ru.melod1n.project.vkm.listener.ItemClickListener
import ru.melod1n.project.vkm.listener.ItemLongClickListener
import com.meloda.fast.R
import com.meloda.fast.activity.ui.repository.MessagesRepository
import com.meloda.fast.activity.ui.view.MessagesView
import com.meloda.fast.adapter.MessagesAdapter
import com.meloda.fast.api.UserConfig
import com.meloda.fast.api.VKApiKeys
import com.meloda.fast.api.model.VKConversation
import com.meloda.fast.api.model.VKMessage
import com.meloda.fast.api.model.VKModel
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.common.TaskManager
import com.meloda.fast.database.MemoryCache
import com.meloda.fast.event.EventInfo
import com.meloda.fast.listener.ItemClickListener
import com.meloda.fast.listener.ItemLongClickListener
import com.meloda.mvp.MvpOnLoadListener
import com.meloda.mvp.MvpPresenter
import kotlin.random.Random
class MessagesPresenter(viewState: MessagesView) :
@@ -128,7 +127,9 @@ class MessagesPresenter(viewState: MessagesView) :
private fun refreshConversation(conversation: VKConversation) {
checkIsWritingAllowed(conversation)
repository.getChatInfo(conversation, object : MvpOnLoadListener<String> {
repository.getChatInfo(
conversation,
object : MvpOnLoadListener<String> {
override fun onResponse(response: String) {
viewState.setChatInfo(response)
}
@@ -1,21 +1,21 @@
package ru.melod1n.project.vkm.activity.ui.repository
package com.meloda.fast.activity.ui.repository
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.api.VKApi
import ru.melod1n.project.vkm.api.VKApiKeys
import ru.melod1n.project.vkm.api.model.VKConversation
import ru.melod1n.project.vkm.api.model.VKGroup
import ru.melod1n.project.vkm.api.model.VKMessage
import ru.melod1n.project.vkm.api.model.VKUser
import ru.melod1n.project.vkm.api.util.VKUtil
import ru.melod1n.project.vkm.base.mvp.MvpOnLoadListener
import ru.melod1n.project.vkm.base.mvp.MvpRepository
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.database.MemoryCache
import ru.melod1n.project.vkm.extensions.ArrayExtensions.asArrayList
import ru.melod1n.project.vkm.listener.OnResponseListener
import ru.melod1n.project.vkm.util.ArrayUtils
import com.meloda.fast.R
import com.meloda.fast.api.VKApi
import com.meloda.fast.api.VKApiKeys
import com.meloda.fast.api.model.VKConversation
import com.meloda.fast.api.model.VKGroup
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.AppGlobal
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.fast.util.ArrayUtils
import com.meloda.mvp.MvpOnLoadListener
import com.meloda.mvp.MvpRepository
import java.util.*
class MessagesRepository : MvpRepository<VKMessage>() {
@@ -1,7 +1,7 @@
package ru.melod1n.project.vkm.activity.ui.view
package com.meloda.fast.activity.ui.view
import ru.melod1n.project.vkm.api.model.VKConversation
import ru.melod1n.project.vkm.base.mvp.MvpView
import com.meloda.fast.api.model.VKConversation
import com.meloda.mvp.MvpView
interface MessagesView : MvpView {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.adapter
package com.meloda.fast.adapter
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
@@ -9,31 +9,31 @@ import android.text.style.ForegroundColorSpan
import android.util.Log
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.adapter.diffutil.ConversationsCallback
import ru.melod1n.project.vkm.api.UserConfig
import ru.melod1n.project.vkm.api.VKApiKeys
import ru.melod1n.project.vkm.api.model.VKConversation
import ru.melod1n.project.vkm.api.model.VKGroup
import ru.melod1n.project.vkm.api.model.VKMessage
import ru.melod1n.project.vkm.api.model.VKUser
import ru.melod1n.project.vkm.api.util.VKUtil
import ru.melod1n.project.vkm.base.BaseAdapter
import ru.melod1n.project.vkm.base.BaseHolder
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.database.MemoryCache
import ru.melod1n.project.vkm.event.EventInfo
import ru.melod1n.project.vkm.extensions.ContextExtensions.color
import ru.melod1n.project.vkm.listener.OnResponseListener
import ru.melod1n.project.vkm.widget.CircleImageView
import com.meloda.fast.R
import com.meloda.fast.adapter.diffutil.ConversationsCallback
import com.meloda.fast.api.UserConfig
import com.meloda.fast.api.VKApiKeys
import com.meloda.fast.api.model.VKConversation
import com.meloda.fast.api.model.VKGroup
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.base.BaseAdapter
import com.meloda.fast.base.BaseHolder
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.common.TaskManager
import com.meloda.fast.database.MemoryCache
import com.meloda.fast.event.EventInfo
import com.meloda.fast.extensions.ContextExtensions.color
import com.meloda.fast.listener.OnResponseListener
import com.meloda.fast.widget.CircleImageView
@Suppress("UNCHECKED_CAST")
@@ -116,7 +116,7 @@ class ConversationsAdapter(
private var date: TextView = v.findViewById(R.id.conversationDate)
private var type: ImageView = v.findViewById(R.id.conversationType)
private var userAvatar: ImageView = v.findViewById(R.id.conversationUserAvatar)
private var root: LinearLayout = v.findViewById(R.id.conversationRoot)
private var root: FrameLayout = v.findViewById(R.id.conversationRoot)
private val colorHighlight = context.color(R.color.accent)
@@ -285,25 +285,6 @@ class ConversationsAdapter(
} else {
userAvatar.setImageURI(Uri.parse(avatar))
}
// ImageUtil.loadImage(
// VKUtil.getUserAvatar(lastMessage, fromUser, fromGroup),
// object : ImageUtil.OnLoadListener {
// override fun onLoad(bitmap: Bitmap) {
// userAvatar.setImageBitmap(bitmap)
// }
//
// override fun onError(e: Exception) {
//
// }
// }
// )
// ImageUtil.loadImage(
// VKUtil.getUserAvatar(lastMessage, fromUser, fromGroup),
// userAvatar,
// placeholderNormal
// )
} else {
userAvatar.isVisible = false
userAvatar.setImageDrawable(null)
@@ -325,32 +306,14 @@ class ConversationsAdapter(
if (avatarLink.isNotEmpty()) {
avatar.setImageURI(Uri.parse(avatarLink))
}
// ImageUtil.loadImage(
// VKUtil.getAvatar(conversation, peerUser, peerGroup),
// object : ImageUtil.OnLoadListener {
// override fun onLoad(bitmap: Bitmap) {
// avatar.setImageBitmap(bitmap)
// }
//
// override fun onError(e: Exception) {
//
// }
// }
// )
// ImageUtil.loadImage(
// VKUtil.getAvatar(conversation, peerUser, peerGroup),
// avatar,
// dialogAvatarPlaceholder
// )
}
private fun setDialogType(conversation: VKConversation) {
val dDialogType = VKUtil.getDialogType(context, conversation)
type.setImageDrawable(dDialogType)
type.isVisible = dDialogType != null
// type.isVisible = dDialogType != null
type.isVisible = false
}
private fun prepareAttachments(lastMessage: VKMessage) {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.adapter
package com.meloda.fast.adapter
import android.content.Context
import android.graphics.Typeface
@@ -12,24 +12,24 @@ import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager
import ru.melod1n.project.vkm.BuildConfig
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.activity.MessagesActivity
import ru.melod1n.project.vkm.api.VKApiKeys
import ru.melod1n.project.vkm.api.model.*
import ru.melod1n.project.vkm.api.util.VKUtil
import ru.melod1n.project.vkm.base.BaseAdapter
import ru.melod1n.project.vkm.base.BaseHolder
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.database.MemoryCache
import ru.melod1n.project.vkm.event.EventInfo
import ru.melod1n.project.vkm.extensions.FloatExtensions.int
import ru.melod1n.project.vkm.listener.OnResponseListener
import ru.melod1n.project.vkm.util.AndroidUtils
import ru.melod1n.project.vkm.util.ImageUtils
import ru.melod1n.project.vkm.widget.BoundedLinearLayout
import ru.melod1n.project.vkm.widget.CircleImageView
import com.meloda.fast.BuildConfig
import com.meloda.fast.R
import com.meloda.fast.activity.MessagesActivity
import com.meloda.fast.api.VKApiKeys
import com.meloda.fast.api.model.*
import com.meloda.fast.api.util.VKUtil
import com.meloda.fast.base.BaseAdapter
import com.meloda.fast.base.BaseHolder
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.common.TaskManager
import com.meloda.fast.database.MemoryCache
import com.meloda.fast.event.EventInfo
import com.meloda.fast.extensions.FloatExtensions.int
import com.meloda.fast.listener.OnResponseListener
import com.meloda.fast.util.AndroidUtils
import com.meloda.fast.util.ImageUtils
import com.meloda.fast.widget.BoundedLinearLayout
import com.meloda.fast.widget.CircleImageView
import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.abs
@@ -384,6 +384,14 @@ class MessagesAdapter(
val boundedWidth = screenWidth - screenWidth / 5
bubble.maxWidth = boundedWidth
text.setTextColor(
AndroidUtils.getThemeAttrColor(
context,
if (message.isOutbox()) R.attr.messageOutTextColor else R.attr.messageInTextColor
)
)
text.text = VKUtil.matchMentions(message.text)
}
@@ -1,14 +1,14 @@
package ru.melod1n.project.vkm.adapter
package com.meloda.fast.adapter
import android.content.Context
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.base.BaseAdapter
import ru.melod1n.project.vkm.base.BaseHolder
import ru.melod1n.project.vkm.item.SimpleMenuItem
import com.meloda.fast.R
import com.meloda.fast.base.BaseAdapter
import com.meloda.fast.base.BaseHolder
import com.meloda.fast.item.SimpleMenuItem
import java.util.*
class SimpleItemAdapter(context: Context, values: ArrayList<SimpleMenuItem>) :
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.adapter
package com.meloda.fast.adapter
import android.content.Context
import android.view.View
@@ -7,14 +7,14 @@ import android.widget.ImageView
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.recyclerview.widget.DiffUtil
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.adapter.diffutil.UsersCallback
import ru.melod1n.project.vkm.api.model.VKUser
import ru.melod1n.project.vkm.api.util.VKUtil
import ru.melod1n.project.vkm.base.BaseAdapter
import ru.melod1n.project.vkm.base.BaseHolder
import ru.melod1n.project.vkm.util.ImageUtils
import ru.melod1n.project.vkm.widget.CircleImageView
import com.meloda.fast.R
import com.meloda.fast.adapter.diffutil.UsersCallback
import com.meloda.fast.api.model.VKUser
import com.meloda.fast.api.util.VKUtil
import com.meloda.fast.base.BaseAdapter
import com.meloda.fast.base.BaseHolder
import com.meloda.fast.util.ImageUtils
import com.meloda.fast.widget.CircleImageView
class UsersAdapter(context: Context, values: ArrayList<VKUser>) :
BaseAdapter<VKUser, UsersAdapter.ViewHolder>(context, values) {
@@ -1,7 +1,7 @@
package ru.melod1n.project.vkm.adapter.diffutil
package com.meloda.fast.adapter.diffutil
import androidx.recyclerview.widget.DiffUtil
import ru.melod1n.project.vkm.api.model.VKConversation
import com.meloda.fast.api.model.VKConversation
class ConversationsCallback(
private val oldList: List<VKConversation>,
@@ -1,9 +1,10 @@
package ru.melod1n.project.vkm.adapter.diffutil
package com.meloda.fast.adapter.diffutil
import androidx.recyclerview.widget.DiffUtil
import ru.melod1n.project.vkm.api.model.VKUser
import com.meloda.fast.api.model.VKUser
class UsersCallback(private val oldList: List<VKUser>, private val newList: List<VKUser>) : DiffUtil.Callback() {
class UsersCallback(private val oldList: List<VKUser>, private val newList: List<VKUser>) :
DiffUtil.Callback() {
companion object {
const val ONLINE = "online"
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api
package com.meloda.fast.api
object ErrorCodes {
const val UNKNOWN_ERROR = 1
@@ -1,7 +1,7 @@
package ru.melod1n.project.vkm.api
package com.meloda.fast.api
import android.text.TextUtils
import ru.melod1n.project.vkm.common.AppGlobal
import com.meloda.fast.common.AppGlobal
object UserConfig {
@@ -1,29 +1,27 @@
package ru.melod1n.project.vkm.api
package com.meloda.fast.api
import android.content.Context
import android.content.Intent
import android.util.Log
import androidx.annotation.WorkerThread
import com.meloda.fast.BuildConfig
import com.meloda.fast.activity.DropUserDataActivity
import com.meloda.fast.api.method.MessageMethodSetter
import com.meloda.fast.api.method.MethodSetter
import com.meloda.fast.api.method.UserMethodSetter
import com.meloda.fast.api.model.*
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.common.TaskManager
import com.meloda.fast.listener.OnResponseListener
import com.meloda.fast.net.HttpRequest
import org.json.JSONArray
import org.json.JSONObject
import ru.melod1n.project.vkm.BuildConfig
import ru.melod1n.project.vkm.activity.DropUserDataActivity
import ru.melod1n.project.vkm.api.method.MessageMethodSetter
import ru.melod1n.project.vkm.api.method.MethodSetter
import ru.melod1n.project.vkm.api.method.UserMethodSetter
import ru.melod1n.project.vkm.api.model.*
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.listener.OnResponseListener
import ru.melod1n.project.vkm.net.HttpRequest
import java.util.*
import kotlin.collections.ArrayList
@Suppress("UNCHECKED_CAST")
object VKApi {
private var context: Context? = null
private const val TAG = "VKM:VKApi"
const val BASE_URL = "https://api.vk.com/method/"
@@ -32,10 +30,6 @@ object VKApi {
val language: String = AppGlobal.locale.language
fun init(context: Context) {
this.context = context
}
@WorkerThread
@Suppress("UNCHECKED_CAST")
fun <T> execute(url: String, cls: Class<T>?): ArrayList<T>? {
@@ -286,9 +280,9 @@ object VKApi {
val e = VKException(url, message, code)
if (code == 5 && message.contains("invalid session")) {
context?.startActivity(Intent(context, DropUserDataActivity::class.java).apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
})
// context?.startActivity(Intent(context, DropUserDataActivity::class.java).apply {
// addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
// })
}
if (code == ErrorCodes.CAPTCHA_NEEDED) {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api
package com.meloda.fast.api
enum class VKApiKeys {
READ_MESSAGE,
@@ -1,8 +1,8 @@
package ru.melod1n.project.vkm.api
package com.meloda.fast.api
import android.util.Log
import ru.melod1n.project.vkm.BuildConfig
import ru.melod1n.project.vkm.api.util.VKUtil
import com.meloda.fast.BuildConfig
import com.meloda.fast.api.util.VKUtil
import java.net.URLEncoder
object VKAuth {
@@ -1,8 +1,9 @@
package ru.melod1n.project.vkm.api
package com.meloda.fast.api
import java.io.IOException
class VKException(var url: String, override var message: String, var code: Int) : IOException(message) {
class VKException(var url: String, override var message: String, var code: Int) :
IOException(message) {
var captchaSid: String? = null
var captchaImg: String? = null
var redirectUri: String? = null
@@ -1,13 +1,13 @@
package ru.melod1n.project.vkm.api
package com.meloda.fast.api
import android.util.Log
import androidx.annotation.WorkerThread
import com.meloda.fast.api.model.VKMessage
import com.meloda.fast.api.util.VKUtil
import com.meloda.fast.common.TaskManager
import com.meloda.fast.database.MemoryCache
import com.meloda.fast.event.EventInfo
import org.json.JSONArray
import ru.melod1n.project.vkm.api.model.VKMessage
import ru.melod1n.project.vkm.api.util.VKUtil
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.database.MemoryCache
import ru.melod1n.project.vkm.event.EventInfo
@Suppress("UNCHECKED_CAST")
class VKLongPollParser {
@@ -1,6 +1,6 @@
package ru.melod1n.project.vkm.api.method
package com.meloda.fast.api.method
import ru.melod1n.project.vkm.util.ArrayUtils
import com.meloda.fast.util.ArrayUtils
class MessageMethodSetter(name: String) : MethodSetter(name) {
@@ -1,12 +1,12 @@
package ru.melod1n.project.vkm.api.method
package com.meloda.fast.api.method
import android.util.ArrayMap
import android.util.Log
import ru.melod1n.project.vkm.BuildConfig
import ru.melod1n.project.vkm.api.UserConfig
import ru.melod1n.project.vkm.api.VKApi
import ru.melod1n.project.vkm.listener.OnResponseListener
import ru.melod1n.project.vkm.util.ArrayUtils
import com.meloda.fast.BuildConfig
import com.meloda.fast.api.UserConfig
import com.meloda.fast.api.VKApi
import com.meloda.fast.listener.OnResponseListener
import com.meloda.fast.util.ArrayUtils
import java.net.URLEncoder
@Suppress("UNCHECKED_CAST")
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.method
package com.meloda.fast.api.method
class UserMethodSetter(name: String) : MethodSetter(name) {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONArray
import java.util.*
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
class VKComment { //https://vk.com/dev/objects/comment
}
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import androidx.room.Embedded
import androidx.room.Entity
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
import java.util.*
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import androidx.room.Entity
import androidx.room.PrimaryKey
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import androidx.room.Entity
import androidx.room.PrimaryKey
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
import java.io.Serializable
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import java.util.*
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
class VKMarketAlbum { //https://vk.com/dev/objects/market_album
}
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
class VKMarketItem { //https://vk.com/dev/objects/market_item
}
@@ -1,10 +1,10 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import android.util.ArrayMap
import androidx.room.*
import com.meloda.fast.database.dao.converters.ArrayListToByteArrayConverter
import com.meloda.fast.database.dao.converters.ForwardedConverter
import org.json.JSONObject
import ru.melod1n.project.vkm.database.dao.converters.ArrayListToByteArrayConverter
import ru.melod1n.project.vkm.database.dao.converters.ForwardedConverter
@SuppressWarnings(RoomWarnings.PRIMARY_KEY_FROM_EMBEDDED_IS_DROPPED)
@Entity(tableName = "messages")
@@ -152,7 +152,7 @@ open class VKMessage() : VKModel() {
}
fun getForwardedMessages() = ArrayList<VKMessage>().apply {
for (model in fwdMessages) add(model as VKMessage)
for (model in fwdMessages) add(model)
}
fun isFromUser() = fromId > 0
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import androidx.room.Ignore
import org.json.JSONObject
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import java.io.Serializable
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
import java.util.*
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
import java.util.*
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import android.graphics.Color
import org.json.JSONObject
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
import java.util.*
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import androidx.room.Entity
import androidx.room.PrimaryKey
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
import org.json.JSONObject
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.model
package com.meloda.fast.api.model
class VKWall { //https://vk.com/dev/objects/post
}
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.api.util
package com.meloda.fast.api.util
import android.content.Context
import android.graphics.drawable.Drawable
@@ -6,20 +6,20 @@ import android.util.Log
import androidx.annotation.WorkerThread
import androidx.core.content.ContextCompat
import com.amulyakhare.textdrawable.TextDrawable
import com.meloda.fast.BuildConfig
import com.meloda.fast.R
import com.meloda.fast.api.UserConfig
import com.meloda.fast.api.VKApiKeys
import com.meloda.fast.api.model.*
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.common.TaskManager
import com.meloda.fast.database.MemoryCache
import com.meloda.fast.extensions.ContextExtensions.color
import com.meloda.fast.extensions.ContextExtensions.drawable
import com.meloda.fast.extensions.StringExtensions.lowerCase
import com.meloda.fast.listener.OnResponseListener
import com.meloda.fast.util.TextUtils
import org.json.JSONArray
import ru.melod1n.project.vkm.BuildConfig
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.api.UserConfig
import ru.melod1n.project.vkm.api.VKApiKeys
import ru.melod1n.project.vkm.api.model.*
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.database.MemoryCache
import ru.melod1n.project.vkm.extensions.ContextExtensions.color
import ru.melod1n.project.vkm.extensions.ContextExtensions.drawable
import ru.melod1n.project.vkm.extensions.StringExtensions.lowerCase
import ru.melod1n.project.vkm.listener.OnResponseListener
import ru.melod1n.project.vkm.util.TextUtils
import java.text.SimpleDateFormat
import java.util.*
import java.util.regex.Pattern
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.base
package com.meloda.fast.base
import android.view.View
import androidx.appcompat.app.AppCompatActivity
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.base
package com.meloda.fast.base
import android.content.Context
import android.os.Bundle
@@ -8,10 +8,10 @@ import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import androidx.recyclerview.widget.RecyclerView
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.extensions.ArrayExtensions.asArrayList
import ru.melod1n.project.vkm.listener.ItemClickListener
import ru.melod1n.project.vkm.listener.ItemLongClickListener
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.extensions.ArrayExtensions.asArrayList
import com.meloda.fast.listener.ItemClickListener
import com.meloda.fast.listener.ItemLongClickListener
import java.io.Serializable
import java.util.*
@@ -1,9 +1,9 @@
package ru.melod1n.project.vkm.base
package com.meloda.fast.base
import androidx.annotation.IdRes
import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.Fragment
import ru.melod1n.project.vkm.activity.MainActivity
import com.meloda.fast.activity.MainActivity
abstract class BaseFragment : Fragment() {
@@ -11,7 +11,9 @@ abstract class BaseFragment : Fragment() {
val toolbar: Toolbar = requireView().findViewById(resId)
activity?.let {
if (it is MainActivity && toolbar is ru.melod1n.project.vkm.widget.Toolbar) it.initToolbar(toolbar)
if (it is MainActivity && toolbar is com.meloda.fast.widget.Toolbar) it.initToolbar(
toolbar
)
}
}
@@ -1,10 +1,10 @@
package ru.melod1n.project.vkm.base
package com.meloda.fast.base
import android.os.Bundle
import android.view.ViewGroup
import android.view.WindowManager
import androidx.fragment.app.DialogFragment
import ru.melod1n.project.vkm.R
import com.meloda.fast.R
abstract class BaseFullscreenDialog : DialogFragment() {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.base
package com.meloda.fast.base
import android.view.View
import androidx.recyclerview.widget.RecyclerView
@@ -0,0 +1,6 @@
package com.meloda.fast.base
abstract class FragmentStackActivity : BaseActivity() {
}
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.common
package com.meloda.fast.common
import android.annotation.SuppressLint
import android.app.Application
@@ -17,21 +17,20 @@ import androidx.core.content.pm.PackageInfoCompat
import androidx.preference.PreferenceManager
import androidx.room.Room
import com.facebook.drawee.backends.pipeline.Fresco
import com.meloda.fast.BuildConfig
import com.meloda.fast.R
import com.meloda.fast.api.UserConfig
import com.meloda.fast.database.AppDatabase
import com.meloda.fast.database.MemoryCache
import com.meloda.fast.fragment.FragmentSettings
import com.meloda.fast.util.AndroidUtils
import com.meloda.mvp.MvpBase
import com.microsoft.appcenter.AppCenter
import com.microsoft.appcenter.analytics.Analytics
import com.microsoft.appcenter.crashes.Crashes
import org.acra.ACRA
import org.acra.ReportingInteractionMode
import org.acra.annotation.ReportsCrashes
import ru.melod1n.project.vkm.BuildConfig
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.api.UserConfig
import ru.melod1n.project.vkm.api.VKApi
import ru.melod1n.project.vkm.base.mvp.MvpBase
import ru.melod1n.project.vkm.database.AppDatabase
import ru.melod1n.project.vkm.database.MemoryCache
import ru.melod1n.project.vkm.fragment.FragmentSettings
import ru.melod1n.project.vkm.util.AndroidUtils
import java.util.*
@SuppressLint("NonConstantResourceId")
@@ -117,8 +116,6 @@ class AppGlobal : Application() {
UserConfig.restore()
VKApi.init(this)
MvpBase.init(handler)
fillMemoryCache()
@@ -147,6 +144,7 @@ class AppGlobal : Application() {
}
fun getNightMode(nightMode: Int = -1): Int {
return AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
val mode = if (nightMode != -1) nightMode else preferences.getString(
FragmentSettings.KEY_THEME,
"-1"
@@ -1,11 +1,11 @@
package ru.melod1n.project.vkm.common
package com.meloda.fast.common
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.fragment.FragmentConversations
import ru.melod1n.project.vkm.fragment.FragmentFriends
import ru.melod1n.project.vkm.fragment.FragmentImportant
import com.meloda.fast.R
import com.meloda.fast.fragment.FragmentConversations
import com.meloda.fast.fragment.FragmentFriends
import com.meloda.fast.fragment.FragmentImportant
object FragmentSwitcher {
@@ -1,18 +1,18 @@
package ru.melod1n.project.vkm.common
package com.meloda.fast.common
import android.util.Log
import ru.melod1n.project.vkm.BuildConfig
import ru.melod1n.project.vkm.api.VKApi
import ru.melod1n.project.vkm.api.VKApiKeys
import ru.melod1n.project.vkm.api.method.MethodSetter
import ru.melod1n.project.vkm.api.model.VKConversation
import ru.melod1n.project.vkm.api.model.VKGroup
import ru.melod1n.project.vkm.api.model.VKMessage
import ru.melod1n.project.vkm.api.model.VKUser
import ru.melod1n.project.vkm.concurrent.LowThread
import ru.melod1n.project.vkm.database.MemoryCache
import ru.melod1n.project.vkm.event.EventInfo
import ru.melod1n.project.vkm.listener.OnResponseListener
import com.meloda.fast.BuildConfig
import com.meloda.fast.api.VKApi
import com.meloda.fast.api.VKApiKeys
import com.meloda.fast.api.method.MethodSetter
import com.meloda.fast.api.model.VKConversation
import com.meloda.fast.api.model.VKGroup
import com.meloda.fast.api.model.VKMessage
import com.meloda.fast.api.model.VKUser
import com.meloda.fast.concurrent.LowThread
import com.meloda.fast.database.MemoryCache
import com.meloda.fast.event.EventInfo
import com.meloda.fast.listener.OnResponseListener
import java.util.*
import java.util.stream.Collectors
@@ -1,8 +1,8 @@
package ru.melod1n.project.vkm.common
package com.meloda.fast.common
import android.content.Context
import android.content.IntentFilter
import ru.melod1n.project.vkm.receiver.MinuteReceiver
import com.meloda.fast.receiver.MinuteReceiver
import java.util.*
object TimeManager {
@@ -1,12 +1,12 @@
package ru.melod1n.project.vkm.common
package com.meloda.fast.common
import android.util.Log
import androidx.collection.arrayMapOf
import com.meloda.fast.BuildConfig
import com.meloda.fast.model.NewUpdateInfo
import com.meloda.fast.net.HttpRequest
import org.json.JSONArray
import org.json.JSONObject
import ru.melod1n.project.vkm.BuildConfig
import ru.melod1n.project.vkm.model.NewUpdateInfo
import ru.melod1n.project.vkm.net.HttpRequest
object UpdateManager {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.concurrent
package com.meloda.fast.concurrent
import android.os.Process
@@ -1,9 +1,9 @@
package ru.melod1n.project.vkm.database
package com.meloda.fast.database
import androidx.room.Database
import androidx.room.RoomDatabase
import ru.melod1n.project.vkm.api.model.*
import ru.melod1n.project.vkm.database.dao.*
import com.meloda.fast.api.model.*
import com.meloda.fast.database.dao.*
@Database(
entities = [VKConversation::class, VKMessage::class, VKUser::class, VKGroup::class, VKFriend::class],
@@ -1,9 +1,9 @@
package ru.melod1n.project.vkm.database
package com.meloda.fast.database
import android.util.SparseArray
import androidx.annotation.WorkerThread
import ru.melod1n.project.vkm.api.model.*
import ru.melod1n.project.vkm.common.AppGlobal
import com.meloda.fast.api.model.*
import com.meloda.fast.common.AppGlobal
object MemoryCache {
@@ -1,7 +1,7 @@
package ru.melod1n.project.vkm.database.dao
package com.meloda.fast.database.dao
import androidx.room.*
import ru.melod1n.project.vkm.api.model.VKConversation
import com.meloda.fast.api.model.VKConversation
@Dao
interface ConversationsDao {
@@ -1,7 +1,7 @@
package ru.melod1n.project.vkm.database.dao
package com.meloda.fast.database.dao
import androidx.room.*
import ru.melod1n.project.vkm.api.model.VKFriend
import com.meloda.fast.api.model.VKFriend
@Dao
interface FriendsDao {
@@ -1,7 +1,7 @@
package ru.melod1n.project.vkm.database.dao
package com.meloda.fast.database.dao
import androidx.room.*
import ru.melod1n.project.vkm.api.model.VKGroup
import com.meloda.fast.api.model.VKGroup
@Dao
interface GroupsDao {
@@ -1,7 +1,7 @@
package ru.melod1n.project.vkm.database.dao
package com.meloda.fast.database.dao
import androidx.room.*
import ru.melod1n.project.vkm.api.model.VKMessage
import com.meloda.fast.api.model.VKMessage
@Dao
interface MessagesDao {
@@ -1,7 +1,7 @@
package ru.melod1n.project.vkm.database.dao
package com.meloda.fast.database.dao
import androidx.room.*
import ru.melod1n.project.vkm.api.model.VKUser
import com.meloda.fast.api.model.VKUser
@Dao
interface UsersDao {
@@ -1,9 +1,9 @@
package ru.melod1n.project.vkm.database.dao.converters
package com.meloda.fast.database.dao.converters
import androidx.room.TypeConverter
import ru.melod1n.project.vkm.api.model.VKModel
import ru.melod1n.project.vkm.extensions.ArrayExtensions.isNullOrEmpty
import ru.melod1n.project.vkm.util.Utils
import com.meloda.fast.api.model.VKModel
import com.meloda.fast.extensions.ArrayExtensions.isNullOrEmpty
import com.meloda.fast.util.Utils
@Suppress("UNCHECKED_CAST")
class ArrayListToByteArrayConverter {
@@ -1,9 +1,9 @@
package ru.melod1n.project.vkm.database.dao.converters
package com.meloda.fast.database.dao.converters
import androidx.room.TypeConverter
import ru.melod1n.project.vkm.api.model.VKMessage
import ru.melod1n.project.vkm.extensions.ArrayExtensions.isNullOrEmpty
import ru.melod1n.project.vkm.util.Utils
import com.meloda.fast.api.model.VKMessage
import com.meloda.fast.extensions.ArrayExtensions.isNullOrEmpty
import com.meloda.fast.util.Utils
import java.util.*
@Suppress("UNCHECKED_CAST")
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.dialog
package com.meloda.fast.dialog
import android.content.Intent
import android.os.Bundle
@@ -9,21 +9,23 @@ import android.widget.RelativeLayout
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.activity.SettingsActivity
import ru.melod1n.project.vkm.adapter.SimpleItemAdapter
import ru.melod1n.project.vkm.api.UserConfig
import ru.melod1n.project.vkm.base.BaseFullscreenDialog
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.database.MemoryCache
import ru.melod1n.project.vkm.extensions.ContextExtensions.color
import ru.melod1n.project.vkm.extensions.ContextExtensions.drawable
import ru.melod1n.project.vkm.extensions.DrawableExtensions.tint
import ru.melod1n.project.vkm.extensions.FragmentExtensions.findViewById
import ru.melod1n.project.vkm.item.SimpleMenuItem
import ru.melod1n.project.vkm.listener.ItemClickListener
import ru.melod1n.project.vkm.util.ViewUtils
import ru.melod1n.project.vkm.widget.Toolbar
import com.meloda.fast.R
import com.meloda.fast.activity.SettingsActivity
import com.meloda.fast.adapter.SimpleItemAdapter
import com.meloda.fast.api.UserConfig
import com.meloda.fast.base.BaseFullscreenDialog
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.database.MemoryCache
import com.meloda.fast.extensions.ContextExtensions.color
import com.meloda.fast.extensions.ContextExtensions.drawable
import com.meloda.fast.extensions.DrawableExtensions.tint
import com.meloda.fast.extensions.FragmentExtensions.findViewById
import com.meloda.fast.item.SimpleMenuItem
import com.meloda.fast.listener.ItemClickListener
import com.meloda.fast.util.AndroidUtils
import com.meloda.fast.util.ColorUtils
import com.meloda.fast.util.ViewUtils
import com.meloda.fast.widget.Toolbar
class AccountDialog : BaseFullscreenDialog(), ItemClickListener {
@@ -61,7 +63,7 @@ class AccountDialog : BaseFullscreenDialog(), ItemClickListener {
private fun prepareToolbar() {
toolbar.navigationIcon = requireContext().drawable(R.drawable.ic_close)
.tint(requireContext().color(R.color.accent))
.tint(ColorUtils.getColorAccent(requireContext()))
toolbar.setTitle(R.string.account_dialog_title)
@@ -88,7 +90,7 @@ class AccountDialog : BaseFullscreenDialog(), ItemClickListener {
SimpleMenuItem(
requireContext().drawable(R.drawable.ic_settings_outline)
.tint(requireContext().color(R.color.accent)),
.tint(ColorUtils.getColorAccent(requireContext())),
requireContext().getString(R.string.navigation_settings)
) { openSettingsScreen() }.let { items.add(it) }
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.dialog
package com.meloda.fast.dialog
import android.os.Bundle
import android.view.LayoutInflater
@@ -10,12 +10,12 @@ import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.adapter.SimpleItemAdapter
import ru.melod1n.project.vkm.api.model.VKConversation
import ru.melod1n.project.vkm.api.model.VKUser
import ru.melod1n.project.vkm.database.MemoryCache
import ru.melod1n.project.vkm.item.SimpleMenuItem
import com.meloda.fast.R
import com.meloda.fast.adapter.SimpleItemAdapter
import com.meloda.fast.api.model.VKConversation
import com.meloda.fast.api.model.VKUser
import com.meloda.fast.database.MemoryCache
import com.meloda.fast.item.SimpleMenuItem
open class ProfileDialog(
private val conversation: VKConversation,
@@ -0,0 +1,5 @@
package com.meloda.fast.event
import com.meloda.fast.api.VKApiKeys
class EventInfo<T> constructor(var key: VKApiKeys, var data: T? = null)
@@ -1,6 +1,4 @@
package ru.melod1n.project.vkm.extensions
import android.content.Context
package com.meloda.fast.extensions
object ArrayExtensions {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.extensions
package com.meloda.fast.extensions
import android.content.Context
import android.graphics.Typeface
@@ -1,10 +1,7 @@
package ru.melod1n.project.vkm.extensions
package com.meloda.fast.extensions
import android.content.Context
import android.graphics.drawable.Drawable
import androidx.annotation.ColorInt
import androidx.annotation.DrawableRes
import androidx.core.content.ContextCompat
object DrawableExtensions {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.extensions
package com.meloda.fast.extensions
import kotlin.math.roundToInt
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.extensions
package com.meloda.fast.extensions
import android.view.View
import androidx.fragment.app.Fragment
@@ -10,7 +10,7 @@ object FragmentExtensions {
}
fun Fragment.runOnUiThread(runnable: Runnable) {
requireActivity().runOnUiThread(runnable)
activity?.runOnUiThread(runnable)
}
}
@@ -1,11 +1,11 @@
package ru.melod1n.project.vkm.extensions
package com.meloda.fast.extensions
import android.graphics.drawable.Drawable
import android.util.Log
import android.widget.ImageView
import com.meloda.fast.BuildConfig
import com.squareup.picasso.Callback
import com.squareup.picasso.Picasso
import ru.melod1n.project.vkm.BuildConfig
object ImageViewExtensions {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.extensions
package com.meloda.fast.extensions
import java.util.*
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.extensions
package com.meloda.fast.extensions
import android.widget.TextView
import com.google.android.material.textfield.TextInputLayout
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.fragment
package com.meloda.fast.fragment
import android.content.Intent
import android.graphics.drawable.ColorDrawable
@@ -8,25 +8,26 @@ import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.ProgressBar
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.activity.MessagesActivity
import ru.melod1n.project.vkm.api.UserConfig
import ru.melod1n.project.vkm.api.VKApiKeys
import ru.melod1n.project.vkm.base.BaseFragment
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.event.EventInfo
import ru.melod1n.project.vkm.extensions.FragmentExtensions.findViewById
import ru.melod1n.project.vkm.fragment.ui.presenter.ConversationsPresenter
import ru.melod1n.project.vkm.fragment.ui.view.ConversationsView
import ru.melod1n.project.vkm.util.ViewUtils
import ru.melod1n.project.vkm.widget.Toolbar
import com.meloda.fast.R
import com.meloda.fast.activity.MessagesActivity
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.ConversationsPresenter
import com.meloda.fast.fragment.ui.view.ConversationsView
import com.meloda.fast.util.AndroidUtils
import com.meloda.fast.util.ViewUtils
import com.meloda.fast.widget.Toolbar
@Suppress("UNCHECKED_CAST")
@@ -99,15 +100,9 @@ class FragmentConversations : BaseFragment(), ConversationsView {
val decoration = DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
decoration.setDrawable(
ColorDrawable(
ContextCompat.getColor(
requireContext(),
R.color.divider
)
)
ColorDrawable(AndroidUtils.getThemeAttrColor(requireContext(), R.attr.dividerHorizontal))
)
recyclerView.setHasFixedSize(true)
recyclerView.itemAnimator = null
recyclerView.addItemDecoration(decoration)
@@ -118,7 +113,7 @@ class FragmentConversations : BaseFragment(), ConversationsView {
TaskManager.execute {
AppGlobal.database.users.getById(UserConfig.userId)?.let {
if (it.photo100.isNotEmpty()) {
runOnUi {
runOnUiThread {
toolbar.getAvatar().setImageURI(it.photo100)
}
}
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.fragment
package com.meloda.fast.fragment
import android.content.Intent
import android.graphics.drawable.ColorDrawable
@@ -14,19 +14,19 @@ import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.activity.MessagesActivity
import ru.melod1n.project.vkm.api.UserConfig
import ru.melod1n.project.vkm.api.VKApiKeys
import ru.melod1n.project.vkm.base.BaseFragment
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.event.EventInfo
import ru.melod1n.project.vkm.extensions.FragmentExtensions.findViewById
import ru.melod1n.project.vkm.fragment.ui.presenter.FriendsPresenter
import ru.melod1n.project.vkm.fragment.ui.view.FriendsView
import ru.melod1n.project.vkm.util.ViewUtils
import ru.melod1n.project.vkm.widget.Toolbar
import com.meloda.fast.R
import com.meloda.fast.activity.MessagesActivity
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.FriendsPresenter
import com.meloda.fast.fragment.ui.view.FriendsView
import com.meloda.fast.util.ViewUtils
import com.meloda.fast.widget.Toolbar
class FragmentFriends(private val userId: Int = 0) : BaseFragment(), FriendsView {
@@ -1,11 +1,11 @@
package ru.melod1n.project.vkm.fragment
package com.meloda.fast.fragment
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.base.BaseFragment
import com.meloda.fast.R
import com.meloda.fast.base.BaseFragment
class FragmentImportant : BaseFragment() {
@@ -1,6 +1,6 @@
package ru.melod1n.project.vkm.fragment
package com.meloda.fast.fragment
import ru.melod1n.project.vkm.base.BaseFragment
import com.meloda.fast.base.BaseFragment
class FragmentSearch : BaseFragment() {
inner class SearchConversations : BaseFragment()
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.fragment
package com.meloda.fast.fragment
import android.content.Intent
import android.os.Bundle
@@ -6,15 +6,15 @@ import androidx.appcompat.app.AlertDialog
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceScreen
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.activity.DropUserDataActivity
import ru.melod1n.project.vkm.activity.UpdateActivity
import ru.melod1n.project.vkm.base.BaseActivity
import ru.melod1n.project.vkm.common.AppGlobal
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.extensions.ContextExtensions.color
import ru.melod1n.project.vkm.extensions.ContextExtensions.drawable
import ru.melod1n.project.vkm.util.AndroidUtils
import com.meloda.fast.R
import com.meloda.fast.activity.DropUserDataActivity
import com.meloda.fast.activity.UpdateActivity
import com.meloda.fast.base.BaseActivity
import com.meloda.fast.common.AppGlobal
import com.meloda.fast.common.TaskManager
import com.meloda.fast.extensions.ContextExtensions.color
import com.meloda.fast.extensions.ContextExtensions.drawable
import com.meloda.fast.util.AndroidUtils
class FragmentSettings : PreferenceFragmentCompat(),
Preference.OnPreferenceClickListener,
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.fragment
package com.meloda.fast.fragment
import android.os.Bundle
import android.text.Editable
@@ -10,11 +10,11 @@ import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import android.widget.EditText
import com.google.android.material.button.MaterialButton
import ru.melod1n.project.vkm.R
import ru.melod1n.project.vkm.base.BaseFragment
import ru.melod1n.project.vkm.fragment.ui.presenter.LoginPresenter
import ru.melod1n.project.vkm.fragment.ui.view.LoginView
import ru.melod1n.project.vkm.util.KeyboardUtils
import com.meloda.fast.R
import com.meloda.fast.base.BaseFragment
import com.meloda.fast.fragment.ui.presenter.LoginPresenter
import com.meloda.fast.fragment.ui.view.LoginView
import com.meloda.fast.util.KeyboardUtils
class LoginFragment : BaseFragment(), LoginView {
@@ -1,4 +1,4 @@
package ru.melod1n.project.vkm.fragment
package com.meloda.fast.fragment
import android.graphics.Bitmap
import android.os.Bundle
@@ -10,8 +10,8 @@ import android.webkit.CookieManager
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.core.os.bundleOf
import ru.melod1n.project.vkm.api.VKAuth
import ru.melod1n.project.vkm.base.BaseFragment
import com.meloda.fast.api.VKAuth
import com.meloda.fast.base.BaseFragment
class ValidationFragment : BaseFragment() {
@@ -1,28 +1,27 @@
package ru.melod1n.project.vkm.fragment.ui.presenter
package com.meloda.fast.fragment.ui.presenter
import android.content.Context
import android.os.Bundle
import android.util.Log
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import ru.melod1n.project.vkm.BuildConfig
import ru.melod1n.project.vkm.activity.MessagesActivity
import ru.melod1n.project.vkm.adapter.ConversationsAdapter
import ru.melod1n.project.vkm.adapter.diffutil.ConversationsCallback
import ru.melod1n.project.vkm.api.model.VKConversation
import ru.melod1n.project.vkm.api.util.VKUtil
import ru.melod1n.project.vkm.base.mvp.MvpOnLoadListener
import ru.melod1n.project.vkm.base.mvp.MvpPresenter
import ru.melod1n.project.vkm.common.TaskManager
import ru.melod1n.project.vkm.common.TimeManager
import ru.melod1n.project.vkm.database.MemoryCache
import ru.melod1n.project.vkm.fragment.ui.repository.ConversationsRepository
import ru.melod1n.project.vkm.fragment.ui.view.ConversationsView
import ru.melod1n.project.vkm.listener.ItemClickListener
import ru.melod1n.project.vkm.listener.ItemLongClickListener
import ru.melod1n.project.vkm.util.AndroidUtils
import ru.melod1n.project.vkm.util.ArrayUtils
import com.meloda.fast.BuildConfig
import com.meloda.fast.activity.MessagesActivity
import com.meloda.fast.adapter.ConversationsAdapter
import com.meloda.fast.adapter.diffutil.ConversationsCallback
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.ConversationsRepository
import com.meloda.fast.fragment.ui.view.ConversationsView
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.MvpPresenter
import java.util.*
class ConversationsPresenter(viewState: ConversationsView) :
@@ -52,24 +51,26 @@ class ConversationsPresenter(viewState: ConversationsView) :
prepareViews()
setRecyclerViewScrollListener(recyclerView)
// setRecyclerViewScrollListener(recyclerView)
setRefreshLayoutListener(refreshLayout)
createAdapter()
TimeManager.addOnMinuteChangeListener(this)
getCachedConversations(0, DEFAULT_CONVERSATIONS_COUNT, object : MvpOnLoadListener<Any?> {
override fun onResponse(response: Any?) {
setState(if (adapter.isEmpty()) ListState.EMPTY_LOADING else ListState.FILLED_LOADING)
loadConversations(0, DEFAULT_CONVERSATIONS_COUNT)
}
override fun onError(t: Throwable) {
setState(if (adapter.isEmpty()) ListState.EMPTY_LOADING else ListState.FILLED_LOADING)
loadConversations(0, DEFAULT_CONVERSATIONS_COUNT)
}
})
// getCachedConversations(0, DEFAULT_CONVERSATIONS_COUNT, object : MvpOnLoadListener<Any?> {
// override fun onResponse(response: Any?) {
// setState(if (adapter.isEmpty()) ListState.EMPTY_LOADING else ListState.FILLED_LOADING)
// loadConversations(0, DEFAULT_CONVERSATIONS_COUNT)
// }
//
// override fun onError(t: Throwable) {
// setState(if (adapter.isEmpty()) ListState.EMPTY_LOADING else ListState.FILLED_LOADING)
// loadConversations(0, DEFAULT_CONVERSATIONS_COUNT)
// }
// })
}
private fun setRecyclerViewScrollListener(recyclerView: RecyclerView) {
@@ -1,21 +1,20 @@
package ru.melod1n.project.vkm.fragment.ui.presenter
package com.meloda.fast.fragment.ui.presenter
import android.content.Context
import android.os.Bundle
import android.util.Log
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import ru.melod1n.project.vkm.activity.MessagesActivity
import ru.melod1n.project.vkm.adapter.UsersAdapter
import ru.melod1n.project.vkm.api.model.VKUser
import ru.melod1n.project.vkm.base.mvp.MvpOnLoadListener
import ru.melod1n.project.vkm.base.mvp.MvpPresenter
import ru.melod1n.project.vkm.fragment.ui.repository.FriendsRepository
import ru.melod1n.project.vkm.fragment.ui.view.FriendsView
import ru.melod1n.project.vkm.listener.ItemClickListener
import ru.melod1n.project.vkm.util.AndroidUtils
import ru.melod1n.project.vkm.util.ArrayUtils
import com.meloda.fast.activity.MessagesActivity
import com.meloda.fast.adapter.UsersAdapter
import com.meloda.fast.api.model.VKUser
import com.meloda.fast.fragment.ui.repository.FriendsRepository
import com.meloda.fast.fragment.ui.view.FriendsView
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.MvpPresenter
class FriendsPresenter(viewState: FriendsView) :
MvpPresenter<VKUser, FriendsRepository, FriendsView>(
@@ -51,7 +50,7 @@ class FriendsPresenter(viewState: FriendsView) :
getCachedFriends(userId, 0, DEFAULT_FRIENDS_COUNT, false, object : MvpOnLoadListener<Any?> {
override fun onResponse(response: Any?) {
setState(if (adapter.isEmpty()) ListState.EMPTY_LOADING else ListState.FILLED_LOADING)
setState(if (adapter.isEmpty()) MvpPresenter.ListState.EMPTY_LOADING else ListState.FILLED_LOADING)
loadFriends(userId, 0, ConversationsPresenter.DEFAULT_CONVERSATIONS_COUNT)
}
@@ -71,7 +70,11 @@ class FriendsPresenter(viewState: FriendsView) :
) {
setState(if (adapter.isEmpty()) ListState.EMPTY_LOADING else ListState.FILLED_LOADING)
repository.getCachedFriends(userId, offset, count, onlyOnline,
repository.getCachedFriends(
userId,
offset,
count,
onlyOnline,
object : MvpOnLoadListener<ArrayList<VKUser>> {
override fun onResponse(response: ArrayList<VKUser>) {
val friends = ArrayUtils.cut(response, offset, count)
@@ -105,7 +108,10 @@ class FriendsPresenter(viewState: FriendsView) :
setState(if (adapter.isEmpty()) ListState.EMPTY_LOADING else ListState.FILLED_LOADING)
}
repository.loadFriends(userId, offset, count,
repository.loadFriends(
userId,
offset,
count,
object : MvpOnLoadListener<ArrayList<VKUser>> {
override fun onResponse(response: ArrayList<VKUser>) {
friendsCount = VKUser.friendsCount

Some files were not shown because too many files have changed in this diff Show More