Inspired by article How to Handle Multiple Git Accounts
Work with multiple SSH keys for authorization and commit signing.
ssh-keygen -t ed25519 -C "firstname@work-email.com"
blueprint: | |
name: Motion-activated Light with condition | |
description: Turn on a light when motion is detected and condition met. | |
domain: automation | |
source_url: https://gist.githubusercontent.com/radzio/19992a1bd42392db265d79168e3c99d3/raw/9613351b5943f16daf0b39b881bcdf7c7463a7bb/motion-activated-light-condition.yaml | |
author: Home Assistant | |
input: | |
motion_entity: | |
name: Motion Sensor | |
selector: |
Inspired by article How to Handle Multiple Git Accounts
Work with multiple SSH keys for authorization and commit signing.
ssh-keygen -t ed25519 -C "firstname@work-email.com"
class LiveEvent<T> : MediatorLiveData<T>() { | |
private val observers = ConcurrentHashMap<LifecycleOwner, MutableSet<ObserverWrapper<T>>>() | |
@MainThread | |
override fun observe(owner: LifecycleOwner, observer: Observer<T>) { | |
val wrapper = ObserverWrapper(observer) | |
val set = observers[owner] | |
set?.apply { | |
add(wrapper) |
git fetch -p && for branch in `git branch -vv | grep ': gone]' | awk '{print $1}'`; do git branch -D $branch; done |
public static <T> Observable<T> toObservable(@NonNull final ObservableField<T> observableField) { | |
return Observable.create(new Observable.OnSubscribe<T>() { | |
@Override | |
public void call(final Subscriber<? super T> subscriber) { | |
if (!subscriber.isUnsubscribed()) { | |
subscriber.onNext(observableField.get()); | |
} | |
final OnPropertyChangedCallback callback = new OnPropertyChangedCallback() { |
public class MainViewModelTests { | |
@Test | |
public void mainViewModel_firstName_lastName_helloButtonEnabledSetToTrue() throws Exception { | |
MainViewModel mainViewModel = new MainViewModel(); | |
assertFalse(mainViewModel.helloButtonEnabled.get()); | |
mainViewModel.firstName.set("a"); | |
mainViewModel.lastName.set("b"); |
public static class MainViewModel { | |
public ObservableField<String> firstName = new ObservableField<>(); | |
public ObservableField<String> lastName = new ObservableField<>(); | |
public ObservableField<String> helloText = new ObservableField<>(); | |
public ObservableBoolean helloButtonEnabled = new ObservableBoolean(false); | |
public MainViewModel() { | |
Observable.combineLatest(toObservable(firstName), toObservable(lastName), (firstName, lastName) -> StringUtils.isNotNullOrEmpty(firstName) && StringUtils.isNotNullOrEmpty(lastName)) |