gioser

sergio/humanoid

HTML 38Markdown 1TOML 10 Definitions

⎇ 84d4ac3a07474bf1bcd21ee43b913b75d8b32180 consola/src/main/java/com/rizoma/consola/push/Push.kt 31 lines · 1.1 KB History raw

consola: push en background vía UnifiedPush (ntfy) 84d4ac3a0 · Sergio ·

1package com.rizoma.consola.push
2
3import android.content.Context
4import com.rizoma.consola.data.GatewayClient
5import com.rizoma.consola.data.Settings
6import kotlinx.coroutines.flow.first
7import org.unifiedpush.android.connector.UnifiedPush
8
9/**
10 * Pegamento UnifiedPush: registra la app con el distribuidor (la app ntfy) y
11 * sincroniza el endpoint resultante con el gateway, que es quien empuja los
12 * eventos por ese endpoint cuando consola está cerrada.
13 */
14object Push {
15    /**
16     * Registra con un distribuidor UnifiedPush si hay alguno instalado. Si no
17     * (no hay app ntfy), no hace nada y consola cae al WS de eventos como
18     * respaldo. Idempotente: re-registrar re-dispara `onNewEndpoint`.
19     */
20    fun ensureRegistered(ctx: Context) {
21        val dists = runCatching { UnifiedPush.getDistributors(ctx) }.getOrDefault(emptyList())
22        if (dists.isEmpty()) return
23        UnifiedPush.saveDistributor(ctx, dists.first())
24        UnifiedPush.registerApp(ctx)
25    }
26
27    suspend fun sendEndpoint(ctx: Context, endpoint: String) {
28        val cfg = Settings(ctx).config.first()
29        GatewayClient(cfg).registerUp(endpoint)
30    }
31}