Skip to content

Instantly share code, notes, and snippets.

View monday8am's full-sized avatar
🙃
meehh

Angel Anton monday8am

🙃
meehh
View GitHub Profile
@monday8am
monday8am / navigation.kt
Created October 10, 2024 10:33
Navigation example
// Define an interface for navigation keys
interface NavigationKey : Parcelable
// Example implementation for a specific screen
@Parcelize
data class ProfileKey(val userId: String) : NavigationKey
// Navigation manager class
class Navigator(private val context: Context) {
// Define an interface for navigation keys
interface NavigationKey : Parcelable
// Example implementation for a specific screen
@Parcelize
data class ProfileKey(val userId: String) : NavigationKey
// Navigation manager class
class Navigator(private val context: Context) {
@monday8am
monday8am / RepoResult.kt
Last active June 21, 2022 12:08
RepoResult
/* Different solutions for future RepoResult (?) object! */
/*
* James!
*/
sealed interface ResultReason
@monday8am
monday8am / result_deserialization.kt
Last active February 17, 2021 20:34
Result deserialization
override fun deserialize(json: JsonElement?, typeOfT: Type?, context: JsonDeserializationContext?): Result<*, *>? {
return when {
// Is it a JsonObject? Bingo!
json?.isJsonObject == true -> {
// Let's try to extract the type in order
// to deserialize this object
val parameterizedType = typeOfT as ParameterizedType
// Returns an Ok with the value deserialized
@monday8am
monday8am / fastlane_beta.ruby
Last active November 21, 2019 03:08
Fastlane Beta
desc ""
lane :beta do |lane|
# ensure you are in master branch
ensure_git_branch
# ensure that master branch is clean
ensure_git_status_clean
# check the semantic parameter entered
@monday8am
monday8am / combineReducers.kt
Created March 31, 2019 14:59
CombineReducer method in Kotlin
//
// Reducer interface definition
//
typealias Reducer<ReducerStateType> = (action: Action, state: ReducerStateType?) -> ReducerStateType
//
// Combine reducers method
//
fun<T: StateType> combineReducers(vararg reducers: Reducer<T>): Reducer<T> {
return { action, state ->
@monday8am
monday8am / create_signed_app.ruby
Created January 13, 2019 19:32
Create signed Android app. Fastlane + Gradle
desc "Create a signed version of the app"
lane :signed_apk do
# get version and build number from git
# https://blog.uncommon.is/using-git-to-generate-versionname-and-versioncode-for-android-apps-aaa9fc2c96af
versionName = sh("git describe --dirty").gsub(/\s+/, "")
# +520 to sync version codes with the previous app.
versionCode = sh("git rev-list --first-parent --count origin/master").gsub(/\s+/, "").to_i + 520
keyPath ="#{sh("pwd").chomp}/keystore.jks"
@monday8am
monday8am / RxCBCentralManagerExample.swift
Last active January 7, 2019 13:27
Example of how to use the RxCBCentralManager utility
// Creates the Rx version of the API passing the same parameters as the system version
let centralManager: RxCBCentralManager = RxCBCentralManager(queue: DispatchQueue.main, options: nil)
// Creates a Rx pipe using the published methods
centralManager.scanForPeripherals(withServices: [requiredServiceUIDD], options: nil)
.filter { (peripheral: CBPeripheral) -> Bool in
if let name = peripheral.name {
return name.contains("peripheralName")
}
return false
@monday8am
monday8am / RxCBCentralManager.swift
Last active January 7, 2019 13:25
Rx implementation for CBCentralManager API
/**
Lightweight Rx wrapper to CBCentralManager
to hide all implementation details.
*/
public class RxCBCentralManager {
// system API manager
private let centralManager: CBCentralManager
// internal delegate
private let internalDelegate = InternalDelegate()
private var lastConnectedDevice: CBPeripheral?
@monday8am
monday8am / action_creator.swift
Last active October 10, 2018 20:34
Simple action creator in Swift
// Action creator definition
func fetchAppsFromStore(state: State, store: Store<State>) -> Action? {
let request = AppStoreRequests.apps(showDevelopment: state.settingsState.isDevelopmentMode)
let task = JsonRequestTask<[AppId]>(dispatcher: dispatcher)
// Async task call
task.perform(request)
.subscribe(onNext: { result in