Skip to content

Instantly share code, notes, and snippets.

@elyesmansour
elyesmansour / NonRecomposingSizeModifiers.kt
Created March 11, 2025 22:55
Jetpack Compose size modifiers that skip recomposition
package com.elyesmsr.sizemodifier
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.layout
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.DpSize
import androidx.compose.ui.unit.constrain
@JakeSteam
JakeSteam / MyFragment.kt
Last active January 9, 2025 11:28
Remotely configurable in-app Play Store review prompt in Kotlin
class MyFragment {
val navToBookings: () -> Unit = {
findNavController().navigate(MyFragmentDirections.toBookings())
}
fun eventHandler(event: TicketConfirmationEvents) {
when (event) {
is TicketConfirmationEvents.OnLookAtMyTicket -> {
viewModel.onLookAtMyTicket(navToBookings)
@pablisco
pablisco / Behaviour.md
Last active February 1, 2024 15:49
Query Behaviour

Behaviour

One of the things we tend to do in OOP is to create types to define behaviours. However, types are best used to describe data, i.e. objects. We've had to use types in the past because of language limitations.

This is a small description of how we can use the power of functions to define code in a way that is easier to read, maintain and test.

Consumer Component

@hector6872
hector6872 / Obsidian-internal-linker.kts
Last active November 29, 2024 11:57
Script for auto-creating [[internal links]] for Obsidian 🔗 https://forum.obsidian.md/t/script-for-auto-creating-internal-links/67245
#!/usr/bin/env kscript
/*
* Copyright (c) 2024. Héctor de Isidro - hector6872
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
@hector6872
hector6872 / SwipeableSnackbarHost.kt
Last active November 29, 2024 12:19
Jetpack Compose Snackbar's swipe-to-dismiss behavior
/*
* Copyright (c) 2023. Héctor de Isidro - hector6872
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
@hector6872
hector6872 / DragDropLazyColum.kt
Last active November 29, 2024 12:20
LazyColum Drag&Drop implementation in Jetpack Compose
/*
* Copyright (c) 2023. Héctor de Isidro - hector6872
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software

Pull Requests became popular for two reasons:

  • Asynchronous communication. Developers can review and respond at any time, allowing them to continue development without interruption and review PRs when they come to a natural pause in their flow.
  • Quality Assurance. Reviewing and testing code before it hits the target branch ensures that the target branch stays clean.

How to Pull Request:

  • Authoring
    • Keep them small: it's very tempting to rewrite, refactor, boy scout and reformat the code as you develop but in general, it's best not to do it all at once.
    • Perform a Self-Review: although it's very tempting to just dump your changes in a PR and let other people find the mistakes, create a draft PR and do a full review yourself. You can also use this “self-review” to point things out to your reviewers.
    • Create a meaningful title: keep the title short and meaningful and avoid titles generated from the b

"Pair programming is a conversation. You're always talking. You're always explaining. You're always trying to combine your knowledge." - Sarah Mei

@hector6872
hector6872 / Calendar.kt
Last active April 4, 2023 18:02 — forked from bagus2x/Calendar.kt
Jetpack Compose Simple calendar
@Composable
private fun Calendar(
modifier: Modifier = Modifier,
date: LocalDate
) {
val firstDate = with(date) {
val firstOfMonth = withDayOfMonth(1)
val firstDayOfFirstWeek = firstOfMonth.dayOfWeek.value
firstOfMonth.minusDays(firstDayOfFirstWeek.toLong())
}
@hector6872
hector6872 / ComposeStore.kt
Last active November 29, 2024 12:17
Zustand 🐻 implementation for Kotlin :) https://github.com/pmndrs/zustand
/*
* Copyright (c) 2022. Héctor de Isidro - hector6872
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software