Files
marketing-app/server/node_modules/promise-inflight/inflight.js
fahed 35d84b6bff Marketing Hub: RBAC, i18n (AR/EN), tasks overhaul, team/user merge, tutorial
Features:
- Full RBAC with 3 roles (superadmin/manager/contributor)
- Ownership tracking on posts, tasks, campaigns, projects
- Task system: assign to anyone, filter combobox, visibility scoping
- Team members merged into users table (single source of truth)
- Post thumbnails on kanban cards from attachments
- Publication link validation before publishing
- Interactive onboarding tutorial with Settings restart
- Full Arabic/English i18n with RTL layout support
- Language toggle in sidebar, IBM Plex Sans Arabic font
- Brand-based visibility filtering for non-superadmins
- Manager can only create contributors
- Profile completion flow for new users
- Cookie-based sessions (express-session + SQLite)
2026-02-08 20:46:58 +03:00

37 lines
842 B
JavaScript

'use strict'
module.exports = inflight
let Bluebird
try {
Bluebird = require('bluebird')
} catch (_) {
Bluebird = Promise
}
const active = {}
inflight.active = active
function inflight (unique, doFly) {
return Bluebird.all([unique, doFly]).then(function (args) {
const unique = args[0]
const doFly = args[1]
if (Array.isArray(unique)) {
return Bluebird.all(unique).then(function (uniqueArr) {
return _inflight(uniqueArr.join(''), doFly)
})
} else {
return _inflight(unique, doFly)
}
})
function _inflight (unique, doFly) {
if (!active[unique]) {
active[unique] = (new Bluebird(function (resolve) {
return resolve(doFly())
}))
active[unique].then(cleanup, cleanup)
function cleanup() { delete active[unique] }
}
return active[unique]
}
}