Two copies for two jobs. rippr-src/ is a browsable git archive export of the tracked tree at 2f76983 - no build outputs, no local.properties, no nested .git - which is convenient to read in gitea but carries no history and will drift. rippr-full-history.bundle is the real backup: all 18 commits, verified as "records a complete history" and test-cloned before committing. This matters because ~/dojo/rippr has no git remote and otherwise exists only on one machine. rippr-src/SNAPSHOT.md explains the difference and how to restore. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
22 lines
703 B
Kotlin
22 lines
703 B
Kotlin
package com.rippr
|
|
|
|
import kotlinx.coroutines.flow.MutableStateFlow
|
|
import kotlinx.coroutines.flow.StateFlow
|
|
import kotlinx.coroutines.flow.asStateFlow
|
|
|
|
/**
|
|
* Last-seen upload failure, surfaced on the recording screen.
|
|
*
|
|
* Unlike recording state — which now lives in the database because it must survive
|
|
* process death — this is genuinely ephemeral. A stale error from a previous process
|
|
* would be misleading, so losing it on restart is the correct behaviour.
|
|
*/
|
|
object UploadStatus {
|
|
private val _lastError = MutableStateFlow<String?>(null)
|
|
val lastError: StateFlow<String?> = _lastError.asStateFlow()
|
|
|
|
fun setError(message: String?) {
|
|
_lastError.value = message
|
|
}
|
|
}
|