@@ -7,8 +7,10 @@ import com.courier.android.models.remove
77import com.courier.android.modules.addAuthenticationListener
88import com.courier.android.modules.addInboxListener
99import com.courier.android.modules.archiveMessage
10+ import com.courier.android.modules.archivedMessages
1011import com.courier.android.modules.clickMessage
1112import com.courier.android.modules.fcmToken
13+ import com.courier.android.modules.feedMessages
1214import com.courier.android.modules.fetchNextInboxPage
1315import com.courier.android.modules.getToken
1416import com.courier.android.modules.inboxPaginationLimit
@@ -24,6 +26,7 @@ import com.courier.android.modules.tenantId
2426import com.courier.android.modules.tokens
2527import com.courier.android.modules.unreadMessage
2628import com.courier.android.modules.userId
29+ import com.courier.android.ui.inbox.InboxMessageFeed
2730import com.courier.courier_flutter.CourierPlugin.Companion.TAG
2831import io.flutter.embedding.engine.plugins.FlutterPlugin
2932import io.flutter.plugin.common.MethodCall
@@ -123,7 +126,8 @@ internal class SharedMethodHandler(channel: CourierFlutterChannel, private val b
123126 // Create the listener
124127 val listener = Courier .shared.addAuthenticationListener { userId ->
125128 CourierFlutterChannel .EVENTS .invokeMethod(binding.binaryMessenger, method = " auth.state_changed" , mapOf (
126- " userId" to userId
129+ " userId" to userId,
130+ " id" to listenerId
127131 ))
128132 }
129133
@@ -230,9 +234,19 @@ internal class SharedMethodHandler(channel: CourierFlutterChannel, private val b
230234
231235 }
232236
233- " inbox.get_messages " -> {
237+ " inbox.get_feed_messages " -> {
234238
235- val messages = Courier .shared.inboxMessages ? : emptyList()
239+ val messages = Courier .shared.feedMessages
240+
241+ val json = messages.map { it.toJson() }
242+
243+ result.success(json)
244+
245+ }
246+
247+ " inbox.get_archived_messages" -> {
248+
249+ val messages = Courier .shared.archivedMessages
236250
237251 val json = messages.map { it.toJson() }
238252
@@ -250,9 +264,15 @@ internal class SharedMethodHandler(channel: CourierFlutterChannel, private val b
250264
251265 " inbox.fetch_next_page" -> {
252266
253- val messages = Courier .shared.fetchNextInboxPage( )
267+ val params = call.arguments as ? HashMap < * , * > ? : throw MissingParameter ( " params " )
254268
255- val json = messages.map { it.toJson() }
269+ val feed = params.extract(" feed" ) as String
270+
271+ val inboxFeed = if (feed == " archived" ) InboxMessageFeed .ARCHIVE else InboxMessageFeed .FEED
272+
273+ val res = Courier .shared.fetchNextInboxPage(feed = inboxFeed)
274+
275+ val json = res?.toJson()
256276
257277 result.success(json)
258278
@@ -265,31 +285,99 @@ internal class SharedMethodHandler(channel: CourierFlutterChannel, private val b
265285 val listenerId = params.extract(" listenerId" ) as String
266286
267287 val listener = Courier .shared.addInboxListener(
268- onInitialLoad = {
288+ onLoading = {
269289 CourierFlutterChannel .EVENTS .invokeMethod(
270290 messenger = binding.binaryMessenger,
271291 method = " auth.state_changed" ,
272- arguments = null
292+ arguments = mapOf (
293+ " id" to listenerId
294+ )
273295 )
274296 },
275297 onError = { error ->
276298 CourierFlutterChannel .EVENTS .invokeMethod(
277299 messenger = binding.binaryMessenger,
278300 method = " inbox.listener_error" ,
279301 arguments = mapOf (
302+ " id" to listenerId,
280303 " error" to error.message
281304 )
282305 )
283306 },
284- onMessagesChanged = { messages, unreadMessageCount, totalMessageCount, canPaginate ->
307+ onUnreadCountChanged = { count ->
308+ CourierFlutterChannel .EVENTS .invokeMethod(
309+ messenger = binding.binaryMessenger,
310+ method = " inbox.listener_unread_count_changed" ,
311+ arguments = mapOf (
312+ " id" to listenerId,
313+ " count" to count
314+ )
315+ )
316+ },
317+ onFeedChanged = { messageSet ->
318+ CourierFlutterChannel .EVENTS .invokeMethod(
319+ messenger = binding.binaryMessenger,
320+ method = " inbox.listener_feed_changed" ,
321+ arguments = mapOf (
322+ " id" to listenerId,
323+ " messageSet" to messageSet.toJson(),
324+ )
325+ )
326+ },
327+ onArchiveChanged = { messageSet ->
328+ CourierFlutterChannel .EVENTS .invokeMethod(
329+ messenger = binding.binaryMessenger,
330+ method = " inbox.listener_archive_changed" ,
331+ arguments = mapOf (
332+ " id" to listenerId,
333+ " messageSet" to messageSet.toJson(),
334+ )
335+ )
336+ },
337+ onPageAdded = { feed, page ->
338+ CourierFlutterChannel .EVENTS .invokeMethod(
339+ messenger = binding.binaryMessenger,
340+ method = " inbox.listener_page_added" ,
341+ arguments = mapOf (
342+ " id" to listenerId,
343+ " feed" to if (feed == InboxMessageFeed .ARCHIVE ) " archived" else " feed" ,
344+ " page" to page.toJson(),
345+ )
346+ )
347+ },
348+ onMessageChanged = { feed, index, message ->
349+ CourierFlutterChannel .EVENTS .invokeMethod(
350+ messenger = binding.binaryMessenger,
351+ method = " inbox.listener_message_changed" ,
352+ arguments = mapOf (
353+ " id" to listenerId,
354+ " feed" to if (feed == InboxMessageFeed .ARCHIVE ) " archived" else " feed" ,
355+ " index" to index,
356+ " message" to message.toJson(),
357+ )
358+ )
359+ },
360+ onMessageAdded = { feed, index, message ->
361+ CourierFlutterChannel .EVENTS .invokeMethod(
362+ messenger = binding.binaryMessenger,
363+ method = " inbox.listener_message_added" ,
364+ arguments = mapOf (
365+ " id" to listenerId,
366+ " feed" to if (feed == InboxMessageFeed .ARCHIVE ) " archived" else " feed" ,
367+ " index" to index,
368+ " message" to message.toJson(),
369+ )
370+ )
371+ },
372+ onMessageRemoved = { feed, index, message ->
285373 CourierFlutterChannel .EVENTS .invokeMethod(
286374 messenger = binding.binaryMessenger,
287- method = " inbox.listener_messages_changed " ,
375+ method = " inbox.listener_message_removed " ,
288376 arguments = mapOf (
289- " messages " to messages.map { it.toJson() } ,
290- " unreadMessageCount " to unreadMessageCount ,
291- " totalMessageCount " to totalMessageCount ,
292- " canPaginate " to canPaginate ,
377+ " id " to listenerId ,
378+ " feed " to if (feed == InboxMessageFeed . ARCHIVE ) " archived " else " feed " ,
379+ " index " to index ,
380+ " message " to message.toJson() ,
293381 )
294382 )
295383 }
0 commit comments