Further separates channels by kind in the UI

This commit is contained in:
Vitor Pamplona
2025-07-10 10:57:42 -04:00
parent ec985d58e7
commit f9189e9ec1
90 changed files with 1167 additions and 874 deletions
@@ -90,6 +90,10 @@ class LiveActivitiesEvent(
fun status() = checkStatus(tags.firstNotNullOfOrNull(StatusTag::parse))
fun statusEnum() = checkStatusEnum(tags.firstNotNullOfOrNull(StatusTag::parseEnum))
fun isLive() = statusEnum() == StatusTag.STATUS.LIVE
fun currentParticipants() = tags.firstNotNullOfOrNull(CurrentParticipantsTag::parse)
fun totalParticipants() = tags.firstNotNullOfOrNull(TotalParticipantsTag::parse)
@@ -113,6 +117,13 @@ class LiveActivitiesEvent(
eventStatus
}
fun checkStatusEnum(eventStatus: StatusTag.STATUS?): StatusTag.STATUS? =
if (eventStatus == StatusTag.STATUS.LIVE && createdAt < TimeUtils.eightHoursAgo()) {
StatusTag.STATUS.ENDED
} else {
eventStatus
}
fun participantsIntersect(keySet: Set<String>): Boolean = keySet.contains(pubKey) || tags.any(ParticipantTag::isIn, keySet)
companion object {
@@ -33,6 +33,16 @@ class StatusTag {
;
fun toTagArray() = assemble(this)
companion object {
fun parse(code: String): STATUS? =
when (code) {
LIVE.code -> LIVE
PLANNED.code -> PLANNED
ENDED.code -> ENDED
else -> null
}
}
}
companion object {
@@ -46,6 +56,14 @@ class StatusTag {
return tag[1]
}
@JvmStatic
fun parseEnum(tag: Array<String>): STATUS? {
ensure(tag.has(1)) { return null }
ensure(tag[0] == TAG_NAME) { return null }
ensure(tag[1].isNotEmpty()) { return null }
return STATUS.parse(tag[1])
}
@JvmStatic
fun assemble(status: STATUS) = arrayOf(TAG_NAME, status.code)
}