Skip to content

Commit 58324b7

Browse files
committed
refactor
Signed-off-by: sowjanyakch <[email protected]>
1 parent a5cf64e commit 58324b7

File tree

14 files changed

+151
-85
lines changed

14 files changed

+151
-85
lines changed

app/schemas/com.nextcloud.talk.data.source.local.TalkDatabase/13.json

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"formatVersion": 1,
33
"database": {
44
"version": 13,
5-
"identityHash": "f58d9b51b48ddc5c6f4dc4c742eb5f3f",
5+
"identityHash": "b3d3d5405b220baf1819c1397f935f95",
66
"entities": [
77
{
88
"tableName": "User",
@@ -741,39 +741,51 @@
741741
},
742742
{
743743
"tableName": "user_circles",
744-
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`displayName` TEXT NOT NULL, PRIMARY KEY(`displayName`))",
744+
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `displayName` TEXT)",
745745
"fields": [
746+
{
747+
"fieldPath": "id",
748+
"columnName": "id",
749+
"affinity": "INTEGER",
750+
"notNull": true
751+
},
746752
{
747753
"fieldPath": "displayName",
748754
"columnName": "displayName",
749755
"affinity": "TEXT",
750-
"notNull": true
756+
"notNull": false
751757
}
752758
],
753759
"primaryKey": {
754-
"autoGenerate": false,
760+
"autoGenerate": true,
755761
"columnNames": [
756-
"displayName"
762+
"id"
757763
]
758764
},
759765
"indices": [],
760766
"foreignKeys": []
761767
},
762768
{
763769
"tableName": "user_groups",
764-
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`groups` TEXT NOT NULL, PRIMARY KEY(`groups`))",
770+
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `groups` TEXT)",
765771
"fields": [
772+
{
773+
"fieldPath": "id",
774+
"columnName": "id",
775+
"affinity": "INTEGER",
776+
"notNull": true
777+
},
766778
{
767779
"fieldPath": "groups",
768780
"columnName": "groups",
769781
"affinity": "TEXT",
770-
"notNull": true
782+
"notNull": false
771783
}
772784
],
773785
"primaryKey": {
774-
"autoGenerate": false,
786+
"autoGenerate": true,
775787
"columnNames": [
776-
"groups"
788+
"id"
777789
]
778790
},
779791
"indices": [],
@@ -783,7 +795,7 @@
783795
"views": [],
784796
"setupQueries": [
785797
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
786-
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'f58d9b51b48ddc5c6f4dc4c742eb5f3f')"
798+
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'b3d3d5405b220baf1819c1397f935f95')"
787799
]
788800
}
789801
}

app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import androidx.activity.OnBackPressedCallback
2121
import androidx.lifecycle.DefaultLifecycleObserver
2222
import androidx.lifecycle.LifecycleOwner
2323
import androidx.lifecycle.ProcessLifecycleOwner
24-
import androidx.lifecycle.lifecycleScope
2524
import autodagger.AutoInjector
2625
import com.google.android.material.snackbar.Snackbar
2726
import com.nextcloud.talk.R
@@ -31,7 +30,6 @@ import com.nextcloud.talk.api.NcApi
3130
import com.nextcloud.talk.application.NextcloudTalkApplication
3231
import com.nextcloud.talk.chat.ChatActivity
3332
import com.nextcloud.talk.conversationlist.ConversationsListActivity
34-
import com.nextcloud.talk.data.database.model.UserGroupsCirclesRepository
3533
import com.nextcloud.talk.data.user.model.User
3634
import com.nextcloud.talk.databinding.ActivityMainBinding
3735
import com.nextcloud.talk.invitation.InvitationsActivity
@@ -48,8 +46,6 @@ import io.reactivex.SingleObserver
4846
import io.reactivex.android.schedulers.AndroidSchedulers
4947
import io.reactivex.disposables.Disposable
5048
import io.reactivex.schedulers.Schedulers
51-
import kotlinx.coroutines.Job
52-
import kotlinx.coroutines.launch
5349
import javax.inject.Inject
5450

5551
@AutoInjector(NextcloudTalkApplication::class)
@@ -61,10 +57,6 @@ class MainActivity : BaseActivity(), ActionBarProvider {
6157

6258
@Inject
6359
lateinit var userManager: UserManager
64-
private var job: Job? = null
65-
66-
@Inject
67-
lateinit var userGroupsOrCirclesRepository: UserGroupsCirclesRepository
6860

6961
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
7062
override fun handleOnBackPressed() {
@@ -94,11 +86,6 @@ class MainActivity : BaseActivity(), ActionBarProvider {
9486

9587
handleIntent(intent)
9688

97-
job = lifecycleScope.launch {
98-
val initialized = userGroupsOrCirclesRepository.initialize()
99-
Log.d("MainActivity", "$initialized")
100-
}
101-
10289
onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
10390
}
10491

@@ -153,7 +140,6 @@ class MainActivity : BaseActivity(), ActionBarProvider {
153140

154141
override fun onDestroy() {
155142
super.onDestroy()
156-
job?.cancel()
157143
}
158144

159145
private fun openConversationList() {

app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingLinkPreviewMessageViewHolder.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ class IncomingLinkPreviewMessageViewHolder(incomingView: View, payload: Any) :
8383
viewThemeUtils,
8484
processedMessageText!!,
8585
message,
86-
itemView
86+
itemView,
87+
null,
88+
null
8789
)
8890

8991
binding.messageText.text = processedMessageText

app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingPreviewMessageViewHolder.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ public void onBind(@NonNull ChatMessage message) {
6060
viewThemeUtils,
6161
processedMessageText,
6262
message,
63-
binding.incomingPreviewMessageBubble);
63+
binding.incomingPreviewMessageBubble,
64+
null,
65+
null);
6466
}
6567
binding.incomingPreviewMessageBubble.setOnClickListener(null);
6668

app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingTextMessageViewHolder.kt

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
2020
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
2121
import com.nextcloud.talk.chat.ChatActivity
2222
import com.nextcloud.talk.chat.data.model.ChatMessage
23+
import com.nextcloud.talk.data.database.model.UserGroupsCirclesRepository
2324
import com.nextcloud.talk.databinding.ItemCustomIncomingTextMessageBinding
2425
import com.nextcloud.talk.ui.theme.ViewThemeUtils
2526
import com.nextcloud.talk.utils.ApiUtils
@@ -32,6 +33,8 @@ import com.stfalcon.chatkit.messages.MessageHolders
3233
import kotlinx.coroutines.CoroutineScope
3334
import kotlinx.coroutines.Dispatchers
3435
import kotlinx.coroutines.flow.first
36+
import kotlinx.coroutines.flow.firstOrNull
37+
import kotlinx.coroutines.flow.map
3538
import kotlinx.coroutines.launch
3639
import kotlinx.coroutines.withContext
3740
import javax.inject.Inject
@@ -59,6 +62,11 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
5962

6063
lateinit var commonMessageInterface: CommonMessageInterface
6164

65+
@Inject
66+
lateinit var userGroupsCirclesRepository: UserGroupsCirclesRepository
67+
68+
private val coroutineScope = CoroutineScope(Dispatchers.Main)
69+
6270
override fun onBind(message: ChatMessage) {
6371
super.onBind(message)
6472
sharedApplication!!.componentApplication.inject(this)
@@ -69,21 +77,34 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
6977
itemView.isSelected = false
7078

7179
var textSize = context.resources!!.getDimension(R.dimen.chat_text_size)
72-
73-
var processedMessageText = messageUtils.enrichChatMessageText(
74-
binding.messageText.context,
75-
message,
76-
true,
77-
viewThemeUtils
78-
)
79-
80-
processedMessageText = messageUtils.processMessageParameters(
81-
binding.messageText.context,
82-
viewThemeUtils,
83-
processedMessageText!!,
84-
message,
85-
itemView
86-
)
80+
coroutineScope.launch {
81+
val userGroups = userGroupsCirclesRepository.getUserGroups()
82+
.map { list -> list.mapNotNull { it.groups } }.firstOrNull() ?: emptyList()
83+
84+
val userCircles = userGroupsCirclesRepository.getUserCircles()
85+
.map { list -> list.mapNotNull { it.displayName } }.firstOrNull() ?: emptyList()
86+
87+
var processedMessageText = messageUtils.enrichChatMessageText(
88+
binding.messageText.context,
89+
message,
90+
true,
91+
viewThemeUtils
92+
)
93+
94+
processedMessageText = messageUtils.processMessageParameters(
95+
binding.messageText.context,
96+
viewThemeUtils,
97+
processedMessageText!!,
98+
message,
99+
itemView,
100+
userGroups,
101+
userCircles
102+
)
103+
104+
binding.messageText.text = processedMessageText
105+
binding.messageText.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
106+
binding.messageText.text = processedMessageText
107+
}
87108

88109
val messageParameters = message.messageParameters
89110
if (
@@ -95,9 +116,6 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
95116
binding.messageAuthor.visibility = View.GONE
96117
}
97118

98-
binding.messageText.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
99-
binding.messageText.text = processedMessageText
100-
101119
if (message.lastEditTimestamp != 0L && !message.isDeleted) {
102120
binding.messageEditIndicator.visibility = View.VISIBLE
103121
binding.messageTime.text = dateUtils.getLocalTimeStringFromTimestamp(message.lastEditTimestamp!!)

app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingLinkPreviewMessageViewHolder.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ class OutcomingLinkPreviewMessageViewHolder(outcomingView: View, payload: Any) :
8383
viewThemeUtils,
8484
processedMessageText!!,
8585
message,
86-
itemView
86+
itemView,
87+
null,
88+
null
8789
)
8890

8991
binding.messageText.text = processedMessageText

app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingPreviewMessageViewHolder.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ public void onBind(@NonNull ChatMessage message) {
6060
viewThemeUtils,
6161
processedMessageText,
6262
message,
63-
binding.outgoingPreviewMessageBubble);
63+
binding.outgoingPreviewMessageBubble,
64+
null,
65+
null);
6466
}
6567
binding.outgoingPreviewMessageBubble.setOnClickListener(null);
6668

app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingTextMessageViewHolder.kt

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
2424
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
2525
import com.nextcloud.talk.chat.ChatActivity
2626
import com.nextcloud.talk.chat.data.model.ChatMessage
27+
import com.nextcloud.talk.data.database.model.UserGroupsCirclesRepository
2728
import com.nextcloud.talk.data.network.NetworkMonitor
2829
import com.nextcloud.talk.databinding.ItemCustomOutcomingTextMessageBinding
2930
import com.nextcloud.talk.models.json.chat.ReadStatus
@@ -36,6 +37,8 @@ import com.stfalcon.chatkit.messages.MessageHolders.OutcomingTextMessageViewHold
3637
import kotlinx.coroutines.CoroutineScope
3738
import kotlinx.coroutines.Dispatchers
3839
import kotlinx.coroutines.flow.first
40+
import kotlinx.coroutines.flow.firstOrNull
41+
import kotlinx.coroutines.flow.map
3942
import kotlinx.coroutines.launch
4043
import kotlinx.coroutines.withContext
4144
import javax.inject.Inject
@@ -65,6 +68,11 @@ class OutcomingTextMessageViewHolder(itemView: View) :
6568

6669
lateinit var commonMessageInterface: CommonMessageInterface
6770

71+
@Inject
72+
lateinit var userGroupsCirclesRepository: UserGroupsCirclesRepository
73+
74+
private val coroutineScope = CoroutineScope(Dispatchers.Main)
75+
6876
@Suppress("Detekt.LongMethod")
6977
override fun onBind(message: ChatMessage) {
7078
super.onBind(message)
@@ -74,20 +82,30 @@ class OutcomingTextMessageViewHolder(itemView: View) :
7482
layoutParams.isWrapBefore = false
7583
var textSize = context.resources.getDimension(R.dimen.chat_text_size)
7684
viewThemeUtils.platform.colorTextView(binding.messageTime, ColorRole.ON_SURFACE_VARIANT)
77-
78-
var processedMessageText = messageUtils.enrichChatMessageText(
79-
binding.messageText.context,
80-
message,
81-
false,
82-
viewThemeUtils
83-
)
84-
processedMessageText = messageUtils.processMessageParameters(
85-
binding.messageText.context,
86-
viewThemeUtils,
87-
processedMessageText!!,
88-
message,
89-
itemView
90-
)
85+
coroutineScope.launch {
86+
val userGroups = userGroupsCirclesRepository.getUserGroups()
87+
.map { list -> list.mapNotNull { it.groups } }.firstOrNull() ?: emptyList()
88+
89+
val userCircles = userGroupsCirclesRepository.getUserCircles()
90+
.map { list -> list.mapNotNull { it.displayName } }.firstOrNull() ?: emptyList()
91+
92+
var processedMessageText = messageUtils.enrichChatMessageText(
93+
binding.messageText.context,
94+
message,
95+
false,
96+
viewThemeUtils
97+
)
98+
processedMessageText = messageUtils.processMessageParameters(
99+
binding.messageText.context,
100+
viewThemeUtils,
101+
processedMessageText!!,
102+
message,
103+
itemView,
104+
userGroups,
105+
userCircles
106+
)
107+
binding.messageText.text = processedMessageText
108+
}
91109

92110
var isBubbled = true
93111
if (
@@ -105,7 +123,6 @@ class OutcomingTextMessageViewHolder(itemView: View) :
105123
binding.messageText.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
106124
binding.messageTime.layoutParams = layoutParams
107125
viewThemeUtils.platform.colorTextView(binding.messageText, ColorRole.ON_SURFACE_VARIANT)
108-
binding.messageText.text = processedMessageText
109126

110127
if (message.lastEditTimestamp != 0L && !message.isDeleted) {
111128
binding.messageEditIndicator.visibility = View.VISIBLE

app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ import com.nextcloud.talk.contacts.ContactsUiState
8787
import com.nextcloud.talk.contacts.ContactsViewModel
8888
import com.nextcloud.talk.contacts.RoomUiState
8989
import com.nextcloud.talk.conversationlist.viewmodels.ConversationsListViewModel
90+
import com.nextcloud.talk.data.database.model.UserGroupsCirclesRepository
9091
import com.nextcloud.talk.data.network.NetworkMonitor
9192
import com.nextcloud.talk.data.user.model.User
9293
import com.nextcloud.talk.databinding.ActivityConversationsBinding
@@ -146,6 +147,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
146147
import io.reactivex.disposables.Disposable
147148
import io.reactivex.schedulers.Schedulers
148149
import io.reactivex.subjects.BehaviorSubject
150+
import kotlinx.coroutines.Job
149151
import kotlinx.coroutines.flow.collect
150152
import kotlinx.coroutines.flow.onEach
151153
import kotlinx.coroutines.launch
@@ -196,6 +198,11 @@ class ConversationsListActivity :
196198

197199
lateinit var conversationsListViewModel: ConversationsListViewModel
198200

201+
private var job: Job? = null
202+
203+
@Inject
204+
lateinit var userGroupsOrCirclesRepository: UserGroupsCirclesRepository
205+
199206
override val appBarLayoutType: AppBarLayoutType
200207
get() = AppBarLayoutType.SEARCH_BAR
201208

@@ -264,6 +271,11 @@ class ConversationsListActivity :
264271
forwardMessage = intent.getBooleanExtra(KEY_FORWARD_MSG_FLAG, false)
265272
onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
266273

274+
job = lifecycleScope.launch {
275+
val initialized = userGroupsOrCirclesRepository.initialize()
276+
Log.d("MainActivity", "$initialized")
277+
}
278+
267279
initObservers()
268280
}
269281

@@ -1293,6 +1305,7 @@ class ConversationsListActivity :
12931305
if (searchViewDisposable != null && !searchViewDisposable!!.isDisposed) {
12941306
searchViewDisposable!!.dispose()
12951307
}
1308+
job?.cancel()
12961309
}
12971310

12981311
private fun onQueryTextChange(newText: String?) {

0 commit comments

Comments
 (0)