You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MobileApp/www/js/home.js

116 lines
4.2 KiB
JavaScript

/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
function loadHomePage(reload) {
if (typeof reload == 'undefined') {
reload = false;
}
$.post(localStorage.getItem("syncurl"), {
username: localStorage.getItem("username"),
key: localStorage.getItem("key"),
action: "listapps"
}, function (data) {
if (data.status === 'OK') {
if (!reload) {
loadingProgressDialog.setProgress(70);
}
var appcards = [];
Object.keys(data.apps).forEach(function (k) {
var app = data.apps[k];
var iconurl = app.icon;
if (!app.icon.startsWith("http")) {
iconurl = app.url + app.icon;
}
if (!app.card) {
return;
}
appcards.push({
api: app.mobileapi,
url: app.url,
icon: iconurl,
title: app.title,
text: app.card.string,
color: app.card.color
});
});
if (!reload) {
loadingProgressDialog.setProgress(80);
loadingProgressDialog.setText('Notifications');
}
getNotifications(function (notifs) {
notifications = [];
if (notifs != false) {
Object.keys(notifs).forEach(function (k) {
var notif = notifs[k];
if (!notif.seen) {
notifications.push(notif);
}
});
}
if (notifications == []) {
notifications = false;
}
if (reload) {
// Make it seem like it's doing something on fast connections
setTimeout(function () {
app.ptr.done();
router.navigate("/home", {
context: {
appcards: appcards,
notifications: notifications,
unreadnotifications: (notifications != false && notifications != []),
homeloaded: true
},
reloadCurrent: true
});
}, 500);
} else {
loadingProgressDialog.setText('Home');
loadingProgressDialog.setProgress(90);
router.navigate("/home", {
context: {
appcards: appcards,
notifications: notifications,
unreadnotifications: (notifications != false && notifications != []),
homeloaded: true
}
});
$(".view-main").on("click", "#applist .applist-item", function () {
launchapp($(this).data("api"), $(this).data("url"), $(this).data("icon"), $(this).data("title"));
});
loadingProgressDialog.setProgress(100);
loadingProgressDialog.close();
}
});
} else {
if (reload) {
app.ptr.done();
return;
}
loadingProgressDialog.close();
app.dialog.alert(data.msg, "Error", function () {
restartApplication();
});
}
}, "json").fail(function () {
loadingProgressDialog.close();
app.dialog.alert("Could not connect to the server. Try again later.", "Error", function () {
restartApplication();
});
});
}
$(".view-main").on("ptr:refresh", ".ptr-content", function () {
loadHomePage(true);
});
$(".view-main").on("swipeout:deleted", ".notificationlist-item", function () {
var id = $(this).data("id");
deleteNotification(id);
});