Fix auto mute scheduler
This commit is contained in:
		| @ -5,7 +5,8 @@ const store = { | |||||||
|   checkIntervalSeconds: null, |   checkIntervalSeconds: null, | ||||||
|   alreadyAdded: new Set(), |   alreadyAdded: new Set(), | ||||||
|   alreadyRemoved: new Set(), |   alreadyRemoved: new Set(), | ||||||
|   serverAccountId: null |   serverAccountId: null, | ||||||
|  |   timeout: null | ||||||
| } | } | ||||||
|  |  | ||||||
| async function register ({ | async function register ({ | ||||||
| @ -41,8 +42,6 @@ async function register ({ | |||||||
|     load(peertubeHelpers, settings['blocklist-urls'], settings['check-seconds-interval']) |     load(peertubeHelpers, settings['blocklist-urls'], settings['check-seconds-interval']) | ||||||
|       .catch(err => logger.error('Cannot load auto mute plugin.', { err })) |       .catch(err => logger.error('Cannot load auto mute plugin.', { err })) | ||||||
|   }) |   }) | ||||||
|  |  | ||||||
|   runCheckForever(peertubeHelpers) |  | ||||||
| } | } | ||||||
|  |  | ||||||
| async function unregister () { | async function unregister () { | ||||||
| @ -59,6 +58,8 @@ module.exports = { | |||||||
| async function load (peertubeHelpers, blocklistUrls, checkIntervalSeconds) { | async function load (peertubeHelpers, blocklistUrls, checkIntervalSeconds) { | ||||||
|   const { logger } = peertubeHelpers |   const { logger } = peertubeHelpers | ||||||
|  |  | ||||||
|  |   if (store.timeout) clearTimeout(store.timeout) | ||||||
|  |  | ||||||
|   store.checkIntervalSeconds = checkIntervalSeconds |   store.checkIntervalSeconds = checkIntervalSeconds | ||||||
|  |  | ||||||
|   store.urls = (blocklistUrls || '').split('\n') |   store.urls = (blocklistUrls || '').split('\n') | ||||||
| @ -70,12 +71,14 @@ async function load (peertubeHelpers, blocklistUrls, checkIntervalSeconds) { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   logger.info('Loaded %d blocklist URLs for auto mute plugin.', store.urls.length, { urls: store.urls }) |   logger.info('Loaded %d blocklist URLs for auto mute plugin.', store.urls.length, { urls: store.urls }) | ||||||
|  |  | ||||||
|  |   runLater(peertubeHelpers) | ||||||
| } | } | ||||||
|  |  | ||||||
| async function runCheckForever (peertubeHelpers) { | async function runCheck (peertubeHelpers) { | ||||||
|   const { logger } = peertubeHelpers |   const { logger } = peertubeHelpers | ||||||
|  |  | ||||||
|   if (store.urls.length === 0) return runLater() |   if (store.urls.length === 0) return runLater(peertubeHelpers) | ||||||
|  |  | ||||||
|   for (const url of store.urls) { |   for (const url of store.urls) { | ||||||
|     try { |     try { | ||||||
| @ -96,11 +99,15 @@ async function runCheckForever (peertubeHelpers) { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   runLater() |   runLater(peertubeHelpers) | ||||||
| } | } | ||||||
|  |  | ||||||
| function runLater () { | function runLater (peertubeHelpers) { | ||||||
|   setTimeout(runCheckForever, store.checkIntervalSeconds * 1000) |   const { logger } = peertubeHelpers | ||||||
|  |  | ||||||
|  |   logger.debug('Will run auto mute check in %d seconds.', store.checkIntervalSeconds) | ||||||
|  |  | ||||||
|  |   store.timeout = setTimeout(() => runCheck(peertubeHelpers), store.checkIntervalSeconds * 1000) | ||||||
| } | } | ||||||
|  |  | ||||||
| function get (url) { | function get (url) { | ||||||
| @ -144,9 +151,9 @@ function removeEntity (peertubeHelpers, value) { | |||||||
|  |  | ||||||
|   // Account |   // Account | ||||||
|   if (value.includes('@')) { |   if (value.includes('@')) { | ||||||
|     return moderation.blockAccount({ byAccountId: store.serverAccountId, handleToUnblock: value }) |     return moderation.unblockAccount({ byAccountId: store.serverAccountId, handleToUnblock: value }) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   // Server |   // Server | ||||||
|   return moderation.blockAccount({ byAccountId: store.serverAccountId, hostToUnblock: value }) |   return moderation.unblockServer({ byAccountId: store.serverAccountId, hostToUnblock: value }) | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "peertube-plugin-auto-mute", |   "name": "peertube-plugin-auto-mute", | ||||||
|   "version": "0.0.1", |   "version": "0.0.2", | ||||||
|   "description": "Auto mute plugin for PeerTube", |   "description": "Auto mute plugin for PeerTube", | ||||||
|   "engine": { |   "engine": { | ||||||
|     "peertube": ">=2.2.0" |     "peertube": ">=2.2.0" | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user