Skip to content

Instantly share code, notes, and snippets.

@sembozdemir
sembozdemir / .gitignore
Last active September 15, 2023 15:32
Fix for Robolectric and Bitrise issue
# ignore Robolectric jar dependencies
#Robolectric jars for unit tests
/robolectric/*.jar
@sembozdemir
sembozdemir / DiffUtilExt.kt
Created December 8, 2021 21:30
Kotlin DiffUtil extensions
fun <T> RecyclerView.Adapter<*>.autoNotify(
oldList: List<T>,
newList: List<T>,
compare: (old: T, new: T) -> Boolean
) {
val diff = DiffUtil.calculateDiff(object : DiffUtil.Callback() {
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
return compare(oldList[oldItemPosition], newList[newItemPosition])
}
@sembozdemir
sembozdemir / zsh-git-cheatsheet.md
Last active December 25, 2018 08:41
My ZSH git aliases that I use mostly
  • gst : git status

  • gc : git commit -v

  • gc! : git commit -v --amend

  • gcn! : git commit -v --no-edit --amend

  • ggu <branch> : git pull --rebase origin <branch>

@sembozdemir
sembozdemir / .zshrc
Last active December 6, 2018 07:58
Gerrit push aliases for ZSH
# 1- Enable git plugin -> plugins=( git )
# 2- Add these lines in your .zshrc file
# 3- Edit your reviewers in gerrit_reviewers() function below
# 4- Run `gpr <branch_name>` to push, `gpr! <branch_name>` to push as Draft
# Aliases For gerrit
function gerrit_reviewers() {
echo "%r=a@a.com,r=b@b.com,r=c@c.com"
}
@sembozdemir
sembozdemir / logException.kt
Created April 25, 2018 15:00
logException
inline fun <T : Exception> logException(exception: () -> T) {
// check if you have any precondition to report exception,
// for instance, is it in production?
if (isProductionBlaBla()) {
try {
// exception() will return a subclass of exception, so throw it
throw exception()
} catch (e: Exception) {
// catch exception and report it
CrashReportUtil.report(e)
@sembozdemir
sembozdemir / PlayerActivity.java
Created April 11, 2018 19:56 — forked from ponnamkarthik/PlayerActivity.java
RTMP Player using Exo Media Player Library
//initiate Player
//Create a default TrackSelector
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
//Create the player
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
SimpleExoPlayerView simpleExoPlayerView = (SimpleExoPlayerView) findViewById(R.id.simple_player);
simpleExoPlayerView.setPlayer(player);
@sembozdemir
sembozdemir / CustomTabs.kt
Created December 19, 2017 12:03
CustomTabs (android.support.customtabs) extensions for Kotlin
import android.app.Fragment
import android.content.Context
import android.net.Uri
import android.support.customtabs.CustomTabsIntent
import android.support.v4.content.ContextCompat
import android.support.v4.app.Fragment as SupportFragment
fun Context.customTab(url: String, init: (CustomTabsIntent.Builder.() -> Unit)? = null) {
val customTabBuilder = CustomTabsIntent.Builder()
@sembozdemir
sembozdemir / Picassos.kt
Last active November 26, 2017 12:58
Picassos.kt
import android.widget.ImageView
fun com.squareup.picasso.RequestCreator.into(target: ImageView, func: __Callback.() -> Unit) {
val callback = __Callback()
callback.func()
into(target, callback)
}
class __Callback : com.squareup.picasso.Callback {
@file:JvmName("PermissionExtensions")
import android.app.Activity
import android.content.pm.PackageManager
import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
/**
* Invoke [onGranted] if permission is granted. Otherwise, request permission.
*
@sembozdemir
sembozdemir / ViewExtensions.kt
Created November 15, 2016 14:28
ToDoKotlin - ViewExtensions.kt (only defaultDivider())
fun _RecyclerView.defaultDivider() {
addItemDecoration(DividerItemDecoration(context, LinearLayout.VERTICAL))
}