Major improvements on policy configuration
- Bugfixes on change_policy - Replaced _consent modules with configurable modules
This commit is contained in:
modpol_core
api.lua
interactions
modules
add_child_org.luaadd_child_org_consent.luachange_modules.luachange_policy.luaconsent.luacreate_token.luadefer.luadisplay_policies.luajoin_org.luajoin_org_consent.luaremove_child_org.luaremove_member.luaremove_org.luaremove_org_consent.luarename_org.luasend_token.luatemplate.luatokenomics.lua
orgs
@@ -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
|
||||
|
Reference in New Issue
Block a user