diff --git a/app/src/main/java/com/scarriffle/calendarr/domain/model/CalEvent.kt b/app/src/main/java/com/scarriffle/calendarr/domain/model/CalEvent.kt index e5ccd8c..f90d9a2 100644 --- a/app/src/main/java/com/scarriffle/calendarr/domain/model/CalEvent.kt +++ b/app/src/main/java/com/scarriffle/calendarr/domain/model/CalEvent.kt @@ -31,6 +31,9 @@ data class CalEvent( val owner: EventPerson? = null, val isGroupEvent: Boolean = false, val displayColor: String? = null, + // Server-decorated title for the group combined view (group icon / owner + // prefix); rendered in group mode while `title` stays raw for editing. + val displayTitle: String? = null, ) { /** * Group view supplies a server-resolved colour (display_color); otherwise @@ -117,6 +120,7 @@ data class CalEvent( owner = personFrom(json, "owner"), isGroupEvent = json.optBoolean("is_group_event", false), displayColor = json.strOrNull("display_color"), + displayTitle = json.strOrNull("display_title"), ) } } diff --git a/app/src/main/java/com/scarriffle/calendarr/ui/calendar/CalendarViewModel.kt b/app/src/main/java/com/scarriffle/calendarr/ui/calendar/CalendarViewModel.kt index dbc215a..9133813 100644 --- a/app/src/main/java/com/scarriffle/calendarr/ui/calendar/CalendarViewModel.kt +++ b/app/src/main/java/com/scarriffle/calendarr/ui/calendar/CalendarViewModel.kt @@ -215,6 +215,10 @@ class CalendarViewModel @Inject constructor( private fun decorateGroup(events: List): List { val me = currentUserId return events.map { ev -> + // Prefer the server-decorated title (group icon + owner prefix) so + // web, iOS and Android render identically; fall back for old servers. + val serverTitle = ev.displayTitle?.takeIf { it.isNotEmpty() } + if (serverTitle != null) return@map ev.copy(title = serverTitle) val prefix = when { ev.isGroupEvent && ev.creator != null && ev.creator.id != me -> "👥 ${firstName(ev.creator.displayName)}: " ev.isGroupEvent -> "👥 "