Skip to content

Instantly share code, notes, and snippets.

View ildar2's full-sized avatar
💭
Code says what, comment says why

ildar2

💭
Code says what, comment says why
View GitHub Profile
@ildar2
ildar2 / CommandExecutor.kt
Last active April 20, 2023 13:39
CommandExecutor solution for request optimization
import java.util.LinkedList
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.atomic.AtomicInteger
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import androidx.lifecycle.ViewModel
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import org.koin.core.qualifier.named
import kotlin.coroutines.CoroutineContext
/**
* Base ViewModel class for MVVM
@ildar2
ildar2 / CommonButtonDisplay.kt
Created January 27, 2022 09:09
Common UI for DisplayDiffAdapter
/**
* Стандартная кнопка
*/
class CommonButtonDisplay(
val textRes: Int,
var enabled: Boolean = true,
val click: ((CommonButtonDisplay) -> Unit)? = null
) : DisplayDiffItem(R.layout.common_item_button, textRes.toString(), enabled.toString()) {
@ildar2
ildar2 / ModalDialog.kt
Created September 14, 2021 10:58
Модалка с dsl-билдером
/**
* Стандартное диалоговое окно по дизайну
*
* на нём есть:
* - иконка success
* - заголовок
* - описание
* - ссылка на сайт
* - кнопка Закрыть, либо Вернуться на главную, либо еще куда-то
@ildar2
ildar2 / CommonAdapter.kt
Created August 27, 2021 11:23
UI как список через DisplayDiffAdapter
//
// UI как список
//
// у нас есть единый лэйаут fragment_list_reusable.xml, который используется на 10 экранов
<androidx.constraintlayout.motion.widget.MotionLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
@ildar2
ildar2 / Localization.kt
Created August 27, 2021 10:31
Описание трёх подходов работы с локализацией
/**
Расскажу про три типа локализации:
- полностью с сервера
- нативная со статичной выгрузкой
- через StringResource
*/
//
//полностью с сервера
//
package infin.api.core.legal.entities.documents.demands.create
import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName
import infin.api.core.legal.entities.Translation
/**
* Конструктор поля в заявлениях
*/
@Keep
@ildar2
ildar2 / DisplayAdapter.kt
Created February 4, 2020 05:15
Android RecyclerView.Adapter for creating dynamic ui with lists of items, buttons, labels etc.
package clean.utils
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.extensions.LayoutContainer
/**
* Класс для работы со списками
package my.app.kz.ui.main.offers;
import android.graphics.drawable.PictureDrawable;
import android.os.AsyncTask;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.LruCache;
import android.view.LayoutInflater;
import android.view.ViewGroup;