goappes/hoodie-plugin-socialmedia

View on GitHub
admin-dashboard/assets/js/main.js

Summary

Maintainability
A
0 mins
Test Coverage
/*
 * Some portions adapted from https://github.com/hoodiehq/hoodie-plugin-social
 * Other remaining work Copyright 2014 GoAppes
 */

$(function () {

    var hoodieAdmin = top.hoodieAdmin;

    function getConfig(callback) {
      hoodieAdmin.request('GET', '/plugins/'+encodeURIComponent('plugin/hoodie-plugin-oauthio'))
        .fail(function(error) { callback(error); })
        .done(function(response) { callback(null, response); })
    }
    function setConfig(doc, callback) {
      hoodieAdmin.request('PUT', '/plugins/'+encodeURIComponent('plugin/hoodie-plugin-oauthio'), {
        data: JSON.stringify(doc)
      })
        .fail(function(error) { callback(error); })
        .done(function(response) { callback(null, response); })
    }

    function updateConfig(obj, callback) {
        getConfig(function (err, doc) {
            if (err) {
                return callback(err);
            }
            doc.config = _.extend(doc.config, obj);
            setConfig(doc, callback);
        });
    }


    // set initial form values
    getConfig(function (err, doc) {
        if (err) {
          console.log(err)
            return alert(err);
        }

        //set oauthio values
        $('[name=oauthioEnabledSelect]').find("option[value='" + doc.config.oauthio_config.enabled + "']").attr("selected","selected").change();
        $('[name=oauthioUrl]').val(doc.config.oauthio_config.settings.url);
        $('[name=oauthioPublicKey]').val(doc.config.oauthio_config.settings.publicKey);
        $('[name=oauthioSecretKey]').val(doc.config.oauthio_config.settings.secretKey);

    });

    //listen for submit button
    $('#submitBtn').on('click', function() {
        $('form').first().submit();
    });

    // save config on submit
    $('.form-horizontal').submit(function (ev) {
        ev.preventDefault();
        var cfg = {
           oauthio_config: {
               enabled: ($('[name=oauthioEnabledSelect]').val() === 'true'),
               settings: {
                       url: $('[name=oauthioUrl]').val(),
                       publicKey: $('[name=oauthioPublicKey]').val(),
                       secretKey: $('[name=oauthioSecretKey]').val()
               }
           }
        };
        updateConfig(cfg, function (err) {
            if (err) {
                console.log(err)
                return alert(err);
            }
            else {
                alert('Config saved');
            }
        });
        return false;
    });

});