Skip to content

Instantly share code, notes, and snippets.

@wesleybliss
wesleybliss / copy_to_clipboard.js
Created December 17, 2020 15:10
Copy to clipboard #js
export const copyToClipboard = async (text) => {
if (!navigator.clipboard)
// Clipboard API not available
throw new Error('Your browser doesn\'t allow clipboard access')
try {
await navigator.clipboard.writeText(text)
} catch (e) {
log.error('Failed to copy', e)
@wesleybliss
wesleybliss / omit.js
Created December 17, 2020 15:09
Omit #js
export const omit = (obj, fn) => Object.keys(obj)
.filter(it => fn(obj[it]))
.reduce((acc, it) => ({ ...acc, [it]: obj[it] }), {})
@wesleybliss
wesleybliss / is_numeric.js
Created December 17, 2020 15:04
isNumeric #js
export const isNumeric = n =>
!(isNaN(n)) && (typeof n !== 'object') &&
(n != Number.POSITIVE_INFINITY) && (n != Number.NEGATIVE_INFINITY)
@wesleybliss
wesleybliss / select_text.js
Created December 17, 2020 15:01
Select text #js
export const selectText = el => {
if (!window.getSelection || !document.createRange) return
const sel = window.getSelection()
if (sel.toString() == '')
window.setTimeout(() => {
const range = document.createRange()
range.selectNodeContents(el)
sel.removeAllRanges()
sel.addRange(range)
}, 1)
@wesleybliss
wesleybliss / simple_observer.kt
Created March 4, 2020 16:42
Simple Kotlin Observer Pattern
interface Observer<T> {
fun onChange(newValue: T?)
}
class Observable<T>(initialValue: T? = null) {
// List ov observers watching this value for changes
private val observers = mutableListOf<Observer<T>>()
// The real value of this observer
@wesleybliss
wesleybliss / IQueue.kt
Created February 28, 2020 22:42
IQueue - simple queue interface
import java.util.concurrent.ConcurrentLinkedQueue
interface IQueue {
val tasks: ConcurrentLinkedQueue<String>
val hasTasks: Boolean
var isRunning: Boolean
fun addTask(url: String)
@wesleybliss
wesleybliss / BrotherPrinterTriageNonsense1.kt
Created December 2, 2019 20:17
Diagnosing some Brother printer SDK search weirdness
fun publicGetUniqueDevSet() : Vector<DevSet?>? {
val finder = DeviceFinder()
val uniqueDevSet: Vector<DevSet?> = Vector()
val devSets = if (Printer.getUserPrinterInfo() == null) {
finder.discoverDevice(false)
} else {
finder.discoverDevice(Printer.getUserPrinterInfo().enabledTethering)
}
@wesleybliss
wesleybliss / PersistedLiveData.kt
Created November 22, 2019 16:49
LiveData implementation that reads/writes it's values to SharedPreferences via Hawk
import android.content.SharedPreferences
import androidx.lifecycle.MutableLiveData
import androidx.preference.PreferenceManager
import com.orhanobut.hawk.Hawk
import com.splashthat.host.extensions.Plank
/**
* A [LiveData] implementation that reads and persists
* it's value using [SharedPreferences] via [Hawk]
*/
@wesleybliss
wesleybliss / git-prune
Last active January 12, 2022 16:55
Git Prune
#!/usr/bin/env node
const shell = require('shelljs')
const inquirer = require('inquirer')
const chalk = require('chalk')
/**
* Gets a list of Git branches
*
* @return {Array[String]}
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import com.splashthat.host.R
import com.splashthat.host.api.Identifiable
import com.splashthat.host.extensions.getColorDrawable