Skip to content

Instantly share code, notes, and snippets.

View pavlospt's full-sized avatar
💻
Refactoring something somewhere

Pavlos-Petros Tournaris pavlospt

💻
Refactoring something somewhere
View GitHub Profile
FROM balenalib/raspberrypi3-openjdk:8-jdk
ENV APPLICATION_USER ktor
RUN useradd -ms /bin/bash $APPLICATION_USER
RUN mkdir /app
RUN chown -R $APPLICATION_USER /app
USER $APPLICATION_USER
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/a_container_id"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="52dp"
android:layout_marginEnd="16dp"
android:maxWidth="296dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
abstract class ViewBindingDiffUtilCallback<Item : ViewBindingAdapterItem> :
DiffUtil.ItemCallback<Item>()
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import androidx.viewbinding.ViewBinding
abstract class ViewBindingAdapter<Item : ViewBindingAdapterItem, VB : ViewBinding>(
diffCallback: ViewBindingDiffUtilCallback<Item>
) : ListAdapter<Item, ViewBindingViewHolder<Item, VB>>(diffCallback) {
override fun onBindViewHolder(holder: ViewBindingViewHolder<Item, VB>, position: Int) =
holder.bind(item = getItem(position))
import androidx.recyclerview.widget.RecyclerView
import androidx.viewbinding.ViewBinding
abstract class ViewBindingViewHolder<Item : ViewBindingAdapterItem, out VB : ViewBinding>(
protected val binding: VB
) : RecyclerView.ViewHolder(binding.root) {
abstract fun bind(item: Item)
open fun bind(item: Item, payloads: List<Any>) {
if (payloads.isEmpty()) {
bind(item = item)
interface ViewBindingAdapterItem {
val itemViewType: Int
}
private val client = HttpClient(OkHttp) {
install(JsonFeature) {
serializer = GsonSerializer()
}
install(HttpTimeout) {
requestTimeoutMillis = 30_000
}
install(Logging) {
logger = Logger.DEFAULT
@pavlospt
pavlospt / build.gradle.kts
Created July 20, 2019 17:48
Root build.gradle.kts
subprojects {
// Accessing the `PluginContainer` in order to use `whenPluginAdded` function
project.plugins.configure(project = project)
}
// Extension function on `PluginContainer`
fun PluginContainer.configure(project: Project) {
whenPluginAdded {
when (this) {
is AppPlugin -> {
@pavlospt
pavlospt / build.gradle.kts
Created July 20, 2019 17:37
New module build.gradle.kts
val compile_sdk_version: Int by rootProject
val min_sdk_version: Int by rootProject
val target_sdk_version: Int by rootProject
android {
compileSdkVersion(compile_sdk_version)
defaultConfig {
minSdkVersion(min_sdk_version)
targetSdkVersion(target_sdk_version)
}
ext.set("alwaysUpdateBuildId", false)
val alwaysUpdateBuildId by extra { false }
(this as ExtensionAware).extra["alwaysUpdateBuildId"] = false