discovery-media-player 0.1.92 → 0.1.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/server/schema.js +12 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "discovery-media-player",
3
- "version": "0.1.92",
3
+ "version": "0.1.93",
4
4
  "description": "Self-hosted document viewer: per-recipient tracked links, reading analytics, live presentation. The core knows nothing about the application hosting it — everything it borrows arrives through an injected context.",
5
5
  "keywords": [
6
6
  "pdf-viewer",
package/server/schema.js CHANGED
@@ -324,11 +324,19 @@ async function ajouterSansRang(etat) {
324
324
  const r = reponses.get("doc_presentation_messages.mod_seq");
325
325
  if (!r || !r.present) return;
326
326
  try {
327
- const scellees = await PLAYER.db.request("doc_presentations?active=eq.false&control_hash=is.null&select=slug");
327
+ // ⚠️ `selectAll`, JAMAIS un `limit` — ET C'ÉTAIT LE DÉFAUT DE LA PREMIÈRE VERSION (relevé 2e hôte).
328
+ // Un compteur borné qui ne dit pas qu'il est borné redevient le nombre ambigu qu'il remplaçait, et
329
+ // une liste tronquée a EXACTEMENT la forme d'une liste complète. Les deux bornes mentaient en sens
330
+ // OPPOSÉS : une liste de nuls coupée (l'ordre physique groupe par présentation) pouvait ne voir que
331
+ // des scellées → total = dontScellees → faux « tout va bien » sur une base où des non-scellées ont
332
+ // été oubliées ; et la liste de scellées, sans `limit`, tombait sous le plafond IMPLICITE de
333
+ // PostgREST (db-max-rows) → setScellees incomplet → dontScellees sous-compté → fausse ALERTE
334
+ // permanente sur un hôte à >1000 archives. `selectAll` pagine jusqu'au bout : le transport reste
335
+ // borné à la taille RÉELLE du problème (zéro sur un hôte sain), et le compteur ne peut plus mentir
336
+ // par troncature. `is.null`/`eq` restent de la syntaxe portable.
337
+ const scellees = await PLAYER.db.selectAll("doc_presentations?active=eq.false&control_hash=is.null&select=slug");
328
338
  const setScellees = new Set((Array.isArray(scellees) ? scellees : []).map((p) => p.slug));
329
- // `limit` borne un diagnostic sur une base gravement cassée : au-delà, la divergence suffit déjà à
330
- // alerter, le compte exact n'ajoute rien. `is.null` et `eq` restent de la syntaxe portable.
331
- const nuls = await PLAYER.db.request("doc_presentation_messages?mod_seq=is.null&select=slug&limit=1000");
339
+ const nuls = await PLAYER.db.selectAll("doc_presentation_messages?mod_seq=is.null&select=slug");
332
340
  const liste = Array.isArray(nuls) ? nuls : [];
333
341
  etat.sansRang = { total: liste.length, dontScellees: liste.filter((m) => setScellees.has(m.slug)).length };
334
342
  } catch { /* best-effort : un compteur absent vaut mieux qu'une carte en échec */ }