Skip to content

Instantly share code, notes, and snippets.

View Sottti's full-sized avatar
💡
"Success is simply a matter of luck. Ask any failure"

Pablo Costa Sottti

💡
"Success is simply a matter of luck. Ask any failure"
View GitHub Profile
@Sottti
Sottti / ListItem.kt
Last active February 3, 2025 09:57
One of the trickiest cases to write previews
@Composable
public fun ListItem(
modifier: Modifier = Modifier,
primaryText: String,
primaryTextStyle: ListItemPrimaryTextStyle = ListItemPrimaryTextStyle.Default,
primaryTextColor: ListItemPrimaryTextColor = ListItemPrimaryTextColor.OnSurfaceOrBackground,
primaryTextDecoration: TextDecoration? = null,
secondaryText: String? = null,
secondarySlot: @Composable (() -> Unit)? = null,
startIcon: ListItemStartIcon? = null,
@Sottti
Sottti / EditVehicleAvailabilityPreviewParameterProvider.kt
Last active February 3, 2025 09:50
Typical example of how you wrote previews
internal class EditVehicleAvailabilityPreviewParameterProvider :
PreviewParameterProvider<EditVehicleAvailabilityViewState> {
override val values: Sequence<EditVehicleAvailabilityViewState> = sequenceOf(loadedViewState())
}
internal fun loadedViewState(): EditVehicleAvailabilityViewState =
EditVehicleAvailabilityViewState(
isLoading = false,
content = EditVehicleAvailabilityContentState(
title = ResId(ContentStringsR.motor_edit_availability_title),
@Sottti
Sottti / EditVehicleAvailabilityUi.kt
Last active February 3, 2025 09:50
Typical example of how you wrote previews
@Composable
@LightDarkPreview
internal fun EditVehicleAvailabilityUi(
@PreviewParameter(EditVehicleAvailabilityPreviewParameterProvider::class)
state: EditVehicleAvailabilityViewState,
) {
...
}
public data class TextStyles(
val navigationTitle: TextStyle = Typography().h6.copy(
fontFamily = FontFamily.SansSerif,
fontWeight = FontWeight.W500,
fontStyle = FontStyle.Normal,
fontSize = 20.sp,
lineHeight = 22.sp,
letterSpacing = 0.26.sp,
),
(...)

Keybase proof

I hereby claim:

  • I am sottti on github.
  • I am sotti (https://keybase.io/sotti) on keybase.
  • I have a public key ASDmWjXUmY2czLkcqzDKDpMZGSk-xr9eh3H0Ix8TgNMIrgo

To claim this, I am signing this object:

sotti

Keybase proof

I hereby claim:

  • I am sottti on github.
  • I am sotti (https://keybase.io/sotti) on keybase.
  • I have a public key ASDmWjXUmY2czLkcqzDKDpMZGSk-xr9eh3H0Ix8TgNMIrgo

To claim this, I am signing this object:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="137dp"
android:viewportWidth="307"
android:viewportHeight="210">
<path
android:fillColor="@color/primary_muted_4"
android:pathData="M3.015,159.555c4.818,23.351 13.56,39.078 26.396,48.946l125.117,0.499 147.05,-0.499c5.535,-15.043 5.422,-34.709 5.422,-54.631 0,-71.565 -45.381,-221.37 -159.71,-119.39C96.256,79.998 -20.046,47.787 3.015,159.554z" />
<path
android:fillColor="@color/primary_muted_4"
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="132dp"
android:height="85dp"
android:viewportWidth="132"
android:viewportHeight="85">
<path
android:fillAlpha="0.03"
android:fillColor="@color/primary"
android:pathData="M122.498,84.523L18.361,85c-5.271,0.024 -9.564,-4.268 -9.588,-9.587l-0.259,-57.55c-0.024,-5.318 4.23,-9.65 9.502,-9.674l104.137,-0.476c5.272,-0.024 9.564,4.268 9.588,9.587L132,74.849c0.024,5.319 -4.23,9.65 -9.502,9.674z"
android:strokeAlpha="0.3" />
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="76dp"
android:viewportWidth="375"
android:viewportHeight="142">
<path
android:fillColor="@color/reni"
android:pathData="M140.407,117.271l-2.842,0.119c1.568,3.405 -0.686,2.409 -0.686,2.409 -3.557,-1.764 -2.09,-3.652 0.862,-5.488l-3.527,-0.469c-3.172,4.412 -4.198,1.801 -4.198,1.801 1.736,-5.19 3.887,-4.97 8.357,-4.281l-5.146,-1.14c-5.282,5.074 -5.837,2.738 -5.837,2.738 3.124,-8.143 8.457,-7.198 13.706,-4.938 -0.929,-3.519 -12.622,-11.07 -8.086,-11.259 2.929,-0.122 15.523,7.598 17.141,20.002 0.165,1.27 21.07,5.05 21.07,5.05l-4.629,8.967 -22.269,-7.195c-4.323,-1.483 -3.916,-6.316 -3.916,-6.316z" />
<path
android:fillColor="@color/primary_muted_5"
Articles:
- [Typesafe Error Handling in Kotlin](https://kotlin.christmas/2019/17)
- [Sealed Classes Instead of Exceptions in Kotlin](https://phauer.com/2019/sealed-classes-exceptions-kotlin/)
- [Kotlin’s Missing Type, Either](https://medium.com/@Robert_Chrzanow/kotlins-missing-type-either-51602db80fda)
Libraries
- https://github.com/michaelbull/kotlin-result
- https://github.com/kittinunf/Result
Discussions