65 |
65 |
66 -- Handle prefs. |
66 -- Handle prefs. |
67 module:hook("iq/self/"..xmlns_mam..":prefs", function(event) |
67 module:hook("iq/self/"..xmlns_mam..":prefs", function(event) |
68 local origin, stanza = event.origin, event.stanza; |
68 local origin, stanza = event.origin, event.stanza; |
69 local user = origin.username; |
69 local user = origin.username; |
70 if stanza.attr.type == "get" then |
70 if stanza.attr.type == "set" then |
71 local prefs = prefs_to_stanza(get_prefs(user)); |
|
72 local reply = st.reply(stanza):add_child(prefs); |
|
73 origin.send(reply); |
|
74 else -- type == "set" |
|
75 local new_prefs = stanza:get_child("prefs", xmlns_mam); |
71 local new_prefs = stanza:get_child("prefs", xmlns_mam); |
76 local prefs = prefs_from_stanza(new_prefs); |
72 local prefs = prefs_from_stanza(new_prefs); |
77 local ok, err = set_prefs(user, prefs); |
73 local ok, err = set_prefs(user, prefs); |
78 if not ok then |
74 if not ok then |
79 origin.send(st.error_reply(stanza, "cancel", "internal-server-error", "Error storing preferences: "..tostring(err))); |
75 origin.send(st.error_reply(stanza, "cancel", "internal-server-error", "Error storing preferences: "..tostring(err))); |
80 else |
76 return true; |
81 origin.send(st.reply(stanza)); |
77 end |
82 end |
78 end |
83 end |
79 local prefs = prefs_to_stanza(get_prefs(user)); |
|
80 local reply = st.reply(stanza):add_child(prefs); |
|
81 origin.send(reply); |
84 return true; |
82 return true; |
85 end); |
83 end); |
86 |
84 |
87 local query_form = dataform { |
85 local query_form = dataform { |
88 { name = "FORM_TYPE"; type = "hidden"; value = xmlns_mam; }; |
86 { name = "FORM_TYPE"; type = "hidden"; value = xmlns_mam; }; |