view mod_mam/mamprefs.lib.lua @ 4650:44af84178cea

mod_cloud_notify_encrypted: For encrypted messages, push a friendly message instead of fallback body A fix for https://github.com/snikket-im/snikket-server/issues/18
author Matthew Wild <mwild1@gmail.com>
date Sun, 22 Aug 2021 10:46:31 +0100
parents 9ffb059c9ba5
children
line wrap: on
line source

-- XEP-0313: Message Archive Management for Prosody
-- Copyright (C) 2011-2013 Kim Alvefur
--
-- This file is MIT/X11 licensed.
-- luacheck: ignore 122/prosody

local global_default_policy = module:get_option("default_archive_policy", true);

do
	-- luacheck: ignore 211/prefs_format
	local prefs_format = {
		[false] = "roster",
		-- default ::= true | false | "roster"
		-- true = always, false = never, nil = global default
		["romeo@montague.net"] = true, -- always
		["montague@montague.net"] = false, -- newer
	};
end

local sessions = prosody.hosts[module.host].sessions;
local archive_store = module:get_option_string("archive_store", "archive");
local prefs = module:open_store(archive_store .. "_prefs");

local function get_prefs(user)
	local user_sessions = sessions[user];
	local user_prefs = user_sessions and user_sessions.archive_prefs
	if not user_prefs then
		user_prefs = prefs:get(user);
		if user_sessions then
			user_sessions.archive_prefs = user_prefs;
		end
	end
	return user_prefs or { [false] = global_default_policy };
end
local function set_prefs(user, user_prefs)
	local user_sessions = sessions[user];
	if user_sessions then
		user_sessions.archive_prefs = user_prefs;
	end
	return prefs:set(user, user_prefs);
end

return {
	get = get_prefs,
	set = set_prefs,
}