⎇ f01b7a1aa91e314295debf67c22ce5803495b2de
launcher/src/main/java/com/rizoma/orbita/model/AppNode.kt
Historia
crudo
Órbita: núcleo vivo, ronda sin saltos, orden de búsqueda y marca gioser.net
1package com.rizoma.orbita.model
2
3import androidx.compose.ui.graphics.ImageBitmap
4
5/**
6 * Un nodo del rizoma: una app lanzable con su calor de uso.
7 * [score] es el peso orbital — más alto = órbita más interna.
8 * [firstInstallTime] (epoch ms) detecta apps recién instaladas ("nuevas").
9 * [hiddenAt] (epoch ms) marca cuándo se expulsó del átomo, para que las
10 * expulsadas se vayan calmando con el tiempo hasta quedar desterradas.
11 * [penalty] es el lastre de "alejar": resta calor a la hora de repartir órbitas.
12 */
13data class AppNode(
14 val packageName: String,
15 val activityName: String,
16 val label: String,
17 val icon: ImageBitmap,
18 val score: Float = 0f,
19 val pinned: Boolean = false,
20 val penalty: Int = 0,
21 val hidden: Boolean = false,
22 val firstInstallTime: Long = 0L,
23 val hiddenAt: Long = 0L,
24) {
25 val key: String get() = "$packageName/$activityName"
26}