nodebb-plugin-ezoic-infinite 1.7.40 → 1.7.42

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.
package/library.js CHANGED
@@ -12,7 +12,13 @@ const plugin = {};
12
12
  function normalizeExcludedGroups(value) {
13
13
  if (!value) return [];
14
14
  if (Array.isArray(value)) return value;
15
- return String(value).split(',').map(s => s.trim()).filter(Boolean);
15
+ // NodeBB stocke les settings multi-valeurs comme string JSON "[\"group1\",\"group2\"]"
16
+ const s = String(value).trim();
17
+ if (s.startsWith('[')) {
18
+ try { const parsed = JSON.parse(s); if (Array.isArray(parsed)) return parsed.map(String).filter(Boolean); } catch (_) {}
19
+ }
20
+ // Fallback : séparation par virgule
21
+ return s.split(',').map(v => v.trim()).filter(Boolean);
16
22
  }
17
23
 
18
24
  function parseBool(v, def = false) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-ezoic-infinite",
3
- "version": "1.7.40",
3
+ "version": "1.7.42",
4
4
  "description": "Production-ready Ezoic infinite ads integration for NodeBB 4.x",
5
5
  "main": "library.js",
6
6
  "license": "MIT",
package/public/client.js CHANGED
@@ -32,8 +32,9 @@
32
32
  *
33
33
  * v34 moveDistantWrap — voir v38.
34
34
  *
35
- * v48 Reload page si utilisateur exclu après connexion (plus propre que
36
- * retirer les scripts du DOM le head sera re-rendu sans Ezoic).
35
+ * v50 Suppression de bindLoginCheck() : NodeBB fait un rechargement complet
36
+ * après loginfilter:middleware.renderHeader re-évalue l'exclusion au
37
+ * rechargement. Redondant depuis le fix normalizeExcludedGroups (v49).
37
38
  *
38
39
  * v43 Seuil de recyclage abaissé à -vh + unobserve avant recyclage.
39
40
  *
@@ -818,36 +819,6 @@
818
819
  } catch (_) {}
819
820
  }
820
821
 
821
- /**
822
- * Retire les scripts Ezoic du DOM si l'utilisateur vient de se connecter
823
- * et appartient à un groupe exclu.
824
- *
825
- * NodeBB ne recharge pas la page après login — les scripts injectés en <head>
826
- * restent en DOM. On détecte la connexion en comparant l'uid avant/après
827
- * chaque action:ajaxify.end, puis on vérifie /api/plugins/ezoic-infinite/config.
828
- * Si excluded:true, on retire les 4 scripts Ezoic du DOM et on arrête le plugin.
829
- */
830
- function bindLoginCheck() {
831
- const $ = window.jQuery;
832
- if (!$) return;
833
- let prevUid = window.app?.user?.uid ?? 0;
834
-
835
- $(window).on('action:ajaxify.end.nbbEzoicLogin', async () => {
836
- const uid = window.app?.user?.uid ?? 0;
837
- if (uid === prevUid || uid === 0) { prevUid = uid; return; }
838
- prevUid = uid;
839
- // L'utilisateur vient de se connecter — vérifier s'il est exclu
840
- try {
841
- const r = await fetch('/api/plugins/ezoic-infinite/config', { credentials: 'same-origin' });
842
- if (!r.ok) return;
843
- const cfg = await r.json();
844
- if (!cfg.excluded) return;
845
- // Exclu : recharger la page — le <head> sera re-rendu sans les scripts Ezoic
846
- window.location.reload();
847
- } catch (_) {}
848
- });
849
- }
850
-
851
822
  function bindScroll() {
852
823
  let ticking = false;
853
824
  window.addEventListener('scroll', () => {
@@ -868,7 +839,6 @@
868
839
  ensureDomObserver();
869
840
  bindNodeBB();
870
841
  bindScroll();
871
- bindLoginCheck();
872
842
  blockedUntil = 0;
873
843
  requestBurst();
874
844