Skip to content

Commit 200bc1a

Browse files
authored
Merge pull request #1182 from DimensionDev/bugfix/xqt_conversation_group
fix xqt wrong parents
2 parents 0e19017 + 6ad80f9 commit 200bc1a

File tree

2 files changed

+86
-91
lines changed
  • .github/workflows
  • shared/src/commonMain/kotlin/dev/dimension/flare/data/database/cache/mapper

2 files changed

+86
-91
lines changed

.github/workflows/ios.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ jobs:
2929
with:
3030
distribution: 'zulu'
3131
java-version: 21
32+
- name: Setup Xcode
33+
uses: maxim-lobanov/setup-xcode@v1
34+
with:
35+
xcode-version: latest-stable
3236
- name: Set Default Scheme
3337
working-directory: ./iosApp
3438
run: |

shared/src/commonMain/kotlin/dev/dimension/flare/data/database/cache/mapper/XQT.kt

Lines changed: 82 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)