/* * This file is part of GNU Taler * (C) 2020 Taler Systems S.A. * * GNU Taler is free software; you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software * Foundation; either version 3, or (at your option) any later version. * * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * GNU Taler; see the file COPYING. If not, see */ package net.taler.common import androidx.lifecycle.LiveData import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.Observer class CombinedLiveData( source1: LiveData, source2: LiveData, private val combine: (data1: T?, data2: K?) -> S ) : MediatorLiveData() { private var data1: T? = null private var data2: K? = null init { super.addSource(source1) { t -> data1 = t value = combine(data1, data2) } super.addSource(source2) { k -> data2 = k value = combine(data1, data2) } } override fun addSource(source: LiveData, onChanged: Observer) { throw UnsupportedOperationException() } override fun removeSource(toRemote: LiveData) { throw UnsupportedOperationException() } }