Package-level declarations

Types

Link copied to clipboard
open class AlertManager

A global manager for displaying alerts across the application. This allows ViewModels to trigger alerts without direct dependencies on UI components.

Link copied to clipboard
interface BarcodeScanner
Link copied to clipboard
fun interface ComposableContent
Link copied to clipboard
interface MapViewProvider

Interface for providing a flavored MapView. This allows the map feature to be decoupled from specific map implementations (Google Maps vs OSMDroid). Platform implementations create their own ViewModel via Koin.

Link copied to clipboard
open class SnackbarManager

A global manager for displaying snackbars across the application. This allows ViewModels to trigger transient feedback messages without direct dependencies on UI components or SnackbarHostState.

Link copied to clipboard
data class TracerouteMapOverlayInsets(val overlayAlignment: Alignment = Alignment.BottomCenter, val overlayPadding: PaddingValues = PaddingValues(bottom = 16.dp), val contentHorizontalAlignment: Alignment.Horizontal = Alignment.CenterHorizontally)

Properties

Link copied to clipboard
val ChannelOption.labelRes: StringResource
Link copied to clipboard
val LocalMapMainScreenProvider: ProvidableCompositionLocal<@Composable (onClickNodeChip: (Int) -> Unit, navigateToNodeDetails: (Int) -> Unit, waypointId: Int?) -> Unit>

Provides the platform-specific Map Main Screen. On Desktop or JVM targets where native maps aren't available yet, it falls back to a PlaceholderScreen.

Link copied to clipboard
val LocalNfcScannerProvider: ProvidableCompositionLocal<@Composable (onResult: (String?) -> Unit, onNfcDisabled: () -> Unit) -> Unit>
Link copied to clipboard

Provides the platform-specific Map Screen for a Node (e.g. Google Maps or OSMDroid on Android). On Desktop or JVM targets where native maps aren't available yet, it falls back to a PlaceholderScreen.

Link copied to clipboard
val LocalNodeTrackMapProvider: ProvidableCompositionLocal<@Composable (destNum: Int, positions: List<Position>, modifier: Modifier, selectedPositionTime: Int?, onPositionSelected: (Int) -> Unit?) -> Unit>

Provides an embeddable position-track map composable that renders a polyline with markers for the given positions. Unlike LocalNodeMapScreenProvider, this does not include a Scaffold or AppBar — it is designed to be embedded inside another screen layout (e.g. the position-log adaptive layout).

Link copied to clipboard
val LocalTracerouteMapProvider: ProvidableCompositionLocal<@Composable (tracerouteOverlay: TracerouteOverlay?, tracerouteNodePositions: Map<Int, Position>, onMappableCountChanged: (Int, Int) -> Unit, modifier: Modifier) -> Unit>

Provides an embeddable traceroute map composable that renders node markers and forward/return offset polylines for a traceroute result. Unlike LocalMapViewProvider, this does not include a Scaffold, AppBar, waypoints, location tracking, custom tiles, or any main-map features — it is designed to be embedded inside TracerouteMapScreen's scaffold.

Link copied to clipboard
val LocalTracerouteMapScreenProvider: ProvidableCompositionLocal<@Composable (destNum: Int, requestId: Int, logUuid: String?, onNavigateUp: () -> Unit) -> Unit>

Provides the platform-specific Traceroute Map Screen. On Desktop or JVM targets where native maps aren't available yet, it falls back to a PlaceholderScreen.

Functions

Link copied to clipboard

A helper component that renders an AlertManager.AlertData using the same logic as MainScreen.

Link copied to clipboard

Parses HTML into an AnnotatedString with platform-appropriate rendering.

expect fun annotatedStringFromHtml(html: String, linkStyles: TextLinkStyles? = null): AnnotatedString

Parses HTML into an AnnotatedString with platform-appropriate rendering.

JVM stub — returns the raw HTML as plain text (no HTML rendering on Desktop).

Link copied to clipboard
fun annotateNeighborInfo(inString: String?, statusGreen: Color, statusYellow: Color, statusOrange: Color): AnnotatedString

Converts a raw neighbor info string into an AnnotatedString with SNR values highlighted according to their quality.

Link copied to clipboard
fun annotateTraceroute(inString: String?, statusGreen: Color, statusYellow: Color, statusOrange: Color): AnnotatedString

Converts a raw traceroute string into an AnnotatedString with SNR values highlighted according to their quality.

Link copied to clipboard
actual fun createClipEntry(text: String, label: String): ClipEntry

Creates a platform-appropriate ClipEntry for the given text.

expect fun createClipEntry(text: String, label: String = ""): ClipEntry

Creates a platform-appropriate ClipEntry for the given text.

actual fun createClipEntry(text: String, label: String): ClipEntry

Creates a platform-appropriate ClipEntry for the given text.

Link copied to clipboard
fun formatAgo(lastSeenUnixSeconds: Int): String

Formats a given Unix timestamp (in seconds) into a relative "time ago" string.

Link copied to clipboard
Link copied to clipboard
fun getChannelList(new: List<ChannelSettings>, old: List<ChannelSettings>): List<Channel>

Builds a Channel list from the difference between two ChannelSettings lists. Only changes are included in the resulting list.

Link copied to clipboard

Returns whether GPS/location services are currently disabled at the system level. Always false on platforms where this concept doesn't apply.

Returns whether GPS/location services are currently disabled at the system level. Always false on platforms where this concept doesn't apply.

JVM — GPS is never disabled on Desktop (concept doesn't apply).

Link copied to clipboard

Returns whether ACCESS_LOCAL_NETWORK is currently granted. Always true on platforms / API levels that don't gate local-network access behind a runtime permission.

Returns whether ACCESS_LOCAL_NETWORK is currently granted. Always true on platforms / API levels that don't gate local-network access behind a runtime permission.

JVM — local network permission is always considered granted on Desktop.

Link copied to clipboard

Returns whether location permissions are currently granted. Always true on platforms without runtime permissions.

Returns whether location permissions are currently granted. Always true on platforms without runtime permissions.

JVM — location permission is always considered granted on Desktop.

Link copied to clipboard
actual fun KeepScreenOn(enabled: Boolean)

Keeps the screen awake while enabled is true. No-op on platforms that don't support it.

expect fun KeepScreenOn(enabled: Boolean)

Keeps the screen awake while enabled is true. No-op on platforms that don't support it.

actual fun KeepScreenOn(enabled: Boolean)

JVM no-op — Keep screen on is not applicable on Desktop.

Link copied to clipboard
Link copied to clipboard
actual fun PlatformBackHandler(enabled: Boolean, onBack: () -> Unit)

Intercepts the platform back gesture/button while enabled is true. No-op on platforms without a system back.

expect fun PlatformBackHandler(enabled: Boolean, onBack: () -> Unit)

Intercepts the platform back gesture/button while enabled is true. No-op on platforms without a system back.

actual fun PlatformBackHandler(enabled: Boolean, onBack: () -> Unit)

JVM no-op — Desktop has no system back gesture.

Link copied to clipboard
@Preview(showBackground = true, name = "Composable Content Alert")
fun PreviewComposableAlert()
Link copied to clipboard
@Preview(showBackground = true, name = "HTML Alert")
fun PreviewHtmlAlert()
Link copied to clipboard
@Preview(showBackground = true, name = "Icon and Text Alert")
fun PreviewIconAlert()
Link copied to clipboard
@Preview(showBackground = true, name = "Multiple Choice Alert")
fun PreviewMultipleChoiceAlert()
Link copied to clipboard
@Preview(showBackground = true, name = "Simple Text Alert")
fun PreviewTextAlert()
Link copied to clipboard
actual fun rememberOpenFileLauncher(onUriReceived: (CommonUri?) -> Unit): (mimeType: String) -> Unit

Returns a launcher function to prompt the user to open/pick a file. The callback receives the selected file URI.

expect fun rememberOpenFileLauncher(onUriReceived: (CommonUri?) -> Unit): (mimeType: String) -> Unit

Returns a launcher function to prompt the user to open/pick a file. The callback receives the selected file URI.

actual fun rememberOpenFileLauncher(onUriReceived: (CommonUri?) -> Unit): (mimeType: String) -> Unit

JVM — Opens a native file dialog to pick a file.

Link copied to clipboard

Returns a launcher to open the platform's location settings.

Returns a launcher to open the platform's location settings.

Returns a launcher to open the platform's location settings.

Link copied to clipboard
actual fun rememberOpenMap(): (latitude: Double, longitude: Double, label: String) -> Unit

Returns a function to open the platform's map application at the given coordinates.

expect fun rememberOpenMap(): (latitude: Double, longitude: Double, label: String) -> Unit

Returns a function to open the platform's map application at the given coordinates.

actual fun rememberOpenMap(): (latitude: Double, longitude: Double, label: String) -> Unit

JVM stub — map opening is not available on Desktop.

Link copied to clipboard

Returns a function to open the platform's NFC settings.

Returns a function to open the platform's NFC settings.

JVM stub — NFC settings are not available on Desktop.

Link copied to clipboard
actual fun rememberOpenUrl(): (url: String) -> Unit

Returns a function to open the platform's browser with the given URL.

expect fun rememberOpenUrl(): (url: String) -> Unit

Returns a function to open the platform's browser with the given URL.

actual fun rememberOpenUrl(): (url: String) -> Unit

JVM stub — URL opening via Desktop browse API.

Link copied to clipboard

Generates a QR code painter directly using the Skia/Compose canvas API in pure Kotlin.

Link copied to clipboard
actual fun rememberReadTextFromUri(): suspend (CommonUri, maxChars: Int) -> String?

Returns a suspend function that reads up to maxChars characters of text from a CommonUri. Returns null if the file is empty or cannot be read.

expect fun rememberReadTextFromUri(): suspend (CommonUri, maxChars: Int) -> String?

Returns a suspend function that reads up to maxChars characters of text from a CommonUri. Returns null if the file is empty or cannot be read.

actual fun rememberReadTextFromUri(): suspend (CommonUri, maxChars: Int) -> String?

JVM — Reads text from a file URI.

Link copied to clipboard
actual fun rememberRequestBluetoothPermission(onGranted: () -> Unit, onDenied: () -> Unit): () -> Unit

Returns a launcher to request Bluetooth scan + connect permissions. No-op on platforms without runtime BLE perms.

expect fun rememberRequestBluetoothPermission(onGranted: () -> Unit, onDenied: () -> Unit = {}): () -> Unit

Returns a launcher to request Bluetooth scan + connect permissions. No-op on platforms without runtime BLE perms.

actual fun rememberRequestBluetoothPermission(onGranted: () -> Unit, onDenied: () -> Unit): () -> Unit

JVM no-op — Desktop does not require runtime Bluetooth permissions.

Link copied to clipboard
actual fun rememberRequestLocalNetworkPermission(onGranted: () -> Unit, onDenied: () -> Unit): () -> Unit

Returns a launcher to request the ACCESS_LOCAL_NETWORK permission. No-op on platforms that don't require it.

expect fun rememberRequestLocalNetworkPermission(onGranted: () -> Unit, onDenied: () -> Unit = {}): () -> Unit

Returns a launcher to request the ACCESS_LOCAL_NETWORK permission. No-op on platforms that don't require it.

actual fun rememberRequestLocalNetworkPermission(onGranted: () -> Unit, onDenied: () -> Unit): () -> Unit

JVM no-op — Desktop does not require runtime local network permissions.

Link copied to clipboard
actual fun rememberRequestLocationPermission(onGranted: () -> Unit, onDenied: () -> Unit): () -> Unit

Returns a launcher to request location permissions.

expect fun rememberRequestLocationPermission(onGranted: () -> Unit, onDenied: () -> Unit = {}): () -> Unit

Returns a launcher to request location permissions.

actual fun rememberRequestLocationPermission(onGranted: () -> Unit, onDenied: () -> Unit): () -> Unit

Returns a launcher to request location permissions.

Link copied to clipboard
actual fun rememberRequestNotificationPermission(onGranted: () -> Unit, onDenied: () -> Unit): () -> Unit

Returns a launcher to request the POST_NOTIFICATIONS permission. No-op on platforms that don't require it.

expect fun rememberRequestNotificationPermission(onGranted: () -> Unit, onDenied: () -> Unit = {}): () -> Unit

Returns a launcher to request the POST_NOTIFICATIONS permission. No-op on platforms that don't require it.

actual fun rememberRequestNotificationPermission(onGranted: () -> Unit, onDenied: () -> Unit): () -> Unit

JVM no-op — Desktop does not require runtime notification permissions.

Link copied to clipboard
actual fun rememberSaveFileLauncher(onUriReceived: (CommonUri) -> Unit): (defaultFilename: String, mimeType: String) -> Unit

Returns a launcher function to prompt the user to save a file. The callback receives the saved file URI.

expect fun rememberSaveFileLauncher(onUriReceived: (CommonUri) -> Unit): (defaultFilename: String, mimeType: String) -> Unit

Returns a launcher function to prompt the user to save a file. The callback receives the saved file URI.

actual fun rememberSaveFileLauncher(onUriReceived: (CommonUri) -> Unit): (defaultFilename: String, mimeType: String) -> Unit

JVM — Opens a native file dialog to save a file.

Link copied to clipboard
actual fun rememberShowToast(): suspend (String) -> Unit

Returns a function to show a toast message.

expect fun rememberShowToast(): suspend (String) -> Unit

Returns a function to show a toast message.

actual fun rememberShowToast(): suspend (String) -> Unit

JVM stub — toast messages are logged instead.

Link copied to clipboard
actual fun rememberShowToastResource(): suspend (StringResource) -> Unit

Returns a function to show a toast message from a string resource.

expect fun rememberShowToastResource(): suspend (StringResource) -> Unit

Returns a function to show a toast message from a string resource.

actual fun rememberShowToastResource(): suspend (StringResource) -> Unit

JVM stub — toast messages are logged instead.

Link copied to clipboard
actual fun SetScreenBrightness(brightness: Float)

A Composable that sets the screen brightness while it is in the composition.

expect fun SetScreenBrightness(brightness: Float)

A Composable that sets the screen brightness while it is in the composition.

actual fun SetScreenBrightness(brightness: Float)

JVM no-op — screen brightness control is not available on Desktop.

Link copied to clipboard
suspend fun Context.showToast(text: String)
suspend fun Context.showToast(stringResource: StringResource, vararg formatArgs: Any)
Link copied to clipboard
inline fun Modifier.thenIf(precondition: Boolean, action: Modifier.() -> Modifier): Modifier

Conditionally applies the action to the receiver Modifier if precondition is true. Otherwise, returns the receiver unchanged.

Link copied to clipboard
Link copied to clipboard
fun MeshPacket.toPosition(): Position?