-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmarketplace.js
65 lines (62 loc) · 2.4 KB
/
marketplace.js
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
var apps = document.getElementById('apps');
var search = document.getElementById('search');
function searchApps() {
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
if(req.readyState === 4 && req.status === 200) {
var resp = JSON.parse(req.responseText);
apps.innerHTML = '';
resp.objects.forEach(function(object) {
var app = document.createElement('div');
app.className = 'app';
var icon = document.createElement('img');
icon.src = object.icons[64];
app.appendChild(icon);
var name = document.createElement('div');
name.className = 'name';
name.appendChild(document.createTextNode(object.name[object.default_locale]));
app.appendChild(name);
var description = document.createElement('span');
description.className = 'description';
description.innerHTML = (object.description[object.default_locale] || object.description['en-US'] || '').replace(
/<(?!(?:\/)?(?:a|ul|li|strong|b|em|i|abbr)(?: |>))/ig, '<'
);
app.appendChild(description);
app.appendChild(document.createElement('br'));
var expandLink = document.createElement('span');
expandLink.className = 'expandLink';
expandLink.addEventListener('click', function(evt) {
if(app.classList.toggle('expanded')) {
expandLink.textContent = 'Read less…';
} else {
expandLink.textContent = 'Read more…';
}
});
expandLink.textContent = 'Read more…';
app.appendChild(expandLink);
var installLink = document.createElement('button');
installLink.className = 'installLink';
installLink.addEventListener('click', function(evt) {
evt.preventDefault();
installLink.textContent = 'Installing…';
var request = navigator.mozApps.installPackage(object.manifest_url, {catagories: object.categories});
request.onsuccess = function() {
console.log(request);
installLink.textContent = 'Installed';
};
request.onerror = function() {
console.log(request);
installLink.textContent = 'There was an error. Try again';
};
});
installLink.textContent = 'Install';
app.appendChild(installLink);
apps.appendChild(app);
});
}
};
req.open('GET', 'https://marketplace.firefox.com/api/v2/apps/search/?q=' + encodeURIComponent(search.value) + '&dev=desktop&app_type=packaged');
req.send();
}
searchApps();
document.getElementById('search').addEventListener('change', searchApps);