From 465b492328ec7dec787690775f617b08b99b3b18 Mon Sep 17 00:00:00 2001 From: Danil Nikolaev Date: Fri, 10 Sep 2021 22:50:57 +0300 Subject: [PATCH] DataSource wrapping Some refactoring --- app/build.gradle.kts | 7 +- .../fast/api/{network => }/VKModules.kt | 38 +++++++- .../main/kotlin/com/meloda/fast/api/VKUtil.kt | 1 + .../fast/api/datasource/AuthDataSource.kt | 15 ++++ .../api/datasource/ConversationsDataSource.kt | 18 ++++ .../fast/api/datasource/MessagesDataSource.kt | 12 +++ .../fast/api/datasource/UsersDataSource.kt | 18 ++++ .../com/meloda/fast/api/loader/UsersLoader.kt | 18 ++-- .../meloda/fast/api/model/VkConversation.kt | 12 ++- .../com/meloda/fast/api/model/VkMessage.kt | 11 ++- .../com/meloda/fast/api/model/VkUser.kt | 5 ++ .../fast/api/model/base/BaseVkConversation.kt | 7 ++ .../fast/api/model/base/BaseVkMessage.kt | 10 +++ .../meloda/fast/api/model/base/BaseVkUser.kt | 7 ++ .../fast/api/model/{ => old}/VKAttachments.kt | 2 +- .../fast/api/model/{ => old}/VKAudio.kt | 2 +- .../api/model/{ => old}/VKAudioMessage.kt | 2 +- .../meloda/fast/api/model/{ => old}/VKCall.kt | 2 +- .../fast/api/model/{ => old}/VKComment.kt | 2 +- .../fast/api/model/{ => old}/VKDocument.kt | 2 +- .../fast/api/model/{ => old}/VKGeolocation.kt | 2 +- .../meloda/fast/api/model/{ => old}/VKGift.kt | 2 +- .../fast/api/model/{ => old}/VKGraffiti.kt | 2 +- .../fast/api/model/{ => old}/VKGroup.kt | 2 +- .../meloda/fast/api/model/{ => old}/VKLink.kt | 2 +- .../api/model/{ => old}/VKLongPollHistory.kt | 2 +- .../api/model/{ => old}/VKLongPollServer.kt | 2 +- .../api/model/{ => old}/VKMessageAction.kt | 2 +- .../fast/api/model/{ => old}/VKModel.kt | 3 +- .../fast/api/model/{ => old}/VKPhoto.kt | 2 +- .../fast/api/model/{ => old}/VKPhotoSize.kt | 2 +- .../meloda/fast/api/model/{ => old}/VKPoll.kt | 2 +- .../fast/api/model/{ => old}/VKSticker.kt | 2 +- .../fast/api/model/{ => old}/VKVideo.kt | 4 +- .../meloda/fast/api/model/{ => old}/VKWall.kt | 2 +- .../api/model/{ => old}/oldVKConversation.kt | 2 +- .../fast/api/model/{ => old}/oldVKMessage.kt | 2 +- .../fast/api/model/{ => old}/oldVKUser.kt | 2 +- .../api/network/repo/ConversationsRepo.kt | 4 +- .../fast/api/network/repo/MessagesRepo.kt | 4 + .../meloda/fast/api/network/repo/UsersRepo.kt | 10 +-- .../fast/api/network/request/UsersRequest.kt | 15 +++- .../com/meloda/fast/common/AppGlobal.kt | 17 +++- .../com/meloda/fast/database/AppDatabase.kt | 27 ++++++ .../fast/database/dao/ConversationsDao.kt | 8 ++ .../meloda/fast/database/dao/MessagesDao.kt | 7 ++ .../com/meloda/fast/database/dao/UsersDao.kt | 33 +++++++ .../fast/database/{ => old}/CacheStorage.kt | 44 ++++----- .../fast/database/{ => old}/DatabaseHelper.kt | 2 +- .../fast/database/{ => old}/DatabaseKeys.kt | 2 +- .../fast/database/{ => old}/DatabaseUtils.kt | 90 +++++++++---------- .../fast/database/{ => old}/QueryBuilder.kt | 2 +- .../fast/database/{ => old}/base/Storage.kt | 4 +- .../{ => old}/storage/ChatsStorage.kt | 44 ++++----- .../{ => old}/storage/GroupsStorage.kt | 28 +++--- .../{ => old}/storage/MessagesStorage.kt | 42 ++++----- .../{ => old}/storage/UsersStorage.kt | 40 ++++----- .../com/meloda/fast/di/DatabaseModule.kt | 38 ++++++++ .../main/kotlin/com/meloda/fast/di/Modules.kt | 1 - .../fast/screens/login/LoginViewModel.kt | 10 +-- .../screens/messages/ConversationsFragment.kt | 45 ++-------- .../messages/ConversationsViewModel.kt | 47 ++++++++-- .../meloda/fast/service/LongPollService.kt | 2 +- .../kotlin/com/meloda/fast/util/VKUtils.kt | 2 +- .../kotlin/com/meloda/fast/util/ViewUtils.kt | 2 +- 65 files changed, 534 insertions(+), 266 deletions(-) rename app/src/main/kotlin/com/meloda/fast/api/{network => }/VKModules.kt (62%) create mode 100644 app/src/main/kotlin/com/meloda/fast/api/datasource/AuthDataSource.kt create mode 100644 app/src/main/kotlin/com/meloda/fast/api/datasource/ConversationsDataSource.kt create mode 100644 app/src/main/kotlin/com/meloda/fast/api/datasource/MessagesDataSource.kt create mode 100644 app/src/main/kotlin/com/meloda/fast/api/datasource/UsersDataSource.kt rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKAttachments.kt (98%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKAudio.kt (94%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKAudioMessage.kt (95%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKCall.kt (96%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKComment.kt (88%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKDocument.kt (98%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKGeolocation.kt (86%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKGift.kt (93%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKGraffiti.kt (94%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKGroup.kt (97%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKLink.kt (97%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKLongPollHistory.kt (90%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKLongPollServer.kt (90%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKMessageAction.kt (97%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKModel.kt (73%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKPhoto.kt (96%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKPhotoSize.kt (90%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKPoll.kt (97%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKSticker.kt (96%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKVideo.kt (92%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/VKWall.kt (87%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/oldVKConversation.kt (99%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/oldVKMessage.kt (99%) rename app/src/main/kotlin/com/meloda/fast/api/model/{ => old}/oldVKUser.kt (98%) create mode 100644 app/src/main/kotlin/com/meloda/fast/api/network/repo/MessagesRepo.kt create mode 100644 app/src/main/kotlin/com/meloda/fast/database/AppDatabase.kt create mode 100644 app/src/main/kotlin/com/meloda/fast/database/dao/ConversationsDao.kt create mode 100644 app/src/main/kotlin/com/meloda/fast/database/dao/MessagesDao.kt create mode 100644 app/src/main/kotlin/com/meloda/fast/database/dao/UsersDao.kt rename app/src/main/kotlin/com/meloda/fast/database/{ => old}/CacheStorage.kt (70%) rename app/src/main/kotlin/com/meloda/fast/database/{ => old}/DatabaseHelper.kt (95%) rename app/src/main/kotlin/com/meloda/fast/database/{ => old}/DatabaseKeys.kt (98%) rename app/src/main/kotlin/com/meloda/fast/database/{ => old}/DatabaseUtils.kt (58%) rename app/src/main/kotlin/com/meloda/fast/database/{ => old}/QueryBuilder.kt (97%) rename app/src/main/kotlin/com/meloda/fast/database/{ => old}/base/Storage.kt (88%) rename app/src/main/kotlin/com/meloda/fast/database/{ => old}/storage/ChatsStorage.kt (76%) rename app/src/main/kotlin/com/meloda/fast/database/{ => old}/storage/GroupsStorage.kt (78%) rename app/src/main/kotlin/com/meloda/fast/database/{ => old}/storage/MessagesStorage.kt (80%) rename app/src/main/kotlin/com/meloda/fast/database/{ => old}/storage/UsersStorage.kt (80%) create mode 100644 app/src/main/kotlin/com/meloda/fast/di/DatabaseModule.kt delete mode 100644 app/src/main/kotlin/com/meloda/fast/di/Modules.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f5afd0a5..dc00ff3c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -81,16 +81,17 @@ dependencies { implementation("androidx.appcompat:appcompat:1.4.0-alpha03") implementation("com.google.android.material:material:1.4.0") - implementation("androidx.core:core-ktx:1.7.0-alpha01") + implementation("androidx.core:core-ktx:1.7.0-alpha02") implementation("androidx.preference:preference-ktx:1.1.1") implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01") implementation("androidx.recyclerview:recyclerview:1.2.1") implementation("androidx.cardview:cardview:1.0.0") implementation("androidx.fragment:fragment-ktx:1.3.6") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.1") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.1") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2-native-mt") + implementation("androidx.room:room-ktx:2.3.0") implementation("androidx.room:room-runtime:2.3.0") kapt("androidx.room:room-compiler:2.3.0") diff --git a/app/src/main/kotlin/com/meloda/fast/api/network/VKModules.kt b/app/src/main/kotlin/com/meloda/fast/api/VKModules.kt similarity index 62% rename from app/src/main/kotlin/com/meloda/fast/api/network/VKModules.kt rename to app/src/main/kotlin/com/meloda/fast/api/VKModules.kt index 9e445d79..1983ef58 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/network/VKModules.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/VKModules.kt @@ -1,10 +1,20 @@ -package com.meloda.fast.api.network +package com.meloda.fast.api import com.google.gson.Gson import com.google.gson.GsonBuilder +import com.meloda.fast.api.datasource.AuthDataSource +import com.meloda.fast.api.datasource.ConversationsDataSource +import com.meloda.fast.api.datasource.MessagesDataSource +import com.meloda.fast.api.datasource.UsersDataSource +import com.meloda.fast.api.network.AuthInterceptor +import com.meloda.fast.api.network.ResultCallFactory import com.meloda.fast.api.network.repo.AuthRepo import com.meloda.fast.api.network.repo.ConversationsRepo +import com.meloda.fast.api.network.repo.MessagesRepo import com.meloda.fast.api.network.repo.UsersRepo +import com.meloda.fast.database.dao.ConversationsDao +import com.meloda.fast.database.dao.MessagesDao +import com.meloda.fast.database.dao.UsersDao import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -67,4 +77,30 @@ class VKModules { fun provideUsersRepo(retrofit: Retrofit): UsersRepo = retrofit.create(UsersRepo::class.java) + @Provides + @Singleton + fun provideAuthDataSource( + repo: AuthRepo + ): AuthDataSource = AuthDataSource(repo) + + @Provides + @Singleton + fun provideUsersDataSource( + repo: UsersRepo, + dao: UsersDao + ): UsersDataSource = UsersDataSource(repo, dao) + + @Provides + @Singleton + fun provideConversationsDataSource( + repo: ConversationsRepo, + dao: ConversationsDao + ): ConversationsDataSource = ConversationsDataSource(repo, dao) + + @Provides + @Singleton + fun provideMessagesDataSource( + repo: MessagesRepo, + dao: MessagesDao + ): MessagesDataSource = MessagesDataSource(repo, dao) } \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/api/VKUtil.kt b/app/src/main/kotlin/com/meloda/fast/api/VKUtil.kt index d8116bcf..c7e22979 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/VKUtil.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/VKUtil.kt @@ -2,6 +2,7 @@ package com.meloda.fast.api import androidx.annotation.WorkerThread import com.meloda.fast.api.model.* +import com.meloda.fast.api.model.old.* import com.meloda.fast.api.network.VKErrors import org.json.JSONArray import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/datasource/AuthDataSource.kt b/app/src/main/kotlin/com/meloda/fast/api/datasource/AuthDataSource.kt new file mode 100644 index 00000000..449f62c9 --- /dev/null +++ b/app/src/main/kotlin/com/meloda/fast/api/datasource/AuthDataSource.kt @@ -0,0 +1,15 @@ +package com.meloda.fast.api.datasource + +import com.meloda.fast.api.network.repo.AuthRepo +import com.meloda.fast.api.network.request.RequestAuthDirect +import javax.inject.Inject + +class AuthDataSource @Inject constructor( + private val repo: AuthRepo +) { + + suspend fun auth(params: RequestAuthDirect) = repo.auth(params.map) + + suspend fun sendSms(validationSid: String) = repo.sendSms(validationSid) + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/api/datasource/ConversationsDataSource.kt b/app/src/main/kotlin/com/meloda/fast/api/datasource/ConversationsDataSource.kt new file mode 100644 index 00000000..6b488183 --- /dev/null +++ b/app/src/main/kotlin/com/meloda/fast/api/datasource/ConversationsDataSource.kt @@ -0,0 +1,18 @@ +package com.meloda.fast.api.datasource + +import com.meloda.fast.api.model.VkConversation +import com.meloda.fast.api.network.repo.ConversationsRepo +import com.meloda.fast.api.network.request.ConversationsGetRequest +import com.meloda.fast.database.dao.ConversationsDao +import javax.inject.Inject + +class ConversationsDataSource @Inject constructor( + private val repo: ConversationsRepo, + private val dao: ConversationsDao +) { + + suspend fun getAllChats(params: ConversationsGetRequest) = repo.getAllChats(params) + + suspend fun storeConversations(conversations: List) = dao.insert(conversations) + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/api/datasource/MessagesDataSource.kt b/app/src/main/kotlin/com/meloda/fast/api/datasource/MessagesDataSource.kt new file mode 100644 index 00000000..2c1fe461 --- /dev/null +++ b/app/src/main/kotlin/com/meloda/fast/api/datasource/MessagesDataSource.kt @@ -0,0 +1,12 @@ +package com.meloda.fast.api.datasource + +import com.meloda.fast.api.network.repo.MessagesRepo +import com.meloda.fast.database.dao.MessagesDao +import javax.inject.Inject + +class MessagesDataSource @Inject constructor( + private val repo: MessagesRepo, + private val dao: MessagesDao +) { + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/api/datasource/UsersDataSource.kt b/app/src/main/kotlin/com/meloda/fast/api/datasource/UsersDataSource.kt new file mode 100644 index 00000000..1cc54c68 --- /dev/null +++ b/app/src/main/kotlin/com/meloda/fast/api/datasource/UsersDataSource.kt @@ -0,0 +1,18 @@ +package com.meloda.fast.api.datasource + +import com.meloda.fast.api.model.VkUser +import com.meloda.fast.api.network.repo.UsersRepo +import com.meloda.fast.api.network.request.UsersGetRequest +import com.meloda.fast.database.dao.UsersDao +import javax.inject.Inject + +class UsersDataSource @Inject constructor( + private val repo: UsersRepo, + private val dao: UsersDao +) { + + suspend fun getById(params: UsersGetRequest) = repo.getById(params.map) + + suspend fun storeUsers(users: List) = dao.insert(users) + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/api/loader/UsersLoader.kt b/app/src/main/kotlin/com/meloda/fast/api/loader/UsersLoader.kt index 1b7d429e..ec246215 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/loader/UsersLoader.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/loader/UsersLoader.kt @@ -1,15 +1,9 @@ package com.meloda.fast.api.loader import com.meloda.fast.api.model.VkUser -import com.meloda.fast.api.network.repo.UsersRepo -import com.meloda.fast.api.network.request.UsersGetRequest -import javax.inject.Inject class UsersLoader : Loader() { - @Inject - lateinit var repo: UsersRepo - suspend fun load( usersIds: List, fields: String = "" @@ -24,12 +18,12 @@ class UsersLoader : Loader() { val usersIds: String = params["usersIds"] as String val fields: String = params["fields"] as String - val users = repo.getById( - UsersGetRequest( - usersIds = usersIds.split(",").map { it.toInt() }, - fields = fields - ) - ) +// val users = repo.getById( +// UsersGetRequest( +// usersIds = usersIds.split(",").map { it.toInt() }, +// fields = fields +// ) +// ) return emptyList() } diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VkConversation.kt b/app/src/main/kotlin/com/meloda/fast/api/model/VkConversation.kt index f65995c5..ead41a76 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VkConversation.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/VkConversation.kt @@ -1,7 +1,15 @@ package com.meloda.fast.api.model +import androidx.room.Entity +import androidx.room.Ignore +import androidx.room.PrimaryKey + +@Entity(tableName = "conversations") data class VkConversation( + @PrimaryKey(autoGenerate = false) val id: Int, val title: String?, - val lastMessage: VkMessage -) +) { + @Ignore + var lastMessage: VkMessage? = null +} diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VkMessage.kt b/app/src/main/kotlin/com/meloda/fast/api/model/VkMessage.kt index 0ff5ca90..c53396b3 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VkMessage.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/VkMessage.kt @@ -1,10 +1,19 @@ package com.meloda.fast.api.model +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "messages") data class VkMessage( + @PrimaryKey(autoGenerate = false) val id: Int, val text: String?, val isOut: Boolean, val peerId: Int, val fromId: Int, val date: Int -) +) { + + + +} diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VkUser.kt b/app/src/main/kotlin/com/meloda/fast/api/model/VkUser.kt index 0fbba8f0..0873961c 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VkUser.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/VkUser.kt @@ -1,6 +1,11 @@ package com.meloda.fast.api.model +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "users") data class VkUser( + @PrimaryKey(autoGenerate = false) val id: Int, val firstName: String, val lastName: String diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkConversation.kt b/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkConversation.kt index afbf5cf5..db8de3ee 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkConversation.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkConversation.kt @@ -2,6 +2,8 @@ package com.meloda.fast.api.model.base import android.os.Parcelable import com.google.gson.annotations.SerializedName +import com.meloda.fast.api.model.VkConversation +import com.meloda.fast.api.model.VkMessage import kotlinx.parcelize.Parcelize @Parcelize @@ -32,6 +34,11 @@ data class BaseVkConversation( val chatSettings: ChatSettings? ) : Parcelable { + fun asVkConversation(lastMessage: VkMessage? = null) = VkConversation( + id = peer.id, + title = chatSettings?.title, + ).apply { this.lastMessage = lastMessage } + @Parcelize data class Peer( val id: Int, diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkMessage.kt b/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkMessage.kt index a1e85aca..bdedf2ec 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkMessage.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkMessage.kt @@ -2,6 +2,7 @@ package com.meloda.fast.api.model.base import android.os.Parcelable import com.google.gson.annotations.SerializedName +import com.meloda.fast.api.model.VkMessage import kotlinx.parcelize.Parcelize import kotlinx.parcelize.RawValue @@ -29,6 +30,15 @@ data class BaseVkMessage( val geo: Geo? ) : Parcelable { + fun asVkMessage() = VkMessage( + id = id, + text = text, + isOut = out == 1, + peerId = peerId, + fromId = fromId, + date = date + ) + @Parcelize data class Geo( val type: String, diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkUser.kt b/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkUser.kt index ac922382..e38cba7e 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkUser.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/base/BaseVkUser.kt @@ -2,6 +2,7 @@ package com.meloda.fast.api.model.base import android.os.Parcelable import com.google.gson.annotations.SerializedName +import com.meloda.fast.api.model.VkUser import kotlinx.parcelize.Parcelize @Parcelize @@ -46,4 +47,10 @@ data class BaseVkUser( val appId: Int? ) : Parcelable + fun asVkUser() = VkUser( + id = id, + firstName = firstName, + lastName = lastName + ) + } diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKAttachments.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKAttachments.kt similarity index 98% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKAttachments.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKAttachments.kt index 4926a368..d74563c3 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKAttachments.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKAttachments.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONArray import java.util.* diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKAudio.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKAudio.kt similarity index 94% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKAudio.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKAudio.kt index c2627477..c66e456b 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKAudio.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKAudio.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKAudioMessage.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKAudioMessage.kt similarity index 95% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKAudioMessage.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKAudioMessage.kt index 8e5321b3..cf0690e3 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKAudioMessage.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKAudioMessage.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKCall.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKCall.kt similarity index 96% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKCall.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKCall.kt index 599e6769..78e880de 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKCall.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKCall.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKComment.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKComment.kt similarity index 88% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKComment.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKComment.kt index eede04e3..018f33de 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKComment.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKComment.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKDocument.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKDocument.kt similarity index 98% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKDocument.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKDocument.kt index 7f059891..83a4ec14 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKDocument.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKDocument.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject import java.io.Serializable diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKGeolocation.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKGeolocation.kt similarity index 86% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKGeolocation.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKGeolocation.kt index a4c8070d..3715f101 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKGeolocation.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKGeolocation.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKGift.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKGift.kt similarity index 93% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKGift.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKGift.kt index d18bf4d2..3bb9b73d 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKGift.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKGift.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKGraffiti.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKGraffiti.kt similarity index 94% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKGraffiti.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKGraffiti.kt index 99dfaf69..e6dba70b 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKGraffiti.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKGraffiti.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKGroup.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKGroup.kt similarity index 97% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKGroup.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKGroup.kt index f35c8bab..a60f06a1 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKGroup.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKGroup.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONArray import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKLink.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKLink.kt similarity index 97% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKLink.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKLink.kt index e457be49..605fa4ca 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKLink.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKLink.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject import java.io.Serializable diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKLongPollHistory.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKLongPollHistory.kt similarity index 90% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKLongPollHistory.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKLongPollHistory.kt index 49362032..a4bf14a6 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKLongPollHistory.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKLongPollHistory.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import java.util.* diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKLongPollServer.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKLongPollServer.kt similarity index 90% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKLongPollServer.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKLongPollServer.kt index 64e39695..3c80e743 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKLongPollServer.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKLongPollServer.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKMessageAction.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKMessageAction.kt similarity index 97% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKMessageAction.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKMessageAction.kt index fca5a5fb..e875ad65 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKMessageAction.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKMessageAction.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKModel.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKModel.kt similarity index 73% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKModel.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKModel.kt index e49eef52..fdc94b7a 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKModel.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKModel.kt @@ -1,5 +1,6 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old +import com.meloda.fast.api.model.old.VKAttachments import com.meloda.fast.base.adapter.BaseItem import java.io.Serializable diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKPhoto.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKPhoto.kt similarity index 96% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKPhoto.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKPhoto.kt index 363ab9be..0fe72342 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKPhoto.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKPhoto.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject import java.util.* diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKPhotoSize.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKPhotoSize.kt similarity index 90% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKPhotoSize.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKPhotoSize.kt index f7f1d8d6..94cd6c70 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKPhotoSize.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKPhotoSize.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKPoll.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKPoll.kt similarity index 97% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKPoll.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKPoll.kt index 1881e108..0d5cd9eb 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKPoll.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKPoll.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKSticker.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKSticker.kt similarity index 96% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKSticker.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKSticker.kt index 0064f51d..5fd582e1 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKSticker.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKSticker.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject import java.util.* diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKVideo.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKVideo.kt similarity index 92% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKVideo.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKVideo.kt index 3421bb2f..4bf58508 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKVideo.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKVideo.kt @@ -1,5 +1,7 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old +import com.meloda.fast.api.model.old.VKAttachments +import com.meloda.fast.api.model.old.VKModel import org.json.JSONObject class VKVideo() : VKModel() { diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/VKWall.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKWall.kt similarity index 87% rename from app/src/main/kotlin/com/meloda/fast/api/model/VKWall.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/VKWall.kt index fc1724f9..469426fa 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/VKWall.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/VKWall.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/oldVKConversation.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/oldVKConversation.kt similarity index 99% rename from app/src/main/kotlin/com/meloda/fast/api/model/oldVKConversation.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/oldVKConversation.kt index d1ac7396..951e90be 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/oldVKConversation.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/oldVKConversation.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/oldVKMessage.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/oldVKMessage.kt similarity index 99% rename from app/src/main/kotlin/com/meloda/fast/api/model/oldVKMessage.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/oldVKMessage.kt index df3ff403..bcd8da1d 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/oldVKMessage.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/oldVKMessage.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import android.util.ArrayMap import com.meloda.fast.api.VKUtil diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/oldVKUser.kt b/app/src/main/kotlin/com/meloda/fast/api/model/old/oldVKUser.kt similarity index 98% rename from app/src/main/kotlin/com/meloda/fast/api/model/oldVKUser.kt rename to app/src/main/kotlin/com/meloda/fast/api/model/old/oldVKUser.kt index 1c7b72fe..4cf9446b 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/oldVKUser.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/old/oldVKUser.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.api.model +package com.meloda.fast.api.model.old import org.json.JSONArray import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/api/network/repo/ConversationsRepo.kt b/app/src/main/kotlin/com/meloda/fast/api/network/repo/ConversationsRepo.kt index b9768bd6..62ee65b8 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/network/repo/ConversationsRepo.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/network/repo/ConversationsRepo.kt @@ -3,14 +3,14 @@ package com.meloda.fast.api.network.repo import com.meloda.fast.api.base.ApiResponse import com.meloda.fast.api.network.Answer import com.meloda.fast.api.network.VKUrls -import com.meloda.fast.api.network.response.ConversationsGetResponse import com.meloda.fast.api.network.request.ConversationsGetRequest +import com.meloda.fast.api.network.response.ConversationsGetResponse import retrofit2.http.Body import retrofit2.http.POST interface ConversationsRepo { @POST(VKUrls.Conversations.get) - suspend fun getAllChats(@Body param: ConversationsGetRequest): Answer> + suspend fun getAllChats(@Body params: ConversationsGetRequest): Answer> } \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/api/network/repo/MessagesRepo.kt b/app/src/main/kotlin/com/meloda/fast/api/network/repo/MessagesRepo.kt new file mode 100644 index 00000000..e6920550 --- /dev/null +++ b/app/src/main/kotlin/com/meloda/fast/api/network/repo/MessagesRepo.kt @@ -0,0 +1,4 @@ +package com.meloda.fast.api.network.repo + +interface MessagesRepo { +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/api/network/repo/UsersRepo.kt b/app/src/main/kotlin/com/meloda/fast/api/network/repo/UsersRepo.kt index fd449469..3a705312 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/network/repo/UsersRepo.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/network/repo/UsersRepo.kt @@ -4,14 +4,12 @@ import com.meloda.fast.api.base.ApiResponse import com.meloda.fast.api.model.base.BaseVkUser import com.meloda.fast.api.network.Answer import com.meloda.fast.api.network.VKUrls -import com.meloda.fast.api.network.request.UsersGetRequest -import dagger.Component -import retrofit2.http.Body -import retrofit2.http.POST +import retrofit2.http.GET +import retrofit2.http.QueryMap interface UsersRepo { - @POST(VKUrls.Users.getById) - suspend fun getById(@Body param: UsersGetRequest): Answer>> + @GET(VKUrls.Users.getById) + suspend fun getById(@QueryMap params: Map): Answer>> } \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/api/network/request/UsersRequest.kt b/app/src/main/kotlin/com/meloda/fast/api/network/request/UsersRequest.kt index c2dc5c76..adeb00f8 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/network/request/UsersRequest.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/network/request/UsersRequest.kt @@ -1,14 +1,21 @@ package com.meloda.fast.api.network.request import android.os.Parcelable -import com.google.gson.annotations.SerializedName import kotlinx.parcelize.Parcelize @Parcelize data class UsersGetRequest( - @SerializedName("user_ids") val usersIds: List, val fields: String? = null, - @SerializedName("nom_case") val nomCase: String? = null -) : Parcelable \ No newline at end of file +) : Parcelable { + + val map + get() = mutableMapOf( + "user_ids" to usersIds.joinToString { it.toString() } + ).apply { + fields?.let { this["fields"] = it } + nomCase?.let { this["nom_case"] = it } + } + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/common/AppGlobal.kt b/app/src/main/kotlin/com/meloda/fast/common/AppGlobal.kt index 6ea4bf2f..4540bd4f 100644 --- a/app/src/main/kotlin/com/meloda/fast/common/AppGlobal.kt +++ b/app/src/main/kotlin/com/meloda/fast/common/AppGlobal.kt @@ -13,9 +13,11 @@ import android.os.Handler import android.view.inputmethod.InputMethodManager import androidx.core.content.pm.PackageInfoCompat import androidx.preference.PreferenceManager +import androidx.room.Room import com.meloda.fast.BuildConfig import com.meloda.fast.R -import com.meloda.fast.database.DatabaseHelper +import com.meloda.fast.database.AppDatabase +import com.meloda.fast.database.old.DatabaseHelper import com.meloda.fast.util.AndroidUtils import dagger.hilt.android.HiltAndroidApp import org.acra.ACRA @@ -49,8 +51,10 @@ class AppGlobal : Application() { lateinit var packageName: String lateinit var instance: AppGlobal + lateinit var appDatabase: AppDatabase + lateinit var dbHelper: DatabaseHelper - lateinit var database: SQLiteDatabase + lateinit var oldDatabase: SQLiteDatabase lateinit var packageManager: PackageManager @@ -73,12 +77,18 @@ class AppGlobal : Application() { ACRA.init(this) } + appDatabase = Room.databaseBuilder( + this, AppDatabase::class.java, "cache" + ) + .fallbackToDestructiveMigration() + .build() + preferences = PreferenceManager.getDefaultSharedPreferences(this) handler = Handler(mainLooper) locale = Locale.getDefault() dbHelper = DatabaseHelper(this) - database = dbHelper.writableDatabase + oldDatabase = dbHelper.writableDatabase val info = packageManager.getPackageInfo(this.packageName, PackageManager.GET_ACTIVITIES) versionName = info.versionName @@ -88,7 +98,6 @@ class AppGlobal : Application() { Companion.packageName = packageName Companion.packageManager = packageManager - screenWidth = AndroidUtils.getDisplayWidth() screenHeight = AndroidUtils.getDisplayHeight() diff --git a/app/src/main/kotlin/com/meloda/fast/database/AppDatabase.kt b/app/src/main/kotlin/com/meloda/fast/database/AppDatabase.kt new file mode 100644 index 00000000..ea6abb31 --- /dev/null +++ b/app/src/main/kotlin/com/meloda/fast/database/AppDatabase.kt @@ -0,0 +1,27 @@ +package com.meloda.fast.database + +import androidx.room.Database +import androidx.room.RoomDatabase +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.database.dao.ConversationsDao +import com.meloda.fast.database.dao.MessagesDao +import com.meloda.fast.database.dao.UsersDao + +@Database( + entities = [ + VkConversation::class, + VkMessage::class, + VkUser::class + ], + version = 1, + exportSchema = false +) +abstract class AppDatabase : RoomDatabase() { + + abstract fun conversationsDao(): ConversationsDao + abstract fun messagesDao(): MessagesDao + abstract fun usersDao(): UsersDao + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/database/dao/ConversationsDao.kt b/app/src/main/kotlin/com/meloda/fast/database/dao/ConversationsDao.kt new file mode 100644 index 00000000..01c1589a --- /dev/null +++ b/app/src/main/kotlin/com/meloda/fast/database/dao/ConversationsDao.kt @@ -0,0 +1,8 @@ +package com.meloda.fast.database.dao + +import androidx.room.Dao +import com.meloda.fast.api.model.VkConversation + +@Dao +interface ConversationsDao : KindaDao { +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/database/dao/MessagesDao.kt b/app/src/main/kotlin/com/meloda/fast/database/dao/MessagesDao.kt new file mode 100644 index 00000000..9a4ea0cc --- /dev/null +++ b/app/src/main/kotlin/com/meloda/fast/database/dao/MessagesDao.kt @@ -0,0 +1,7 @@ +package com.meloda.fast.database.dao + +import androidx.room.Dao + +@Dao +interface MessagesDao { +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/database/dao/UsersDao.kt b/app/src/main/kotlin/com/meloda/fast/database/dao/UsersDao.kt new file mode 100644 index 00000000..bef0a0bb --- /dev/null +++ b/app/src/main/kotlin/com/meloda/fast/database/dao/UsersDao.kt @@ -0,0 +1,33 @@ +package com.meloda.fast.database.dao + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import com.meloda.fast.api.model.VkUser + +@Dao +interface UsersDao : KindaDao { + +// @Insert(onConflict = OnConflictStrategy.REPLACE) +// suspend fun insert(values: List) + +// override suspend fun insert(values: List) { +// TODO("Not yet implemented") +// } + + + @Query("SELECT * FROM users") + suspend fun getAll(): List + + suspend fun insert(values: Array) = insert(values.toList()) + +} + +interface KindaDao { + + + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insert(values: List) + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/database/CacheStorage.kt b/app/src/main/kotlin/com/meloda/fast/database/old/CacheStorage.kt similarity index 70% rename from app/src/main/kotlin/com/meloda/fast/database/CacheStorage.kt rename to app/src/main/kotlin/com/meloda/fast/database/old/CacheStorage.kt index b4c03a73..7c1e2156 100644 --- a/app/src/main/kotlin/com/meloda/fast/database/CacheStorage.kt +++ b/app/src/main/kotlin/com/meloda/fast/database/old/CacheStorage.kt @@ -1,20 +1,20 @@ -package com.meloda.fast.database +package com.meloda.fast.database.old import android.content.ContentValues import android.database.Cursor import android.os.Bundle -import com.meloda.fast.common.AppGlobal.Companion.database -import com.meloda.fast.database.DatabaseUtils.TABLE_CHATS -import com.meloda.fast.database.DatabaseUtils.TABLE_FRIENDS -import com.meloda.fast.database.DatabaseUtils.TABLE_MESSAGES -import com.meloda.fast.database.DatabaseUtils.TABLE_USERS -import com.meloda.fast.database.storage.ChatsStorage -import com.meloda.fast.database.storage.GroupsStorage -import com.meloda.fast.database.storage.MessagesStorage -import com.meloda.fast.database.storage.UsersStorage -import com.meloda.fast.api.model.oldVKConversation -import com.meloda.fast.api.model.oldVKMessage -import com.meloda.fast.api.model.oldVKUser +import com.meloda.fast.common.AppGlobal.Companion.oldDatabase +import com.meloda.fast.database.old.DatabaseUtils.TABLE_CHATS +import com.meloda.fast.database.old.DatabaseUtils.TABLE_FRIENDS +import com.meloda.fast.database.old.DatabaseUtils.TABLE_MESSAGES +import com.meloda.fast.database.old.DatabaseUtils.TABLE_USERS +import com.meloda.fast.database.old.storage.ChatsStorage +import com.meloda.fast.database.old.storage.GroupsStorage +import com.meloda.fast.database.old.storage.MessagesStorage +import com.meloda.fast.database.old.storage.UsersStorage +import com.meloda.fast.api.model.old.oldVKConversation +import com.meloda.fast.api.model.old.oldVKMessage +import com.meloda.fast.api.model.old.oldVKUser import java.util.* object CacheStorage { @@ -27,21 +27,21 @@ object CacheStorage { fun selectCursor(tableName: String): Cursor { return QueryBuilder.query() .select("*").from(tableName) - .asCursor(database) + .asCursor(oldDatabase) } fun selectCursor(tableName: String, where: String): Cursor { return QueryBuilder.query() .select("*").from(tableName) .where(where) - .asCursor(database) + .asCursor(oldDatabase) } fun selectCursor(tableName: String, columnName: String, value: Any): Cursor { return QueryBuilder.query() .select("*").from(tableName) .where("$columnName=$value") - .asCursor(database) + .asCursor(oldDatabase) } fun selectCursor(tableName: String, columnName: String, ids: IntArray): Cursor { @@ -67,7 +67,7 @@ object CacheStorage { cursor.getBlob(cursor.getColumnIndexOrThrow(columnName)) fun insert(tableName: String, values: ArrayList) { - database.beginTransaction() + oldDatabase.beginTransaction() val contentValues = ContentValues() @@ -94,20 +94,20 @@ object CacheStorage { } } - database.insert(tableName, null, contentValues) + oldDatabase.insert(tableName, null, contentValues) contentValues.clear() } - database.setTransactionSuccessful() - database.endTransaction() + oldDatabase.setTransactionSuccessful() + oldDatabase.endTransaction() } fun delete(tableName: String, whereClause: String, vararg whereArgs: String) { - database.delete(tableName, whereClause, whereArgs) + oldDatabase.delete(tableName, whereClause, whereArgs) } fun delete(tableName: String) { - database.delete(tableName, null, null) + oldDatabase.delete(tableName, null, null) } diff --git a/app/src/main/kotlin/com/meloda/fast/database/DatabaseHelper.kt b/app/src/main/kotlin/com/meloda/fast/database/old/DatabaseHelper.kt similarity index 95% rename from app/src/main/kotlin/com/meloda/fast/database/DatabaseHelper.kt rename to app/src/main/kotlin/com/meloda/fast/database/old/DatabaseHelper.kt index 39385c3c..4c8c868c 100644 --- a/app/src/main/kotlin/com/meloda/fast/database/DatabaseHelper.kt +++ b/app/src/main/kotlin/com/meloda/fast/database/old/DatabaseHelper.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.database +package com.meloda.fast.database.old import android.content.Context import android.database.sqlite.SQLiteDatabase diff --git a/app/src/main/kotlin/com/meloda/fast/database/DatabaseKeys.kt b/app/src/main/kotlin/com/meloda/fast/database/old/DatabaseKeys.kt similarity index 98% rename from app/src/main/kotlin/com/meloda/fast/database/DatabaseKeys.kt rename to app/src/main/kotlin/com/meloda/fast/database/old/DatabaseKeys.kt index b9c446c0..80448159 100644 --- a/app/src/main/kotlin/com/meloda/fast/database/DatabaseKeys.kt +++ b/app/src/main/kotlin/com/meloda/fast/database/old/DatabaseKeys.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.database +package com.meloda.fast.database.old object DatabaseKeys { diff --git a/app/src/main/kotlin/com/meloda/fast/database/DatabaseUtils.kt b/app/src/main/kotlin/com/meloda/fast/database/old/DatabaseUtils.kt similarity index 58% rename from app/src/main/kotlin/com/meloda/fast/database/DatabaseUtils.kt rename to app/src/main/kotlin/com/meloda/fast/database/old/DatabaseUtils.kt index 10f8eb19..053e2c7d 100644 --- a/app/src/main/kotlin/com/meloda/fast/database/DatabaseUtils.kt +++ b/app/src/main/kotlin/com/meloda/fast/database/old/DatabaseUtils.kt @@ -1,49 +1,49 @@ -package com.meloda.fast.database +package com.meloda.fast.database.old -import com.meloda.fast.database.DatabaseKeys.ACTION -import com.meloda.fast.database.DatabaseKeys.ATTACHMENTS -import com.meloda.fast.database.DatabaseKeys.CHAT_STATE -import com.meloda.fast.database.DatabaseKeys.CONVERSATION_ID -import com.meloda.fast.database.DatabaseKeys.CONVERSATION_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.DATE -import com.meloda.fast.database.DatabaseKeys.DEACTIVATED -import com.meloda.fast.database.DatabaseKeys.EDIT_TIME -import com.meloda.fast.database.DatabaseKeys.FIRST_NAME -import com.meloda.fast.database.DatabaseKeys.FRIEND_ID -import com.meloda.fast.database.DatabaseKeys.FROM_ID -import com.meloda.fast.database.DatabaseKeys.FWD_MESSAGES -import com.meloda.fast.database.DatabaseKeys.GENDER -import com.meloda.fast.database.DatabaseKeys.GROUP_ID -import com.meloda.fast.database.DatabaseKeys.IN_READ_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.IS_ALLOWED -import com.meloda.fast.database.DatabaseKeys.IS_CLOSED -import com.meloda.fast.database.DatabaseKeys.IS_GROUP_CHANNEL -import com.meloda.fast.database.DatabaseKeys.IS_NOTIFICATIONS_DISABLED -import com.meloda.fast.database.DatabaseKeys.IS_ONLINE -import com.meloda.fast.database.DatabaseKeys.IS_ONLINE_MOBILE -import com.meloda.fast.database.DatabaseKeys.IS_OUT -import com.meloda.fast.database.DatabaseKeys.LAST_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.LAST_NAME -import com.meloda.fast.database.DatabaseKeys.LAST_SEEN -import com.meloda.fast.database.DatabaseKeys.LOCAL_ID -import com.meloda.fast.database.DatabaseKeys.MEMBERS_COUNT -import com.meloda.fast.database.DatabaseKeys.MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.NAME -import com.meloda.fast.database.DatabaseKeys.NOT_ALLOWED_REASON -import com.meloda.fast.database.DatabaseKeys.OUT_READ_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.PEER_ID -import com.meloda.fast.database.DatabaseKeys.PHOTOS -import com.meloda.fast.database.DatabaseKeys.PINNED_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.RANDOM_ID -import com.meloda.fast.database.DatabaseKeys.REPLY_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.SCREEN_NAME -import com.meloda.fast.database.DatabaseKeys.SORT_ID -import com.meloda.fast.database.DatabaseKeys.STATUS -import com.meloda.fast.database.DatabaseKeys.TEXT -import com.meloda.fast.database.DatabaseKeys.TITLE -import com.meloda.fast.database.DatabaseKeys.TYPE -import com.meloda.fast.database.DatabaseKeys.UNREAD_COUNT -import com.meloda.fast.database.DatabaseKeys.USER_ID +import com.meloda.fast.database.old.DatabaseKeys.ACTION +import com.meloda.fast.database.old.DatabaseKeys.ATTACHMENTS +import com.meloda.fast.database.old.DatabaseKeys.CHAT_STATE +import com.meloda.fast.database.old.DatabaseKeys.CONVERSATION_ID +import com.meloda.fast.database.old.DatabaseKeys.CONVERSATION_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.DATE +import com.meloda.fast.database.old.DatabaseKeys.DEACTIVATED +import com.meloda.fast.database.old.DatabaseKeys.EDIT_TIME +import com.meloda.fast.database.old.DatabaseKeys.FIRST_NAME +import com.meloda.fast.database.old.DatabaseKeys.FRIEND_ID +import com.meloda.fast.database.old.DatabaseKeys.FROM_ID +import com.meloda.fast.database.old.DatabaseKeys.FWD_MESSAGES +import com.meloda.fast.database.old.DatabaseKeys.GENDER +import com.meloda.fast.database.old.DatabaseKeys.GROUP_ID +import com.meloda.fast.database.old.DatabaseKeys.IN_READ_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.IS_ALLOWED +import com.meloda.fast.database.old.DatabaseKeys.IS_CLOSED +import com.meloda.fast.database.old.DatabaseKeys.IS_GROUP_CHANNEL +import com.meloda.fast.database.old.DatabaseKeys.IS_NOTIFICATIONS_DISABLED +import com.meloda.fast.database.old.DatabaseKeys.IS_ONLINE +import com.meloda.fast.database.old.DatabaseKeys.IS_ONLINE_MOBILE +import com.meloda.fast.database.old.DatabaseKeys.IS_OUT +import com.meloda.fast.database.old.DatabaseKeys.LAST_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.LAST_NAME +import com.meloda.fast.database.old.DatabaseKeys.LAST_SEEN +import com.meloda.fast.database.old.DatabaseKeys.LOCAL_ID +import com.meloda.fast.database.old.DatabaseKeys.MEMBERS_COUNT +import com.meloda.fast.database.old.DatabaseKeys.MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.NAME +import com.meloda.fast.database.old.DatabaseKeys.NOT_ALLOWED_REASON +import com.meloda.fast.database.old.DatabaseKeys.OUT_READ_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.PEER_ID +import com.meloda.fast.database.old.DatabaseKeys.PHOTOS +import com.meloda.fast.database.old.DatabaseKeys.PINNED_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.RANDOM_ID +import com.meloda.fast.database.old.DatabaseKeys.REPLY_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.SCREEN_NAME +import com.meloda.fast.database.old.DatabaseKeys.SORT_ID +import com.meloda.fast.database.old.DatabaseKeys.STATUS +import com.meloda.fast.database.old.DatabaseKeys.TEXT +import com.meloda.fast.database.old.DatabaseKeys.TITLE +import com.meloda.fast.database.old.DatabaseKeys.TYPE +import com.meloda.fast.database.old.DatabaseKeys.UNREAD_COUNT +import com.meloda.fast.database.old.DatabaseKeys.USER_ID object DatabaseUtils { diff --git a/app/src/main/kotlin/com/meloda/fast/database/QueryBuilder.kt b/app/src/main/kotlin/com/meloda/fast/database/old/QueryBuilder.kt similarity index 97% rename from app/src/main/kotlin/com/meloda/fast/database/QueryBuilder.kt rename to app/src/main/kotlin/com/meloda/fast/database/old/QueryBuilder.kt index 8ca84781..be524805 100644 --- a/app/src/main/kotlin/com/meloda/fast/database/QueryBuilder.kt +++ b/app/src/main/kotlin/com/meloda/fast/database/old/QueryBuilder.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.database +package com.meloda.fast.database.old import android.database.Cursor import android.database.sqlite.SQLiteDatabase diff --git a/app/src/main/kotlin/com/meloda/fast/database/base/Storage.kt b/app/src/main/kotlin/com/meloda/fast/database/old/base/Storage.kt similarity index 88% rename from app/src/main/kotlin/com/meloda/fast/database/base/Storage.kt rename to app/src/main/kotlin/com/meloda/fast/database/old/base/Storage.kt index 250cc1c6..eceb8362 100644 --- a/app/src/main/kotlin/com/meloda/fast/database/base/Storage.kt +++ b/app/src/main/kotlin/com/meloda/fast/database/old/base/Storage.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.database.base +package com.meloda.fast.database.old.base import android.content.ContentValues import android.database.Cursor @@ -10,7 +10,7 @@ abstract class Storage { abstract val tag: String - protected var database = AppGlobal.database + protected var database = AppGlobal.oldDatabase @WorkerThread abstract fun getAllValues(): ArrayList diff --git a/app/src/main/kotlin/com/meloda/fast/database/storage/ChatsStorage.kt b/app/src/main/kotlin/com/meloda/fast/database/old/storage/ChatsStorage.kt similarity index 76% rename from app/src/main/kotlin/com/meloda/fast/database/storage/ChatsStorage.kt rename to app/src/main/kotlin/com/meloda/fast/database/old/storage/ChatsStorage.kt index 072ee3f8..2c01c18c 100644 --- a/app/src/main/kotlin/com/meloda/fast/database/storage/ChatsStorage.kt +++ b/app/src/main/kotlin/com/meloda/fast/database/old/storage/ChatsStorage.kt @@ -1,31 +1,31 @@ -package com.meloda.fast.database.storage +package com.meloda.fast.database.old.storage import android.content.ContentValues import android.database.Cursor import android.os.Bundle import android.util.Log import androidx.annotation.WorkerThread -import com.meloda.fast.database.CacheStorage -import com.meloda.fast.database.CacheStorage.messagesStorage -import com.meloda.fast.database.DatabaseKeys.CHAT_STATE -import com.meloda.fast.database.DatabaseKeys.CONVERSATION_ID -import com.meloda.fast.database.DatabaseKeys.IN_READ_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.IS_ALLOWED -import com.meloda.fast.database.DatabaseKeys.IS_GROUP_CHANNEL -import com.meloda.fast.database.DatabaseKeys.IS_NOTIFICATIONS_DISABLED -import com.meloda.fast.database.DatabaseKeys.LAST_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.LOCAL_ID -import com.meloda.fast.database.DatabaseKeys.MEMBERS_COUNT -import com.meloda.fast.database.DatabaseKeys.NOT_ALLOWED_REASON -import com.meloda.fast.database.DatabaseKeys.OUT_READ_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.PHOTOS -import com.meloda.fast.database.DatabaseKeys.PINNED_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.TITLE -import com.meloda.fast.database.DatabaseKeys.TYPE -import com.meloda.fast.database.DatabaseKeys.UNREAD_COUNT -import com.meloda.fast.database.DatabaseUtils.TABLE_CHATS -import com.meloda.fast.database.base.Storage -import com.meloda.fast.api.model.oldVKConversation +import com.meloda.fast.database.old.CacheStorage +import com.meloda.fast.database.old.CacheStorage.messagesStorage +import com.meloda.fast.database.old.DatabaseKeys.CHAT_STATE +import com.meloda.fast.database.old.DatabaseKeys.CONVERSATION_ID +import com.meloda.fast.database.old.DatabaseKeys.IN_READ_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.IS_ALLOWED +import com.meloda.fast.database.old.DatabaseKeys.IS_GROUP_CHANNEL +import com.meloda.fast.database.old.DatabaseKeys.IS_NOTIFICATIONS_DISABLED +import com.meloda.fast.database.old.DatabaseKeys.LAST_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.LOCAL_ID +import com.meloda.fast.database.old.DatabaseKeys.MEMBERS_COUNT +import com.meloda.fast.database.old.DatabaseKeys.NOT_ALLOWED_REASON +import com.meloda.fast.database.old.DatabaseKeys.OUT_READ_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.PHOTOS +import com.meloda.fast.database.old.DatabaseKeys.PINNED_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.TITLE +import com.meloda.fast.database.old.DatabaseKeys.TYPE +import com.meloda.fast.database.old.DatabaseKeys.UNREAD_COUNT +import com.meloda.fast.database.old.DatabaseUtils.TABLE_CHATS +import com.meloda.fast.database.old.base.Storage +import com.meloda.fast.api.model.old.oldVKConversation import com.meloda.fast.api.VKUtil import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/database/storage/GroupsStorage.kt b/app/src/main/kotlin/com/meloda/fast/database/old/storage/GroupsStorage.kt similarity index 78% rename from app/src/main/kotlin/com/meloda/fast/database/storage/GroupsStorage.kt rename to app/src/main/kotlin/com/meloda/fast/database/old/storage/GroupsStorage.kt index a7e80011..4350fc1d 100644 --- a/app/src/main/kotlin/com/meloda/fast/database/storage/GroupsStorage.kt +++ b/app/src/main/kotlin/com/meloda/fast/database/old/storage/GroupsStorage.kt @@ -1,23 +1,23 @@ -package com.meloda.fast.database.storage +package com.meloda.fast.database.old.storage import android.content.ContentValues import android.database.Cursor import android.os.Bundle import android.util.Log import androidx.annotation.WorkerThread -import com.meloda.fast.database.CacheStorage -import com.meloda.fast.database.CacheStorage.getInt -import com.meloda.fast.database.CacheStorage.getString -import com.meloda.fast.database.DatabaseKeys.DEACTIVATED -import com.meloda.fast.database.DatabaseKeys.GROUP_ID -import com.meloda.fast.database.DatabaseKeys.IS_CLOSED -import com.meloda.fast.database.DatabaseKeys.NAME -import com.meloda.fast.database.DatabaseKeys.PHOTOS -import com.meloda.fast.database.DatabaseKeys.SCREEN_NAME -import com.meloda.fast.database.DatabaseKeys.TYPE -import com.meloda.fast.database.DatabaseUtils.TABLE_GROUPS -import com.meloda.fast.database.base.Storage -import com.meloda.fast.api.model.VKGroup +import com.meloda.fast.database.old.CacheStorage +import com.meloda.fast.database.old.CacheStorage.getInt +import com.meloda.fast.database.old.CacheStorage.getString +import com.meloda.fast.database.old.DatabaseKeys.DEACTIVATED +import com.meloda.fast.database.old.DatabaseKeys.GROUP_ID +import com.meloda.fast.database.old.DatabaseKeys.IS_CLOSED +import com.meloda.fast.database.old.DatabaseKeys.NAME +import com.meloda.fast.database.old.DatabaseKeys.PHOTOS +import com.meloda.fast.database.old.DatabaseKeys.SCREEN_NAME +import com.meloda.fast.database.old.DatabaseKeys.TYPE +import com.meloda.fast.database.old.DatabaseUtils.TABLE_GROUPS +import com.meloda.fast.database.old.base.Storage +import com.meloda.fast.api.model.old.VKGroup import com.meloda.fast.api.VKUtil import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/database/storage/MessagesStorage.kt b/app/src/main/kotlin/com/meloda/fast/database/old/storage/MessagesStorage.kt similarity index 80% rename from app/src/main/kotlin/com/meloda/fast/database/storage/MessagesStorage.kt rename to app/src/main/kotlin/com/meloda/fast/database/old/storage/MessagesStorage.kt index 3d97111a..8895031f 100644 --- a/app/src/main/kotlin/com/meloda/fast/database/storage/MessagesStorage.kt +++ b/app/src/main/kotlin/com/meloda/fast/database/old/storage/MessagesStorage.kt @@ -1,31 +1,31 @@ -package com.meloda.fast.database.storage +package com.meloda.fast.database.old.storage import android.content.ContentValues import android.database.Cursor import android.os.Bundle import android.util.Log import androidx.annotation.WorkerThread -import com.meloda.fast.database.CacheStorage -import com.meloda.fast.database.CacheStorage.selectCursor -import com.meloda.fast.database.DatabaseKeys.ACTION -import com.meloda.fast.database.DatabaseKeys.ATTACHMENTS -import com.meloda.fast.database.DatabaseKeys.CONVERSATION_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.DATE -import com.meloda.fast.database.DatabaseKeys.EDIT_TIME -import com.meloda.fast.database.DatabaseKeys.FROM_ID -import com.meloda.fast.database.DatabaseKeys.FWD_MESSAGES -import com.meloda.fast.database.DatabaseKeys.IS_OUT -import com.meloda.fast.database.DatabaseKeys.MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.PEER_ID -import com.meloda.fast.database.DatabaseKeys.RANDOM_ID -import com.meloda.fast.database.DatabaseKeys.REPLY_MESSAGE_ID -import com.meloda.fast.database.DatabaseKeys.TEXT -import com.meloda.fast.database.DatabaseUtils.TABLE_MESSAGES -import com.meloda.fast.database.base.Storage +import com.meloda.fast.database.old.CacheStorage +import com.meloda.fast.database.old.CacheStorage.selectCursor +import com.meloda.fast.database.old.DatabaseKeys.ACTION +import com.meloda.fast.database.old.DatabaseKeys.ATTACHMENTS +import com.meloda.fast.database.old.DatabaseKeys.CONVERSATION_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.DATE +import com.meloda.fast.database.old.DatabaseKeys.EDIT_TIME +import com.meloda.fast.database.old.DatabaseKeys.FROM_ID +import com.meloda.fast.database.old.DatabaseKeys.FWD_MESSAGES +import com.meloda.fast.database.old.DatabaseKeys.IS_OUT +import com.meloda.fast.database.old.DatabaseKeys.MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.PEER_ID +import com.meloda.fast.database.old.DatabaseKeys.RANDOM_ID +import com.meloda.fast.database.old.DatabaseKeys.REPLY_MESSAGE_ID +import com.meloda.fast.database.old.DatabaseKeys.TEXT +import com.meloda.fast.database.old.DatabaseUtils.TABLE_MESSAGES +import com.meloda.fast.database.old.base.Storage import com.meloda.fast.util.Utils -import com.meloda.fast.api.model.oldVKMessage -import com.meloda.fast.api.model.VKMessageAction -import com.meloda.fast.api.model.VKModel +import com.meloda.fast.api.model.old.oldVKMessage +import com.meloda.fast.api.model.old.VKMessageAction +import com.meloda.fast.api.model.old.VKModel import java.util.stream.Collectors @WorkerThread diff --git a/app/src/main/kotlin/com/meloda/fast/database/storage/UsersStorage.kt b/app/src/main/kotlin/com/meloda/fast/database/old/storage/UsersStorage.kt similarity index 80% rename from app/src/main/kotlin/com/meloda/fast/database/storage/UsersStorage.kt rename to app/src/main/kotlin/com/meloda/fast/database/old/storage/UsersStorage.kt index 0b7d9c25..44f5857d 100644 --- a/app/src/main/kotlin/com/meloda/fast/database/storage/UsersStorage.kt +++ b/app/src/main/kotlin/com/meloda/fast/database/old/storage/UsersStorage.kt @@ -1,4 +1,4 @@ -package com.meloda.fast.database.storage +package com.meloda.fast.database.old.storage import android.content.ContentValues import android.database.Cursor @@ -7,25 +7,25 @@ import android.util.Log import androidx.annotation.WorkerThread import com.meloda.fast.api.UserConfig import com.meloda.fast.api.VKUtil -import com.meloda.fast.api.model.oldVKUser -import com.meloda.fast.database.CacheStorage -import com.meloda.fast.database.DatabaseKeys.DEACTIVATED -import com.meloda.fast.database.DatabaseKeys.FIRST_NAME -import com.meloda.fast.database.DatabaseKeys.FRIEND_ID -import com.meloda.fast.database.DatabaseKeys.GENDER -import com.meloda.fast.database.DatabaseKeys.IS_ONLINE -import com.meloda.fast.database.DatabaseKeys.IS_ONLINE_MOBILE -import com.meloda.fast.database.DatabaseKeys.LAST_NAME -import com.meloda.fast.database.DatabaseKeys.LAST_SEEN -import com.meloda.fast.database.DatabaseKeys.PHOTOS -import com.meloda.fast.database.DatabaseKeys.SCREEN_NAME -import com.meloda.fast.database.DatabaseKeys.SORT_ID -import com.meloda.fast.database.DatabaseKeys.STATUS -import com.meloda.fast.database.DatabaseKeys.USER_ID -import com.meloda.fast.database.DatabaseUtils.TABLE_FRIENDS -import com.meloda.fast.database.DatabaseUtils.TABLE_USERS -import com.meloda.fast.database.QueryBuilder -import com.meloda.fast.database.base.Storage +import com.meloda.fast.api.model.old.oldVKUser +import com.meloda.fast.database.old.CacheStorage +import com.meloda.fast.database.old.DatabaseKeys.DEACTIVATED +import com.meloda.fast.database.old.DatabaseKeys.FIRST_NAME +import com.meloda.fast.database.old.DatabaseKeys.FRIEND_ID +import com.meloda.fast.database.old.DatabaseKeys.GENDER +import com.meloda.fast.database.old.DatabaseKeys.IS_ONLINE +import com.meloda.fast.database.old.DatabaseKeys.IS_ONLINE_MOBILE +import com.meloda.fast.database.old.DatabaseKeys.LAST_NAME +import com.meloda.fast.database.old.DatabaseKeys.LAST_SEEN +import com.meloda.fast.database.old.DatabaseKeys.PHOTOS +import com.meloda.fast.database.old.DatabaseKeys.SCREEN_NAME +import com.meloda.fast.database.old.DatabaseKeys.SORT_ID +import com.meloda.fast.database.old.DatabaseKeys.STATUS +import com.meloda.fast.database.old.DatabaseKeys.USER_ID +import com.meloda.fast.database.old.DatabaseUtils.TABLE_FRIENDS +import com.meloda.fast.database.old.DatabaseUtils.TABLE_USERS +import com.meloda.fast.database.old.QueryBuilder +import com.meloda.fast.database.old.base.Storage import org.json.JSONObject @WorkerThread diff --git a/app/src/main/kotlin/com/meloda/fast/di/DatabaseModule.kt b/app/src/main/kotlin/com/meloda/fast/di/DatabaseModule.kt new file mode 100644 index 00000000..d05327e6 --- /dev/null +++ b/app/src/main/kotlin/com/meloda/fast/di/DatabaseModule.kt @@ -0,0 +1,38 @@ +package com.meloda.fast.di + +import com.meloda.fast.common.AppGlobal +import com.meloda.fast.database.AppDatabase +import com.meloda.fast.database.dao.ConversationsDao +import com.meloda.fast.database.dao.MessagesDao +import com.meloda.fast.database.dao.UsersDao +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@InstallIn(SingletonComponent::class) +@Module +object DatabaseModule { + + @Provides + @Singleton + fun provideAppDatabase(): AppDatabase = + AppGlobal.appDatabase + + @Provides + @Singleton + fun provideUsersDao(appDatabase: AppDatabase): UsersDao = + appDatabase.usersDao() + + @Provides + @Singleton + fun provideConversationsDao(appDatabase: AppDatabase): ConversationsDao = + appDatabase.conversationsDao() + + @Provides + @Singleton + fun provideMessagesDao(appDatabase: AppDatabase): MessagesDao = + appDatabase.messagesDao() + +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/di/Modules.kt b/app/src/main/kotlin/com/meloda/fast/di/Modules.kt deleted file mode 100644 index b31ebe57..00000000 --- a/app/src/main/kotlin/com/meloda/fast/di/Modules.kt +++ /dev/null @@ -1 +0,0 @@ -package com.meloda.fast.di diff --git a/app/src/main/kotlin/com/meloda/fast/screens/login/LoginViewModel.kt b/app/src/main/kotlin/com/meloda/fast/screens/login/LoginViewModel.kt index d63903dc..f603c24b 100644 --- a/app/src/main/kotlin/com/meloda/fast/screens/login/LoginViewModel.kt +++ b/app/src/main/kotlin/com/meloda/fast/screens/login/LoginViewModel.kt @@ -6,7 +6,7 @@ import com.meloda.fast.api.UserConfig import com.meloda.fast.api.VKConstants import com.meloda.fast.api.VKException import com.meloda.fast.api.VKUtil -import com.meloda.fast.api.network.repo.AuthRepo +import com.meloda.fast.api.datasource.AuthDataSource import com.meloda.fast.api.network.request.RequestAuthDirect import com.meloda.fast.base.viewmodel.BaseViewModel import com.meloda.fast.base.viewmodel.StartProgressEvent @@ -18,7 +18,7 @@ import javax.inject.Inject @HiltViewModel class LoginViewModel @Inject constructor( - private val repo: AuthRepo + private val dataSource: AuthDataSource ) : BaseViewModel() { fun login( @@ -29,7 +29,7 @@ class LoginViewModel @Inject constructor( ) = viewModelScope.launch { makeJob( { - repo.auth( + dataSource.auth( RequestAuthDirect( grantType = VKConstants.Auth.GrantType.PASSWORD, clientId = VKConstants.VK_APP_ID, @@ -41,7 +41,7 @@ class LoginViewModel @Inject constructor( twoFaCode = twoFaCode, captchaSid = captcha?.first, captchaKey = captcha?.second - ).map + ) ) }, onAnswer = { @@ -79,7 +79,7 @@ class LoginViewModel @Inject constructor( } fun sendSms(validationSid: String) = viewModelScope.launch { - makeJob({ repo.sendSms(validationSid) }, + makeJob({ dataSource.sendSms(validationSid) }, onAnswer = { sendEvent(CodeSent) }, onError = {}, onStart = {}, diff --git a/app/src/main/kotlin/com/meloda/fast/screens/messages/ConversationsFragment.kt b/app/src/main/kotlin/com/meloda/fast/screens/messages/ConversationsFragment.kt index 3b4e9ba0..f33b54ab 100644 --- a/app/src/main/kotlin/com/meloda/fast/screens/messages/ConversationsFragment.kt +++ b/app/src/main/kotlin/com/meloda/fast/screens/messages/ConversationsFragment.kt @@ -1,16 +1,12 @@ package com.meloda.fast.screens.messages import android.os.Bundle -import android.util.Log import android.view.View import android.viewbinding.library.fragment.viewBinding import androidx.core.view.isVisible import androidx.fragment.app.viewModels -import androidx.lifecycle.lifecycleScope import com.meloda.fast.R -import com.meloda.fast.api.LoadManager import com.meloda.fast.api.model.VkConversation -import com.meloda.fast.api.model.VkMessage import com.meloda.fast.base.BaseViewModelFragment import com.meloda.fast.base.viewmodel.StartProgressEvent import com.meloda.fast.base.viewmodel.StopProgressEvent @@ -18,9 +14,7 @@ import com.meloda.fast.base.viewmodel.VKEvent import com.meloda.fast.databinding.FragmentConversationsBinding import com.meloda.fast.util.AndroidUtils import dagger.hilt.android.AndroidEntryPoint -import kotlinx.coroutines.launch import kotlin.math.roundToInt -import kotlin.system.measureTimeMillis @AndroidEntryPoint class ConversationsFragment : @@ -30,9 +24,6 @@ class ConversationsFragment : val TAG: String = ConversationsFragment::class.java.name } -// @Inject -// lateinit var loadManager: LoadManager - override val viewModel: ConversationsViewModel by viewModels() private val binding: FragmentConversationsBinding by viewBinding() @@ -52,7 +43,7 @@ class ConversationsFragment : override fun onEvent(event: VKEvent) { super.onEvent(event) when (event) { - is ConversationsLoaded -> prepareData(event) + is ConversationsLoaded -> refreshConversations(event.conversations) is StartProgressEvent -> onProgressStarted() is StopProgressEvent -> onProgressStopped() } @@ -74,7 +65,7 @@ class ConversationsFragment : } private fun prepareRecyclerView() { - + binding.recyclerView.itemAnimator = null } private fun prepareRefreshLayout() { @@ -100,42 +91,16 @@ class ConversationsFragment : } } - private fun prepareData(event: ConversationsLoaded) { - val conversations = mutableListOf() - - val timeInMillis = measureTimeMillis { - for (i in event.conversations.indices) { - val baseConversation = event.conversations[i] - val baseMessage = event.messages[i] - - conversations += VkConversation( - id = baseConversation.peer.id, - title = baseConversation.chatSettings?.title, - lastMessage = VkMessage( - id = baseMessage.id, - text = baseMessage.text, - isOut = baseMessage.out == 1, - peerId = baseMessage.peerId, - fromId = baseMessage.fromId, - date = baseMessage.date - ) - ) - } - } - - Log.d(TAG, "prepareData: $timeInMillis ms") - + private fun refreshConversations(conversations: List) { fillRecyclerView(conversations) - lifecycleScope.launch { - LoadManager.users.load(listOf(1, 2, 3)) - } + viewModel.loadSomeUsers(listOf(1, 2, 3, 362877006)) } private fun fillRecyclerView(values: List) { adapter.values.clear() adapter.values += values - adapter.notifyDataSetChanged() + adapter.notifyItemRangeChanged(0, adapter.itemCount) } } \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/screens/messages/ConversationsViewModel.kt b/app/src/main/kotlin/com/meloda/fast/screens/messages/ConversationsViewModel.kt index b668f7af..de68058d 100644 --- a/app/src/main/kotlin/com/meloda/fast/screens/messages/ConversationsViewModel.kt +++ b/app/src/main/kotlin/com/meloda/fast/screens/messages/ConversationsViewModel.kt @@ -2,10 +2,11 @@ package com.meloda.fast.screens.messages import androidx.lifecycle.viewModelScope import com.meloda.fast.api.VKConstants -import com.meloda.fast.api.model.base.BaseVkConversation -import com.meloda.fast.api.model.base.BaseVkMessage -import com.meloda.fast.api.network.repo.ConversationsRepo +import com.meloda.fast.api.datasource.ConversationsDataSource +import com.meloda.fast.api.datasource.UsersDataSource +import com.meloda.fast.api.model.VkConversation import com.meloda.fast.api.network.request.ConversationsGetRequest +import com.meloda.fast.api.network.request.UsersGetRequest import com.meloda.fast.base.viewmodel.BaseViewModel import com.meloda.fast.base.viewmodel.StartProgressEvent import com.meloda.fast.base.viewmodel.StopProgressEvent @@ -17,12 +18,13 @@ import javax.inject.Inject @HiltViewModel class ConversationsViewModel @Inject constructor( - private val repo: ConversationsRepo + private val dataSource: ConversationsDataSource, + private val usersDataSource: UsersDataSource ) : BaseViewModel() { fun loadConversations() = viewModelScope.launch(Dispatchers.Default) { makeJob({ - repo.getAllChats( + dataSource.getAllChats( ConversationsGetRequest( count = 30, fields = "${VKConstants.USER_FIELDS},${VKConstants.GROUP_FIELDS}" @@ -35,8 +37,11 @@ class ConversationsViewModel @Inject constructor( ConversationsLoaded( count = response.count, unreadCount = response.unreadCount ?: 0, - messages = response.items.map { items -> items.lastMessage }, - conversations = response.items.map { items -> items.conversation } + conversations = response.items.map { items -> + items.conversation.asVkConversation( + items.lastMessage.asVkMessage() + ) + } ) ) } @@ -52,11 +57,35 @@ class ConversationsViewModel @Inject constructor( sendEvent(StopProgressEvent) }) } + + fun loadSomeUsers(usersIds: List) = viewModelScope.launch { + makeJob({ + usersDataSource.getById( + UsersGetRequest( + usersIds = usersIds, + fields = "sex" + ) + ) + }, + onAnswer = { + val argh = it + val i = 0 + it.response?.let { r -> + val users = r.map { user -> user.asVkUser() } + + usersDataSource.storeUsers(users) + } + }, + onError = { + val e = it + val i = 0 + }) + + } } data class ConversationsLoaded( val count: Int, val unreadCount: Int, - val messages: List, - val conversations: List + val conversations: List ) : VKEvent() \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/service/LongPollService.kt b/app/src/main/kotlin/com/meloda/fast/service/LongPollService.kt index 35865e0b..e77a9f2f 100644 --- a/app/src/main/kotlin/com/meloda/fast/service/LongPollService.kt +++ b/app/src/main/kotlin/com/meloda/fast/service/LongPollService.kt @@ -6,7 +6,7 @@ import android.os.IBinder import android.util.Log import androidx.annotation.WorkerThread import com.meloda.fast.api.UserConfig -import com.meloda.fast.api.model.VKLongPollServer +import com.meloda.fast.api.model.old.VKLongPollServer import com.meloda.fast.util.AndroidUtils import org.json.JSONArray import org.json.JSONObject diff --git a/app/src/main/kotlin/com/meloda/fast/util/VKUtils.kt b/app/src/main/kotlin/com/meloda/fast/util/VKUtils.kt index 45fab925..8686cc88 100644 --- a/app/src/main/kotlin/com/meloda/fast/util/VKUtils.kt +++ b/app/src/main/kotlin/com/meloda/fast/util/VKUtils.kt @@ -5,7 +5,7 @@ import android.graphics.drawable.Drawable import androidx.core.content.ContextCompat import com.meloda.fast.R import com.meloda.fast.api.VKUtil -import com.meloda.fast.api.model.* +import com.meloda.fast.api.model.old.* import com.meloda.fast.common.AppGlobal import com.meloda.fast.extensions.ContextExtensions.color import com.meloda.fast.extensions.ContextExtensions.drawable diff --git a/app/src/main/kotlin/com/meloda/fast/util/ViewUtils.kt b/app/src/main/kotlin/com/meloda/fast/util/ViewUtils.kt index fc4051d9..5a046b5d 100644 --- a/app/src/main/kotlin/com/meloda/fast/util/ViewUtils.kt +++ b/app/src/main/kotlin/com/meloda/fast/util/ViewUtils.kt @@ -10,7 +10,7 @@ import com.google.android.material.snackbar.Snackbar import com.meloda.fast.extensions.ContextExtensions.color import com.meloda.fast.R import com.meloda.fast.widget.CircleImageView -import com.meloda.fast.api.model.oldVKUser +import com.meloda.fast.api.model.old.oldVKUser object ViewUtils {