Mercurial > xmpp-account-manager
comparison mam.js @ 20:46660687924b
Also set and get always and never lists from MAM prefs.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Sat, 22 Dec 2018 20:12:19 +0100 |
parents | 3c02cbced2df |
children | 6c620e9f7d2c |
comparison
equal
deleted
inserted
replaced
19:bde4f0bbfe69 | 20:46660687924b |
---|---|
1 'use strict'; | 1 'use strict'; |
2 | 2 |
3 function initMAM(connection) { | 3 function initMAM(connection) { |
4 const prefs_default = document.getElementById('mam-default'); | 4 const prefs_default = document.getElementById('mam-prefs-default'); |
5 const prefs_always = document.getElementById('mam-prefs-always'); | |
6 const prefs_never = document.getElementById('mam-prefs-never'); | |
5 const prefs_spinner = document.getElementById('mam-prefs-spinner'); | 7 const prefs_spinner = document.getElementById('mam-prefs-spinner'); |
6 | 8 |
7 const iq = $iq({type: 'get'}) | 9 const iq = $iq({type: 'get'}) |
8 .c('prefs', {xmlns: NS.mam}); | 10 .c('prefs', {xmlns: NS.mam}); |
9 connection.sendIQ(iq, onMAMPrefs, onMAMPrefsError.bind(null, 'query failed.')); | 11 connection.sendIQ(iq, onMAMPrefs, onMAMPrefsError.bind(null, 'query failed.')); |
17 const default_ = prefs.getAttributeNS(null, 'default'); | 19 const default_ = prefs.getAttributeNS(null, 'default'); |
18 prefs_default.value = default_; | 20 prefs_default.value = default_; |
19 prefs_default.disabled = false; | 21 prefs_default.disabled = false; |
20 hideSpinner(prefs_spinner); | 22 hideSpinner(prefs_spinner); |
21 const always = parseXPath(prefs, './mam:always/mam:jid', XPathResult.ORDERED_NODE_ITERATOR_TYPE); | 23 const always = parseXPath(prefs, './mam:always/mam:jid', XPathResult.ORDERED_NODE_ITERATOR_TYPE); |
24 const always_array = []; | |
22 while (true) { | 25 while (true) { |
23 const item = always.iterateNext(); | 26 const item = always.iterateNext(); |
24 if (!item) | 27 if (!item) |
25 break; | 28 break; |
26 const jid = item.textContent; | 29 const jid = item.textContent; |
27 console.log(jid); | 30 always_array.push(jid); |
28 } | 31 } |
32 prefs_always.value = always_array.join('\n'); | |
29 const never = parseXPath(prefs, './mam:never/mam:jid', XPathResult.ORDERED_NODE_ITERATOR_TYPE); | 33 const never = parseXPath(prefs, './mam:never/mam:jid', XPathResult.ORDERED_NODE_ITERATOR_TYPE); |
34 const never_array = []; | |
30 while (true) { | 35 while (true) { |
31 const item = never.iterateNext(); | 36 const item = never.iterateNext(); |
32 if (!item) | 37 if (!item) |
33 break; | 38 break; |
34 const jid = item.textContent; | 39 const jid = item.textContent; |
35 console.log(jid); | 40 never_array.push(jid); |
36 } | 41 } |
42 prefs_never.value = never_array.join('\n'); | |
37 } | 43 } |
38 | 44 |
39 function onMAMPrefsError(string) | 45 function onMAMPrefsError(string) |
40 { | 46 { |
41 console.log('Failed to retrieve your message archiving preferences: ' + string); | 47 console.log('Failed to retrieve your message archiving preferences: ' + string); |
42 spinnerError(prefs_spinner); | 48 spinnerError(prefs_spinner); |
43 } | 49 } |
44 | 50 |
45 prefs_default.addEventListener('change', function (evt) { | 51 function submitPrefs(evt) { |
46 const value = evt.target.value; | |
47 | |
48 const iq = $iq({type: 'set'}) | 52 const iq = $iq({type: 'set'}) |
49 .c('prefs', {xmlns: NS.mam, 'default': prefs_default.value}); | 53 .c('prefs', {xmlns: NS.mam, 'default': prefs_default.value}) |
54 .c('always'); | |
55 const always_array = prefs_always.value.split('\n'); | |
56 for (let line of always_array) { | |
57 iq.c('jid').t(line).up(); | |
58 } | |
59 iq.up().c('never'); | |
60 const never_array = prefs_never.value.split('\n'); | |
61 for (let line of never_array) { | |
62 iq.c('jid').t(line).up(); | |
63 } | |
50 connection.sendIQ(iq, onPrefsSet, onPrefsError); | 64 connection.sendIQ(iq, onPrefsSet, onPrefsError); |
51 displaySpinner(prefs_spinner); | 65 displaySpinner(prefs_spinner); |
52 }); | 66 } |
67 | |
68 prefs_default.addEventListener('change', submitPrefs); | |
69 prefs_always.addEventListener('blur', submitPrefs); | |
70 prefs_never.addEventListener('blur', submitPrefs); | |
53 | 71 |
54 function onPrefsSet(iq) | 72 function onPrefsSet(iq) |
55 { | 73 { |
56 console.log('MAM preferences successfully updated.'); | 74 console.log('MAM preferences successfully updated.'); |
57 spinnerOk(prefs_spinner); | 75 spinnerOk(prefs_spinner); |