presentLatestChangelog

suspend fun FeedbackClient.presentLatestChangelog(activity: Activity, onlyIfUnseen: Boolean = false, autoMarkSeen: Boolean = true): Boolean(source)

Convenience extension function that fetches console-configured What's-New copy and presents a modal bottom sheet dialog directly over an Android Activity.

This function suspends until the user dismisses the dialog, allowing straightforward sequential integration within Activity lifecycles or coroutine launch scopes.

Behavior & Thread Safety

  • Fetches changelog entries and configuration asynchronously on Dispatchers.IO.

  • When onlyIfUnseen is true, skips presentation if the latest release note was already viewed on this device.

  • When autoMarkSeen is true, automatically records the latest release note in ChangelogStore on presentation.

  • Dynamically mounts a translucent Compose dialog on the main UI thread.

  • Wraps the content in CupThreadTheme to ensure console-selected theme palettes are honored.

  • Resumes with false immediately if the changelog feature is disabled, if no entries exist, or if already seen.

  • Resumes with true once the user views and closes the sheet.

Example Usage

class MainActivity : ComponentActivity() {
private val feedbackClient by lazy {
FeedbackClient(FeedbackClientConfig("https://api.cupthread.com", "app_live_sample123"))
}

override fun onResume() {
super.onResume()
lifecycleScope.launch {
val shown = feedbackClient.presentLatestChangelog(
activity = this@MainActivity,
onlyIfUnseen = true
)
if (shown) {
Log.d("Changelog", "User viewed new What's-New release notes.")
}
}
}
}

Screenshot

Changelog Overlay

Receiver

The FeedbackClient used to fetch changelog entries and appearance configuration.

Return

false if the changelog is disabled, empty, or already seen; true if the sheet was presented and dismissed.

Parameters

activity

The host Android Activity over which the dialog window will be shown.

onlyIfUnseen

If true, checks ChangelogStore and skips presentation if the latest version was already seen.

autoMarkSeen

If true, automatically marks the latest version as seen upon presentation.