Skip to content

Instantly share code, notes, and snippets.

@premacck
premacck / BlurBottomSheet.kt
Last active Sep 21, 2021
Bottom sheet dialog with dim and blur background, and curved corners. works with BlurKit (https://github.com/CameraKit/blurkit-android) and Anko (https://github.com/Kotlin/anko)
View BlurBottomSheet.kt
//TODO: add package info here
import android.os.Bundle
import android.annotation.SuppressLint
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.accessibility.AccessibilityNodeInfo
import android.widget.FrameLayout
import androidx.annotation.LayoutRes
@premacck
premacck / Permissions.kt
Created Feb 2, 2021
Util functions for Splitties permissions
View Permissions.kt
import android.Manifest
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.cancel
import kotlinx.coroutines.suspendCancellableCoroutine
import splitties.alertdialog.appcompat.alertDialog
import splitties.alertdialog.appcompat.coroutines.DialogButton
import splitties.alertdialog.appcompat.coroutines.showAndAwait
import splitties.alertdialog.appcompat.messageResource
@premacck
premacck / setup-emulator-auth.js
Created Jan 28, 2021
Script to add users from firestore emulator data to auth emulator
View setup-emulator-auth.js
const admin = require('firebase-admin');
const readline = require('readline');
// Use your project's admin service account JSON, or you can hardcode your project ID in admin.initializeApp below
const serviceAccount = require('./your-project-firebase-adminsdk-abcde-1234567890.json');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
@premacck
premacck / android-release-pipeline.yml
Last active Jan 16, 2021
Release workflow to run on push to `main` branch, which builds release & debug apps and uploads both to firebase app distribution, and notify Teams channel
View android-release-pipeline.yml
name: Push on main branch
on:
push:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
@premacck
premacck / Constants.kt
Last active May 15, 2020
StateAwareEpoxyController for state aware loading of views in RecyclerViews using Epoxy library by AirBnb (https://github.com/airbnb/epoxy)
View Constants.kt
const val STATE_LOADING = 0
const val STATE_SUCCESS = 1
const val STATE_EMPTY = 2
const val STATE_ERROR = 3
@Retention @IntDef(STATE_LOADING, STATE_SUCCESS, STATE_EMPTY, STATE_ERROR) annotation class LoadState
View TooltipExt.kt
/**
* Function to start circular tooltip queue form a fragment
*/
fun Fragment.roundTooltipOf(tooltipItem: TooltipItem, anchor: View?) = if (anchor != null) {
activity?.let { TooltipHandler.prepare(it, tooltipItem, anchor, false) }
} else null
/**
* Function to start rounded rectangular tooltip queue form a fragment
*/
@premacck
premacck / DynamicColorProgress.java
Last active Apr 21, 2019
Android - Circular indeterminate ProgressBar smoothly fading between various material colors
View DynamicColorProgress.java
// TODO: put package information here
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.util.AttributeSet;
import android.widget.ProgressBar;
@premacck
premacck / ShimmerRelativeLayout.java
Last active Apr 21, 2019
Animating, customizable Shimmer layout to be used as a substitute for RelativeLayout
View ShimmerRelativeLayout.java
// TODO: put package information here
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
@premacck
premacck / ShimmerLinearLayout.java
Last active Apr 1, 2019
Animating, customizable Shimmer layout to be used as a substitute for LinearLayout
View ShimmerLinearLayout.java
// TODO: put package information here
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
@premacck
premacck / BlurAlertDialog.kt
Last active Mar 29, 2019
AlertDialog like DoalogFragment with blur background. Works with BlurKit (https://github.com/CameraKit/blurkit-android) and Anko (https://github.com/Kotlin/anko)
View BlurAlertDialog.kt
// TODO: add package info here
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.accessibility.AccessibilityNodeInfo
import androidx.annotation.StringRes
import androidx.annotation.StyleRes