Major improvements on policy configuration

- Bugfixes on change_policy
- Replaced _consent modules with configurable modules
This commit is contained in:
Nathan Schneider
2022-08-09 17:00:24 -06:00
parent 78ea89559f
commit 22a2048d5a
21 changed files with 253 additions and 379 deletions

@@ -1,44 +1,55 @@
--- Adds a user to org
--- Join org
-- Adds initiator to an org
-- @module join_org
join_org = {}
join_org.setup = {
name = "Join Org",
slug = "join_org",
desc = "If consent process is passed, initiator joins this org."
local join_org = {
name = "Join this org (consent)",
slug = "join_org",
desc = "Adds member with consent of all members"
}
--- Adds the user to the org
-- @function join_org.initiate
join_org.data = {
result = nil
}
join_org.config = {
approval_module = false
}
--- Initiate join org with consent
-- @function join_org:initiate
-- @param result Callback if this module is embedded in other modules
function join_org.initiate(result)
modpol.interactions.binary_poll_user(
initiator,
"Would you like to join " .. org.name,
function (resp)
if resp == "Yes" then
self.org:add_member(self.initiator)
end
function join_org:initiate(result)
if self.org:has_member(self.initiator) then
modpol.interactions.message(
self.initiator,
"You are already a member of this org")
if result then result() end
self.org:delete_process(self.id)
else
self.data.result = result
self:call_module(
self.config.approval_module,
self.initiator,
{
prompt = "Allow " .. self.initiator .. " to join?"
},
function ()
self:complete()
end
)
end
end
for i, member in ipairs(self.org.members) do
self.org:add_pending_action(
member,
function ()
modpol.interactions.binary_poll_user(
member,
"Let " .. initiator .. " join " .. org.name .. "?",
function (resp)
end
)
end
)
end
if result then result() end
--- Adds member to org, notifies org, and deletes process
-- @function join_org:complete
function join_org:complete()
self.org:add_member(self.initiator)
modpol.interactions.message_org(
self.initiator,self.org.name,
self.initiator .. " joined org " .. self.org.name)
if self.data.result then self.data.result() end
self.org:delete_process(self.id)
end
modpol.modules.join_org = join_org