Appairage du téléphone, en-têtes de licence (2.1.0)
Recopier un jeton de trente-trois caractères sur un clavier tactile n'était pas un réglage, c'était une corvée. On ouvre désormais une fenêtre depuis le serveur, on appuie sur Appairer côté téléphone, et c'est fait. Le jeton n'est pas pour autant distribué : ouvrir la fenêtre l'exige déjà, elle dure deux minutes, se referme dès qu'un appareil s'est servi, et ne répond qu'à une adresse privée. Le champ de saisie reste là pour qui préfère le coller. Les cinquante fichiers de code portent en outre leur notice de licence, comme la GPL le recommande. Elle est en français, comme le reste ; le texte qui fait foi demeure celui de LICENSE, non traduit.
This commit is contained in:
1 parent
b3ddc2117b
commit
51b60cda70
53 files changed
+717
-4
No files matched your search
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely
|
||||
|
||||
import android.Manifest
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely
|
||||
|
||||
import android.app.Application
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.library
|
||||
|
||||
import fr.tuxgyver.noxely.model.MediaEntry
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.library
|
||||
|
||||
import android.content.Context
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.library
|
||||
|
||||
import fr.tuxgyver.noxely.model.MediaEntry
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.library
|
||||
|
||||
import android.content.ContentUris
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.library
|
||||
|
||||
import android.content.Context
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.model
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.model
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.offline
|
||||
|
||||
import android.content.Context
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.offline
|
||||
|
||||
import android.app.Notification
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.offline
|
||||
|
||||
import android.content.Context
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.playback
|
||||
|
||||
import androidx.core.net.toUri
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.playback
|
||||
|
||||
import android.app.PendingIntent
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.playback
|
||||
|
||||
import android.content.ComponentName
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.radio
|
||||
|
||||
import android.content.ContentValues
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.sources
|
||||
|
||||
import java.net.HttpURLConnection
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.sync
|
||||
|
||||
import android.content.Context
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.sync
|
||||
|
||||
import android.content.Context
|
||||
@@ -44,6 +56,41 @@ class SyncClient(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère le jeton auprès du serveur, pendant sa fenêtre d'appairage.
|
||||
*
|
||||
* Le téléphone ne peut pas deviner un jeton — c'est ce qu'il protège. Il peut en revanche le
|
||||
* recevoir, à condition que quelqu'un ait ouvert la fenêtre depuis l'interface du serveur, et
|
||||
* que la demande vienne du réseau local.
|
||||
*/
|
||||
suspend fun pair(baseUrl: String): Result<String> = withContext(Dispatchers.IO) {
|
||||
runCatching {
|
||||
val base = baseUrl.trim().trimEnd('/')
|
||||
val connection = openConnection("$base/api/pair", readTimeoutMs = 20_000).apply {
|
||||
requestMethod = "POST"
|
||||
doOutput = true
|
||||
outputStream.close()
|
||||
}
|
||||
val body = try {
|
||||
when (connection.responseCode) {
|
||||
403 -> throw IllegalStateException(
|
||||
connection.errorStream?.bufferedReader()?.readText()
|
||||
?.let { json.parseToJsonElement(it).jsonObject.text("detail") }
|
||||
?: "Aucun appairage en cours sur le serveur"
|
||||
)
|
||||
in 200..299 -> connection.inputStream.bufferedReader().readText()
|
||||
else -> throw IllegalStateException("Le serveur a répondu ${connection.responseCode}")
|
||||
}
|
||||
} finally {
|
||||
connection.disconnect()
|
||||
}
|
||||
val payload = json.parseToJsonElement(body).jsonObject
|
||||
val token = payload.text("token") ?: throw IllegalStateException("Réponse sans jeton")
|
||||
settings.update { it.copy(baseUrl = base, token = token) }
|
||||
"${payload.text("name")} ${payload.text("version")}"
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun sync(): SyncResult = withContext(Dispatchers.IO) {
|
||||
val config = settings.config.value
|
||||
if (!config.isConfigured) return@withContext SyncResult(0, 0, "Serveur non configuré")
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.sync
|
||||
|
||||
import android.content.Context
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui
|
||||
|
||||
import androidx.activity.compose.BackHandler
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.about
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.about
|
||||
|
||||
import fr.tuxgyver.noxely.BuildConfig
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.about
|
||||
|
||||
import android.content.Context
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.components
|
||||
|
||||
import android.graphics.Bitmap
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.components
|
||||
|
||||
import java.util.Locale
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.components
|
||||
|
||||
import androidx.compose.animation.animateColorAsState
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.library
|
||||
|
||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.offline
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.player
|
||||
|
||||
import androidx.compose.foundation.basicMarquee
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.player
|
||||
|
||||
import androidx.annotation.OptIn
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.playlists
|
||||
|
||||
import androidx.compose.foundation.clickable
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.playlists
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.playlists
|
||||
|
||||
import androidx.compose.foundation.clickable
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.server
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
@@ -127,7 +139,7 @@ fun ServerScreen(
|
||||
OutlinedTextField(
|
||||
value = token,
|
||||
onValueChange = { token = it; probe = null },
|
||||
label = { Text("Jeton") },
|
||||
label = { Text("Jeton (rempli par l'appairage)") },
|
||||
singleLine = true,
|
||||
visualTransformation = PasswordVisualTransformation(),
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
@@ -135,6 +147,26 @@ fun ServerScreen(
|
||||
Spacer(Modifier.size(14.dp))
|
||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||
Button(
|
||||
enabled = !busy && url.isNotBlank(),
|
||||
onClick = {
|
||||
busy = true
|
||||
probe = null
|
||||
scope.launch {
|
||||
container.sync.pair(url).fold(
|
||||
onSuccess = { name ->
|
||||
token = container.serverSettings.config.value.token
|
||||
probe = "Connecté à $name — jeton reçu"
|
||||
},
|
||||
onFailure = { probe = it.message ?: "Appairage impossible" },
|
||||
)
|
||||
busy = false
|
||||
}
|
||||
},
|
||||
) { Text("Appairer") }
|
||||
|
||||
Spacer(Modifier.width(10.dp))
|
||||
|
||||
TextButton(
|
||||
enabled = !busy && url.isNotBlank() && token.isNotBlank(),
|
||||
onClick = {
|
||||
busy = true
|
||||
@@ -152,7 +184,7 @@ fun ServerScreen(
|
||||
busy = false
|
||||
}
|
||||
},
|
||||
) { Text("Tester et enregistrer") }
|
||||
) { Text("Tester") }
|
||||
|
||||
Spacer(Modifier.width(10.dp))
|
||||
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.sources
|
||||
|
||||
import androidx.compose.foundation.layout.Column
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.ui.theme
|
||||
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.update
|
||||
|
||||
import android.content.Context
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.update
|
||||
|
||||
import android.Manifest
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
/*
|
||||
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
|
||||
* Copyright © 2026 Johnny (tuxgyver)
|
||||
*
|
||||
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
|
||||
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
|
||||
* telle que publiée par la Free Software Foundation.
|
||||
*
|
||||
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
|
||||
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
|
||||
*/
|
||||
|
||||
package fr.tuxgyver.noxely.update
|
||||
|
||||
import android.content.Context
|
||||
|
||||
Reference in new issue
Block a user