nodebb-plugin-facebook-post 1.0.12 → 1.0.13

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
@@ -333,6 +333,7 @@ Plugin.init = async function (params) {
333
333
  router.get('/api/admin/plugins/facebook-post', render);
334
334
 
335
335
  router.get('/api/facebook-post/can-post', middleware.ensureLoggedIn, async (req, res) => {
336
+ res.set('Cache-Control', 'no-store');
336
337
  try {
337
338
  await loadSettings();
338
339
  if (!settings.enabled) return res.json({ allowed: false, reason: 'disabled' });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-plugin-facebook-post",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "Auto-post new NodeBB topics to a fixed Facebook Page (text + NodeBB uploads + place id).",
5
5
  "main": "library.js",
6
6
  "dependencies": {
@@ -4,7 +4,10 @@
4
4
  (function () {
5
5
  async function canPost() {
6
6
  try {
7
- const res = await fetch('/api/facebook-post/can-post', { credentials: 'same-origin' });
7
+ const res = await fetch('/api/facebook-post/can-post?_=' + Date.now(), {
8
+ credentials: 'same-origin',
9
+ cache: 'no-store',
10
+ });
8
11
  if (!res.ok) return { allowed: false };
9
12
  return await res.json();
10
13
  } catch {
@@ -13,7 +16,6 @@
13
16
  }
14
17
 
15
18
  function injectUI($composer) {
16
- if (!$composer || !$composer.length) return;
17
19
  if ($composer.find('[data-fbpost-wrap]').length) return;
18
20
 
19
21
  const html = `
@@ -35,12 +37,7 @@
35
37
  </div>
36
38
  `;
37
39
 
38
- // More robust placement across themes
39
- const $targets = $composer.find(
40
- '.composer-body, .composer-content, .write, .composer .write, .composer .composer-body, .composer .composer-content'
41
- );
42
- const $target = $targets.first();
43
-
40
+ const $target = $composer.find('.write, .composer-body, .composer-content').first();
44
41
  if ($target.length) $target.prepend(html);
45
42
  else $composer.prepend(html);
46
43
 
@@ -51,7 +48,6 @@
51
48
  $placeWrap.toggle($enabled.is(':checked'));
52
49
  });
53
50
 
54
- // Attach once per composer instance
55
51
  $(window).off('filter:composer.submit.fbpost')
56
52
  .on('filter:composer.submit.fbpost', function (ev2, submitData) {
57
53
  const enabled = $enabled.is(':checked');
@@ -66,23 +62,18 @@
66
62
  });
67
63
  }
68
64
 
69
- async function onComposerLoaded(ev, data) {
65
+ $(window).on('action:composer.loaded', async function (ev, data) {
70
66
  try {
71
- const $composer = $(data && data.composer ? data.composer : $('.composer')).first();
72
- if (!$composer.length) return;
67
+ const $composer = data && data.composer ? $(data.composer) : $('.composer');
68
+ if (!$composer || !$composer.length) return;
73
69
 
74
70
  const perm = await canPost();
75
71
  if (!perm.allowed) return;
76
72
 
77
- // Defer injection slightly (composer DOM may still be mounting)
78
- setTimeout(() => injectUI($composer), 0);
73
+ injectUI($composer);
79
74
  } catch {
80
75
  // ignore
81
76
  }
82
- }
83
-
84
- $(window).on('action:composer.loaded', onComposerLoaded);
85
-
86
- // Some themes trigger different events; listen to opened as well.
87
- $(window).on('action:composer.opened', onComposerLoaded);
77
+ });
88
78
  })();
79
+