Skip to content

Instantly share code, notes, and snippets.

View fluxtah's full-sized avatar

Ian Warwick fluxtah

  • Just Eat
  • London
View GitHub Profile
if (cardUuid != null && cardUuid.isNotEmpty()) {
observe({ repository.getCard(cardUuid) }) {
state.card = it
state.loadingState = LoadingState.Loaded
}
}
when (val element = state.selectedElement) {
null -> {
SurfacePropertyControls(state.card.upSide)
}
else -> {
ElementControls(element)
}
}
@Model
data class CardDesignerState(
var loadingState: LoadingState = LoadingState.Loaded,
var card: MemoryCard = MemoryCard(),
var selectedElement: MemoryCardElement? = null,
var editElement: MemoryCardElement? = null,
var layersDropDownOpen: Boolean = false
)
@Composable
fun CardDesignerScreen(repository: MemoryCardRepository = get(), cardUuid: String? = null) {
val state = remember { CardDesignerState() }
if (cardUuid != null && cardUuid.isNotEmpty()) {
observe({ repository.getCard(cardUuid) }) {
state.card = it
state.loadingState = LoadingState.Loaded
}
}
addRecyclerView(
view = { inflater, parent ->
inflater.inflate(R.layout.simple_carousel, parent, false)
},
data = PaginatedLiveData<String> {
hasMore = { loaded.size < 100 }
nextPage = {
delay(2000)
listOf("Hello")
}
val data = PaginatedLiveData<String> {
hasMore = { loaded.size < 100 }
nextPage = {
listOf("Hello")
}
}
class InfiniteHelloJubakoActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_jubako_recycler)
recyclerView.withJubako(this).load(HelloAssembler())
}
class HelloAssembler : SimpleJubakoAssembler() {
var counter = 0
// Set page size to 1 so we can see it loading (descriptions are delayed by 500ms)
recyclerView.withJubako(this, pageSize(1)).load {
(0 until 100).forEach { i ->
addRecyclerView(
//
// Inflate a view for our carousel
//
view = { inflater, parent ->
inflater.inflate(R.layout.simple_carousel, parent, false)
},
companion object {
fun getNumbersEnglish(): LiveData<List<String>> {
return object : LiveData<List<String>>() {
override fun onActive() {
GlobalScope.launch(Dispatchers.IO) {
delay(500)
postValue(listOf("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight"))
}
}
}
class SimpleCarouselsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_jubako_recycler)
// Set page size to 1 so we can see it loading (descriptions are delayed by 500ms)
recyclerView.withJubako(this, pageSize(1)).load {
(0 until 100).forEach { i ->
addRecyclerView(