view mam.js @ 18:3c02cbced2df

Disable default MAM prefs until we received the iq result.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Sat, 22 Dec 2018 19:46:16 +0100
parents 07543f7f5e89
children 46660687924b
line wrap: on
line source

'use strict';

function initMAM(connection) {
    const prefs_default = document.getElementById('mam-default');
    const prefs_spinner = document.getElementById('mam-prefs-spinner');

    const iq = $iq({type: 'get'})
        .c('prefs', {xmlns: NS.mam});
    connection.sendIQ(iq, onMAMPrefs, onMAMPrefsError.bind(null, 'query failed.'));
    displaySpinner(prefs_spinner);

    function onMAMPrefs(result_iq)
    {
        const prefs = parseXPath(result_iq, './mam:prefs');
        if (prefs == null)
            return onMAMPrefsError('server error.');
        const default_ = prefs.getAttributeNS(null, 'default');
        prefs_default.value = default_;
        prefs_default.disabled = false;
        hideSpinner(prefs_spinner);
        const always = parseXPath(prefs, './mam:always/mam:jid', XPathResult.ORDERED_NODE_ITERATOR_TYPE);
        while (true) {
            const item = always.iterateNext();
            if (!item)
                break;
            const jid = item.textContent;
            console.log(jid);
        }
        const never = parseXPath(prefs, './mam:never/mam:jid', XPathResult.ORDERED_NODE_ITERATOR_TYPE);
        while (true) {
            const item = never.iterateNext();
            if (!item)
                break;
            const jid = item.textContent;
            console.log(jid);
        }
    }

    function onMAMPrefsError(string)
    {
        console.log('Failed to retrieve your message archiving preferences: ' + string);
        spinnerError(prefs_spinner);
    }

    prefs_default.addEventListener('change', function (evt) {
        const value = evt.target.value;

        const iq = $iq({type: 'set'})
            .c('prefs', {xmlns: NS.mam, 'default': prefs_default.value});
        connection.sendIQ(iq, onPrefsSet, onPrefsError);
        displaySpinner(prefs_spinner);
    });

    function onPrefsSet(iq)
    {
        console.log('MAM preferences successfully updated.');
        spinnerOk(prefs_spinner);
    }

    function onPrefsError(iq)
    {
        console.log('Error while changing MAM preferences.');
        spinnerError(prefs_spinner);
    }
}