Skip to content

Instantly share code, notes, and snippets.

View GrzegorzDyrda's full-sized avatar

Grzegorz D. GrzegorzDyrda

  • Bydgoszcz, Poland
View GitHub Profile
@GrzegorzDyrda
GrzegorzDyrda / SendRequest.kt
Last active October 17, 2023 15:23
Kotlin fetch API
import java.net.HttpURLConnection
import java.net.URL
/**
* Sends an HTTP request to the given [url], using the given HTTP [method]. The request can also
* include custom [headers] and [body].
*
* Returns the [Response] object containing [statusCode][Response.statusCode],
* [headers][Response.headers] and [body][Response.body].
*/
/**
* Created by Grzegorz Dyrda on 2017-12-07
*/
import android.os.Handler
import android.os.Looper
private val mainHandler = Handler(Looper.getMainLooper())
fun postOnUiThread(action: () -> Unit) {

Functional Kotlin - przykłady programowania funkcyjnego w Kotlinie

by Grzegorz Dyrda (@grzegorzdyrda)


1. Funkcja zwracająca funkcję

Poniższa konstrukcja jest zupełnie poprawna:

@GrzegorzDyrda
GrzegorzDyrda / ObservableExtensions.md
Last active June 30, 2017 06:24
Pragmatic Observable extensions.

Observable Extensions - przydatne rozszerzenia do pracy z RxJava

by Grzegorz Dyrda


1. Współdzielenie strumieni

W RxJava wszystkie strumienie są domyślnie "zimne" - czyli każda nowa subskrypcja powoduje skutki uboczne w źródle. Niestety, takie podejście sprawdza się jedynie w prostych "książkowych" przypadkach. Na co dzień, kiedy tworzymy logikę biznesową za pomocą łączenia/kombinacji strumieni, właściwość ta jest strasznie upierdliwa.

//
// Poniżej masz wycinek z mojej apki Śpiewnik.
// Zwróć uwagę, że strumień `dialogItemSelected` jest wykorzystany wielokrotnie przez kolejne strumienie.
// Dlatego też jest użyty operator `share` - żeby kolejne subskrypcje nie triggerowały ponownie kodu z flatMapa.
// share() = publish().refCount()
//
val dialogItemSelected: Observable<Int> =
view.onLabelLongPress //Observable<LabelEntity>
.flatMap { label ->
@GrzegorzDyrda
GrzegorzDyrda / Application.java
Last active June 28, 2017 14:42
Static way to obtain Application instance in Android!
/**
* To make it work, just specify the fully-qualified name of this class as the "android:name"
* attribute in your AndroidManifest.xml's <application> tag.
*/
public class Application extends android.app.Application {
private static Application ourInstance;
/**
* This gets called by the Android OS when the process for your application/package is created.