working version of join_org module demonstrated in tests/new_module_test.lua

This commit is contained in:
Luke Miller 2021-11-22 16:24:44 -05:00
parent 8bc5c5ba4e
commit 0ca04294b7
5 changed files with 74 additions and 8 deletions

View File

@ -9,12 +9,12 @@ dofile (localdir .. "/users/users.lua")
dofile (localdir .. "/orgs/base.lua")
dofile (localdir .. "/orgs/requests.lua")
dofile (localdir .. "/orgs/consent.lua")
dofile (localdir .. "/orgs/defer_to.lua")
dofile (localdir .. "/orgs/defer.lua")
--interactions
dofile (localdir .. "/interactions/interactions.lua")
--modules
dofile (loaldir .. "/modules/join_org.lua")
dofile (loaldir .. "/modules/remove_org.lua")
dofile (loaldir .. "/modules/child_org.lua")
dofile (localdir .. "/modules/join_org.lua")
dofile (localdir .. "/modules/remove_org.lua")
dofile (localdir .. "/modules/child_org.lua")

View File

@ -63,10 +63,6 @@ dofile (modpol.storage_file_path)
-- If available, load persistent storage into active tables
modpol.load_storage()
-- ===================================================================
-- Modpol core features
dofile (topdir .. "/api.lua")
-- ===================================================================
-- Modpol modules
@ -75,6 +71,11 @@ modpol.modules = modpol.modules or {}
-- TKTK need to specify modules to include
-- ===================================================================
-- Modpol core features
dofile (topdir .. "/api.lua")
-- ===================================================================
-- Final checks

View File

@ -0,0 +1,18 @@
join_org = {}
function join_org.initiate(initiator, org, result)
modpol.interactions.binary_poll_user(
initiator,
"Would you like to join " .. org.name,
function (resp)
if resp == "Yes" then
org:add_member(initiator)
end
end
)
if result then result() end
end
modpol.modules.join_org = join_org

View File

@ -0,0 +1,37 @@
-- JOIN ORG
-- Module that enables a user to join an org
modpol.modules.join_org = {}
module = modpol.modules.join_org
JoinOrg = {}
JoinOrg_mt = { __index = JoinOrg }
function JoinOrg:create(initiator, org)
local inst = {
name = "Join an org",
desc = "Initiator chooses an org to become a member of. Nothing happens if they are already in an org."
}
setmetatable(inst, JoinOrg_mt)
return inst
end
function JoinOrg:initiate(initiator, org, result)
modpol.interactions.binary_poll_user(initiator, "Would you like to join", )
end
function JoinOrg:request()
end
function JoinOrg:implement()
self.org:add_member(self.initiator)
end
-- ===================================
-- When calling a module internally
test = JoinOrg.create()
test:initiate("luke")

View File

@ -0,0 +1,10 @@
dofile('../modpol.lua');
modpol.orgs.reset()
test_org = modpol.instance:add_org('test_org', 'luke')
test_org:add_member('nathan')
print(table.concat(test_org:list_members(), ", "))
modpol.modules.join_org.initiate("paul", test_org, function () print("callback") end)