The same pass the server had, on the Kotlin side: comments restating what the code says are gone, and the ones recording a measurement, a constraint or an incident are kept but cut to a few lines each. 6540 comment lines to 5674, and 920 lines off the app. Two doc comments had drifted onto the item above the one they describe -- `contextAfter`'s onto `sessionWorking` in Events.kt, and `UsageMonitor`'s equivalent on the server was fixed in the previous commit. Each is back on its own item, which is the only non-comment line this diff moves. The comments are reflowed to the column limit at their own indentation: several were written wide, and ktfmt re-wrapped them into lines holding a single orphan word. `/tmp` script, not kept -- ktfmt is idempotent over the result, which is the check. Left alone deliberately: this codebase's remaining comment density is high because the comments carry things the code cannot say -- what a null means, what a number was measured against, which bug a guard exists for. Of the 238 one-line doc comments in the app, five were pure restatement of the name and were removed; the rest each say something the signature does not. ktfmtFormat, compileDebugKotlin, lintDebug and testDebugUnitTest pass; cargo test (127), clippy --all-targets and fmt still clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
29 lines
1.1 KiB
Kotlin
29 lines
1.1 KiB
Kotlin
package com.example.aiapp
|
|
|
|
/**
|
|
* What a screen knows about something it had to fetch: still finding out, got it, or couldn't.
|
|
*
|
|
* Three states rather than a value alongside a nullable error, because "we couldn't find out" must
|
|
* not share a representation with "there is nothing" -- a failed fetch would otherwise render as an
|
|
* empty list, which is the one wrong answer that looks like a right one.
|
|
*
|
|
* [Loading] and [Error] carry no payload, so they are `LoadState<Nothing>` and this is covariant in
|
|
* [T]: one `LoadState.Loading` serves every screen.
|
|
*/
|
|
sealed class LoadState<out T> {
|
|
data object Loading : LoadState<Nothing>()
|
|
|
|
data class Loaded<out T>(val value: T) : LoadState<T>()
|
|
|
|
data class Error(val message: String) : LoadState<Nothing>()
|
|
|
|
companion object {
|
|
/**
|
|
* The failure a fetch produces. Api.kt writes its messages to be read on this screen, so
|
|
* this passes one through rather than replacing it; the fallback covers only a throwable
|
|
* with no message at all, which [ApiException] never is.
|
|
*/
|
|
fun failed(e: ApiException): Error = Error(e.message ?: "Unknown error")
|
|
}
|
|
}
|