summaryrefslogtreecommitdiff
path: root/web/main.js
blob: 93c465e384be26ad409b85d6eff49fb98c577e19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
var authentication_token = null;

function addPending(albumName) {
    function makeElement(name) {
        return $('<li>' + name + ' (<a href="javascript:void(0)">edit</a>)</li>');
    }
    var element = makeElement(albumName);
    $(element).find('a').click(function() {
        var input =
                $('<input type="text" value="'+albumName+'" autofocus="true">');
        setTimeout(function() {
            var position = input[0].value.length;
            input[0].setSelectionRange(position, position);
        }, 0);
        $(input).keypress(function(e) {
            if (e.which == 13) {
                $(input).replaceWith($('<i>renaming...</i>'));
                renamePending(albumName, input[0].value);
            }
        });
        $(this).replaceWith(input);
    });
    $('#pending-container').append(element);
}

function addPermanentAlbum(albumName) {
    function makeElement(name) {
        return $('<li>' + name + '</li>');
    }
    $('#album-container').append(makeElement(albumName));
}

function fetchAlbums() {
    $.ajax({
        url: "/api/albums",
        headers: {'X-Token': authentication_token},
        success: function(data) {
            $('#pending-error').empty();
            $('#pending-container').empty();
            $('#album-container').empty();
            console.log('Got albums:');
            console.log(data);
            data.forEach(function (album) {
                if (album.pending) {
                    addPending(album.name, album.pending);
                } else {
                    addPermanentAlbum(album.name);
                }
                console.log('Added album ' + album.name);
            });
        },
        error: function(unused, unusedStatus, error) {
            $('#pending-container').empty();
            $('#pending-error').html(
                '<p><b>Error</b> fetching pending albums: ' + error);
        }
    });
}

function showError(error) {
    $('#generic-error').html(
        '<p>' + error + '</p>');
}

function renamePending(oldName, newName) {
    var request = {
        from: { name: oldName, pending: true },
        to: { name: newName, pending: false }
    };
    $.ajax({
        url: '/api/rename',
        headers: {'X-Token': authentication_token},
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(request),
        success: function(data) {
            if ('Left' in data) {
                showError('Error renaming ' + oldName + ' to ' + newName + ': ' +
                          data.Left);
            }
            fetchAlbums();
        }
    });
}

function onSignIn(googleUser) {
    // Useful data for your client-side scripts:
    var profile = googleUser.getBasicProfile();
    console.log("ID: " + profile.getId()); // Don't send this directly to your server!
    console.log("Name: " + profile.getName());
    console.log("Image URL: " + profile.getImageUrl());
    console.log("Email: " + profile.getEmail());
    authentication_token = googleUser.getAuthResponse().id_token;
    // The ID token you need to pass to your backend:
    var id_token = googleUser.getAuthResponse().id_token;
    console.log("ID Token: " + id_token);
    $('.g-signin2').remove();
    fetchAlbums();
};