@@ -370,120 +370,111 @@ internal fun List<InstructionUnion>.tweets(includePin: Boolean = true): List<XQT
370370
371371 else -> emptyList()
372372 }
373- }.mapNotNull { entry ->
373+ }.flatMap { entry ->
374374 when (entry.content) {
375- is TimelineTimelineCursor -> null
375+ is TimelineTimelineCursor -> listOf ()
376376 is TimelineTimelineItem -> {
377- if (entry.content.itemContent is TimelineTweet ) {
378- XQTTimeline (
379- tweets = entry.content.itemContent,
380- sortedIndex = entry.sortIndex.toLong(),
381- id =
382- when (entry.content.itemContent.tweetResults.result) {
383- is Tweet -> entry.content.itemContent.tweetResults.result.restId
384- is TweetTombstone -> null
385- is TweetWithVisibilityResults -> entry.content.itemContent.tweetResults.result.tweet.restId
386- null -> null
387- },
388- parents = emptyList(),
389- )
390- } else {
391- null
392- }
377+ listOfNotNull(
378+ if (entry.content.itemContent is TimelineTweet ) {
379+ XQTTimeline (
380+ tweets = entry.content.itemContent,
381+ sortedIndex = entry.sortIndex.toLong(),
382+ id =
383+ when (entry.content.itemContent.tweetResults.result) {
384+ is Tweet -> entry.content.itemContent.tweetResults.result.restId
385+ is TweetTombstone -> null
386+ is TweetWithVisibilityResults -> entry.content.itemContent.tweetResults.result.tweet.restId
387+ null -> null
388+ },
389+ parents = emptyList(),
390+ )
391+ } else {
392+ null
393+ },
394+ )
393395 }
394396
395397 is TimelineTimelineModule -> {
396398 if (entry.content.items == null ) {
397- null
399+ listOf ()
398400 } else {
399401 if (entry.content.items.size == 1 ) {
400402 val item =
401403 entry.content.items
402404 .first()
403405 .item.itemContent
404406 if (item is TimelineTweet ) {
405- XQTTimeline (
406- tweets = item,
407- sortedIndex = entry.sortIndex.toLong(),
408- id =
409- when (item.tweetResults.result) {
410- is Tweet -> item.tweetResults.result.restId
411- is TweetTombstone -> null
412- is TweetWithVisibilityResults -> item.tweetResults.result.tweet.restId
413- null -> null
414- },
415- parents = emptyList(),
407+ listOf (
408+ XQTTimeline (
409+ tweets = item,
410+ sortedIndex = entry.sortIndex.toLong(),
411+ id =
412+ when (item.tweetResults.result) {
413+ is Tweet -> item.tweetResults.result.restId
414+ is TweetTombstone -> null
415+ is TweetWithVisibilityResults -> item.tweetResults.result.tweet.restId
416+ null -> null
417+ },
418+ parents = emptyList(),
419+ ),
416420 )
417421 } else {
418- null
422+ listOf ()
419423 }
420424 } else {
421- val parent =
422- entry.content.items
423- .take(entry.content.items.size - 1 )
424- .mapNotNull {
425- if (it.item.itemContent is TimelineTweet ) {
426- XQTTimeline (
427- tweets = it.item.itemContent,
428- sortedIndex = entry.sortIndex.toLong(),
429- id =
430- when (it.item.itemContent.tweetResults.result) {
431- is Tweet -> it.item.itemContent.tweetResults.result.restId
432- is TweetTombstone -> null
433- is TweetWithVisibilityResults -> it.item.itemContent.tweetResults.result.tweet.restId
434- null -> null
435- },
436- parents = emptyList(),
437- )
438- } else {
439- null
440- }
425+ entry.content.items
426+ .mapNotNull {
427+ if (it.item.itemContent is TimelineTweet ) {
428+ XQTTimeline (
429+ tweets = it.item.itemContent,
430+ sortedIndex = entry.sortIndex.toLong(),
431+ id =
432+ when (it.item.itemContent.tweetResults.result) {
433+ is Tweet -> it.item.itemContent.tweetResults.result.restId
434+ is TweetTombstone -> null
435+ is TweetWithVisibilityResults -> it.item.itemContent.tweetResults.result.tweet.restId
436+ null -> null
437+ },
438+ parents = emptyList(),
439+ )
440+ } else {
441+ null
441442 }
442- val lastItem =
443- entry.content.items
444- .last()
445- .item.itemContent
446- if (lastItem is TimelineTweet ) {
447- XQTTimeline (
448- tweets = lastItem,
449- sortedIndex = entry.sortIndex.toLong(),
450- id =
451- when (lastItem.tweetResults.result) {
452- is Tweet -> lastItem.tweetResults.result.restId
453- is TweetTombstone -> null
454- is TweetWithVisibilityResults -> lastItem.tweetResults.result.tweet.restId
455- null -> null
456- },
457- parents = parent,
458- )
459- } else {
460- null
461- }
443+ }.groupBy {
444+ when (it.tweets.tweetResults.result) {
445+ is Tweet ->
446+ it.tweets.tweetResults.result.legacy
447+ ?.conversationIdStr
448+
449+ is TweetTombstone -> null
450+ is TweetWithVisibilityResults ->
451+ it.tweets.tweetResults.result.tweet.legacy
452+ ?.conversationIdStr
453+
454+ null -> null
455+ }
456+ }.map { (_, items) ->
457+ val parents = items.take(items.size - 1 )
458+ val item = items.last()
459+ XQTTimeline (
460+ parents = parents,
461+ tweets = item.tweets,
462+ sortedIndex = item.sortedIndex,
463+ id =
464+ when (val item = item.tweets.tweetResults.result) {
465+ is Tweet -> item.restId
466+ is TweetTombstone -> null
467+ is TweetWithVisibilityResults -> item.tweet.restId
468+ null -> null
469+ },
470+ )
471+ }
462472 }
463473 }
464474 }
465475
466- null -> null
476+ null -> listOf ()
467477 }
468- // pair.first.let {
469- // when (it) {
470- // is TimelineTweet -> {
471- // XQTTimeline(
472- // tweets = it,
473- // sortedIndex = pair.second,
474- // id =
475- // when (it.tweetResults.result) {
476- // is Tweet -> it.tweetResults.result.restId
477- // is TweetTombstone -> null
478- // is TweetWithVisibilityResults -> it.tweetResults.result.tweet.restId
479- // null -> null
480- // },
481- // )
482- // }
483- //
484- // else -> null
485- // }
486- // }
487478 }.filter {
488479 it.tweets.promotedMetadata == null
489480 }
0 commit comments