Skip to content

Instantly share code, notes, and snippets.

View svsq's full-sized avatar

Viacheslav Bilokur svsq

View GitHub Profile
@svsq
svsq / UseCase.kt
Created March 9, 2023 11:10
Base UseCase (aka interactor). In case to not using Timber just simply change it to standard Log
abstract class UseCase<Params, out Type> where Type: Any {
// dispatchers
private val UI = Dispatchers.Main
private val BG = Dispatchers.IO
// type for empty parameter
class None
// parameters
@svsq
svsq / NetworkResponse.kt
Created March 9, 2023 09:10
Example of sealed class for managing an API response
sealed class NetworkResponse<T>(
val data: T? = null,
val message: String? = null
) {
class Success<T>(data: T) : NetworkResponse<T>(data)
class Error<T>(message: String?, data: T? = null) : NetworkResponse<T>(data, message)
class Loading<T> : NetworkResponse<T>()
}
@svsq
svsq / Mapper.kt
Created March 8, 2023 10:45
Base abstract mapper
abstract class Mapper<F, T> {
abstract fun map(from: F): T
abstract fun reverse(to: T): F
fun map(fromList: List<F>): List<T> =
ArrayList<T>(fromList.size).apply {
fromList.forEach {
add(map(it))
}
@svsq
svsq / NumberExtensions.kt
Created November 25, 2022 08:21
Number extensions
// converts Dp to Pixels
val Number.toPixels get() = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
this.toFloat(),
Resources.getSystem().displayMetrics)
@svsq
svsq / FilterableListAdapter.kt
Created August 3, 2022 10:49
Filterable List Adapter
abstract class FilterableListAdapter<T, VH : RecyclerView.ViewHolder>(
diffCallback: DiffUtil.ItemCallback<T>
) : ListAdapter<T, VH>(diffCallback), Filterable {
private var originalList: List<T> = currentList.toList()
override fun getFilter(): Filter {
return object : Filter() {
override fun performFiltering(constraint: CharSequence?): FilterResults {
return FilterResults().apply {
package com.edenledger.fanvestor.utils
/*
* Copyright 2017 Google Inc.
*
* 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
*
@svsq
svsq / goods.py
Created March 28, 2021 10:39
Goods in Python
from Tovar import *
tovari = [
Tovar("Хлеб", 9, 20),
Tovar("Молоко", 3, 29),
Tovar("Чай", 6, 45),
Tovar("Кефир", 8, 37),
Tovar("Конфеты", 5, 120),
]