-
Notifications
You must be signed in to change notification settings - Fork 19
/
MessageModule.kt
189 lines (163 loc) · 7.91 KB
/
MessageModule.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
/*
* Wire
* Copyright (C) 2023 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.wire.android.di.accountScoped
import com.wire.android.di.CurrentAccount
import com.wire.android.di.KaliumCoreLogic
import com.wire.kalium.logic.CoreLogic
import com.wire.kalium.logic.data.user.UserId
import com.wire.kalium.logic.feature.asset.GetImageAssetMessagesForConversationUseCase
import com.wire.kalium.logic.feature.asset.GetMessageAssetUseCase
import com.wire.kalium.logic.feature.asset.ObservePaginatedAssetImageMessages
import com.wire.kalium.logic.feature.asset.GetPaginatedFlowOfAssetMessageByConversationIdUseCase
import com.wire.kalium.logic.feature.asset.ScheduleNewAssetMessageUseCase
import com.wire.kalium.logic.feature.asset.UpdateAssetMessageDownloadStatusUseCase
import com.wire.kalium.logic.feature.message.DeleteMessageUseCase
import com.wire.kalium.logic.feature.message.GetMessageByIdUseCase
import com.wire.kalium.logic.feature.message.GetNotificationsUseCase
import com.wire.kalium.logic.feature.message.GetPaginatedFlowOfMessagesByConversationUseCase
import com.wire.kalium.logic.feature.message.GetPaginatedFlowOfMessagesBySearchQueryAndConversationIdUseCase
import com.wire.kalium.logic.feature.message.GetSearchedConversationMessagePositionUseCase
import com.wire.kalium.logic.feature.message.MarkMessagesAsNotifiedUseCase
import com.wire.kalium.logic.feature.message.MessageScope
import com.wire.kalium.logic.feature.message.ObserveMessageReactionsUseCase
import com.wire.kalium.logic.feature.message.ObserveMessageReceiptsUseCase
import com.wire.kalium.logic.feature.message.RetryFailedMessageUseCase
import com.wire.kalium.logic.feature.message.SendEditTextMessageUseCase
import com.wire.kalium.logic.feature.message.SendKnockUseCase
import com.wire.kalium.logic.feature.message.SendTextMessageUseCase
import com.wire.kalium.logic.feature.message.ToggleReactionUseCase
import com.wire.kalium.logic.feature.message.composite.SendButtonActionMessageUseCase
import com.wire.kalium.logic.feature.message.ephemeral.EnqueueMessageSelfDeletionUseCase
import com.wire.kalium.logic.feature.message.getPaginatedFlowOfAssetMessageByConversationId
import com.wire.kalium.logic.feature.message.observePaginatedImageAssetMessageByConversationId
import com.wire.kalium.logic.feature.message.getPaginatedFlowOfMessagesByConversation
import com.wire.kalium.logic.feature.message.getPaginatedFlowOfMessagesBySearchQueryAndConversation
import com.wire.kalium.logic.feature.sessionreset.ResetSessionUseCase
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ViewModelComponent
import dagger.hilt.android.scopes.ViewModelScoped
@Module
@InstallIn(ViewModelComponent::class)
@Suppress("TooManyFunctions")
class MessageModule {
@ViewModelScoped
@Provides
fun provideMessageScope(
@CurrentAccount currentAccount: UserId,
@KaliumCoreLogic coreLogic: CoreLogic
): MessageScope = coreLogic.getSessionScope(currentAccount).messages
@ViewModelScoped
@Provides
fun provideSendButtonActionMessageUseCase(messageScope: MessageScope): SendButtonActionMessageUseCase =
messageScope.sendButtonActionMessage
@ViewModelScoped
@Provides
fun provideEnqueueMessageSelfDeletionUseCase(messageScope: MessageScope): EnqueueMessageSelfDeletionUseCase =
messageScope.enqueueMessageSelfDeletion
@ViewModelScoped
@Provides
fun provideResetSessionUseCase(messageScope: MessageScope): ResetSessionUseCase =
messageScope.resetSession
@ViewModelScoped
@Provides
fun provideDeleteMessageUseCase(messageScope: MessageScope): DeleteMessageUseCase =
messageScope.deleteMessage
@ViewModelScoped
@Provides
fun provideMarkMessagesAsNotifiedUseCase(messageScope: MessageScope): MarkMessagesAsNotifiedUseCase =
messageScope.markMessagesAsNotified
@ViewModelScoped
@Provides
fun provideUpdateAssetMessageDownloadStatusUseCase(messageScope: MessageScope): UpdateAssetMessageDownloadStatusUseCase =
messageScope.updateAssetMessageDownloadStatus
@ViewModelScoped
@Provides
fun provideSendTextMessageUseCase(messageScope: MessageScope): SendTextMessageUseCase = messageScope.sendTextMessage
@ViewModelScoped
@Provides
fun provideSendEditTextMessageUseCase(messageScope: MessageScope): SendEditTextMessageUseCase =
messageScope.sendEditTextMessage
@ViewModelScoped
@Provides
fun provideRetryFailedMessageUseCase(messageScope: MessageScope): RetryFailedMessageUseCase =
messageScope.retryFailedMessage
@ViewModelScoped
@Provides
fun provideSendKnockUseCase(messageScope: MessageScope): SendKnockUseCase =
messageScope.sendKnock
@ViewModelScoped
@Provides
fun provideToggleReactionUseCase(messageScope: MessageScope): ToggleReactionUseCase =
messageScope.toggleReaction
@ViewModelScoped
@Provides
fun provideObserveMessageReactionsUseCase(messageScope: MessageScope): ObserveMessageReactionsUseCase =
messageScope.observeMessageReactions
@ViewModelScoped
@Provides
fun provideObserveMessageReceiptsUseCase(messageScope: MessageScope): ObserveMessageReceiptsUseCase =
messageScope.observeMessageReceipts
@ViewModelScoped
@Provides
fun providesSendAssetMessageUseCase(messageScope: MessageScope): ScheduleNewAssetMessageUseCase =
messageScope.sendAssetMessage
@ViewModelScoped
@Provides
fun provideGetPrivateAssetUseCase(messageScope: MessageScope): GetMessageAssetUseCase =
messageScope.getAssetMessage
@ViewModelScoped
@Provides
fun provideGetNotificationsUseCase(messageScope: MessageScope): GetNotificationsUseCase =
messageScope.getNotifications
@ViewModelScoped
@Provides
fun provideGetMessageByIdUseCase(messageScope: MessageScope): GetMessageByIdUseCase =
messageScope.getMessageById
@ViewModelScoped
@Provides
fun provideGetPaginatedMessagesUseCase(messageScope: MessageScope): GetPaginatedFlowOfMessagesByConversationUseCase =
messageScope.getPaginatedFlowOfMessagesByConversation
@ViewModelScoped
@Provides
fun provideGetImageAssetMessagesByConversationUseCase(messageScope: MessageScope): GetImageAssetMessagesForConversationUseCase =
messageScope.getImageAssetMessagesByConversation
@ViewModelScoped
@Provides
fun provideGetPaginatedFlowOfAssetMessageByConversationId(
messageScope: MessageScope
): GetPaginatedFlowOfAssetMessageByConversationIdUseCase =
messageScope.getPaginatedFlowOfAssetMessageByConversationId
@ViewModelScoped
@Provides
fun provideGetPaginatedFlowOfImageAssetMessageByConversationId(
messageScope: MessageScope
): ObservePaginatedAssetImageMessages =
messageScope.observePaginatedImageAssetMessageByConversationId
@ViewModelScoped
@Provides
fun provideGetPaginatedFlowOfMessagesBySearchQueryAndConversation(
messageScope: MessageScope
): GetPaginatedFlowOfMessagesBySearchQueryAndConversationIdUseCase =
messageScope.getPaginatedFlowOfMessagesBySearchQueryAndConversation
@ViewModelScoped
@Provides
fun provideGetSearchedConversationMessagePositionUseCase(messageScope: MessageScope): GetSearchedConversationMessagePositionUseCase =
messageScope.getSearchedConversationMessagePosition
}