X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=js%2Fmain.js;h=fff4078ae82626a88a43a8fa51bba8d00f162509;hb=54810f6417e798613a6baafa08500a5ea6d1d5cb;hp=aaeef00cf731a03c12de3d6e8a5e95d1ee98695e;hpb=291906de5f3074407253241e5ccbb5af633e0c22;p=friendica.git
diff --git a/js/main.js b/js/main.js
index aaeef00cf7..fff4078ae8 100644
--- a/js/main.js
+++ b/js/main.js
@@ -101,6 +101,7 @@
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
textarea.value = textarea.value.substring(0, start) + bbcode + textarea.value.substring(end, textarea.value.length);
+ $(textarea).trigger('change');
});
@@ -223,8 +224,11 @@
var nnm = $("#nav-notifications-menu");
nnm.html(notifications_all + notifications_mark);
- var notification_lastitem = parseInt(localStorage.getItem("notification-lastitem"));
+ var lastItemStorageKey = "notification-lastitem:" + localUser;
+ var notification_lastitem = parseInt(localStorage.getItem(lastItemStorageKey));
var notification_id = 0;
+
+ // Insert notifs into the notifications-menu
$(data.notifications).each(function(key, notif){
var text = notif.message.format('' + notif.name + '');
var contact = ('' + notif.name + '');
@@ -232,19 +236,21 @@
var html = notifications_tpl.format(
notif.href, // {0} // link to the source
notif.photo, // {1} // photo of the contact
- text, // {2} // preformatted text (autor + text)
+ text, // {2} // preformatted text (autor + text)
notif.date, // {3} // date of notification (time ago)
- seenclass, // {4} // visited status of the notification
+ seenclass, // {4} // visited status of the notification
new Date(notif.timestamp*1000), // {5} // date of notification
notif.url, // {6} // profile url of the contact
notif.message.format(contact), // {7} // preformatted html (text including author profile url)
- '' // {8} // Deprecated
+ '' // {8} // Deprecated
);
nnm.append(html);
});
+
+ // Desktop Notifications
$(data.notifications.reverse()).each(function(key, e){
notification_id = parseInt(e.timestamp);
- if (notification_lastitem !== null && notification_id > notification_lastitem) {
+ if (notification_lastitem !== null && notification_id > notification_lastitem && Number(e.seen) === 0) {
if (getNotificationPermission() === "granted") {
var notification = new Notification(document.title, {
body: decodeHtml(e.message.replace('→ ', '').format(e.name)),
@@ -259,7 +265,7 @@
});
notification_lastitem = notification_id;
- localStorage.setItem("notification-lastitem", notification_lastitem)
+ localStorage.setItem(lastItemStorageKey, notification_lastitem)
$("img[data-src]", nnm).each(function(i, el){
// Add src attribute for images with a data-src attribute
@@ -285,7 +291,7 @@
$.jGrowl(message, {sticky: false, theme: 'info', life: 5000});
});
- /* update the js scrollbars */
+ // Update the js scrollbars
$('#nav-notifications-menu').perfectScrollbar('update');
});
@@ -317,6 +323,30 @@
}
});
+ // Scroll to the next/previous thread when pressing J and K
+ $(document).keydown(function (event) {
+ var threads = $('.thread_level_1');
+ if ((event.keyCode === 74 || event.keyCode === 75) && !$(event.target).is('textarea, input')) {
+ var scrollTop = $(window).scrollTop();
+ if (event.keyCode === 75) {
+ threads = $(threads.get().reverse());
+ }
+ threads.each(function(key, item) {
+ var comparison;
+ var top = $(item).offset().top - 100;
+ if (event.keyCode === 74) {
+ comparison = top > scrollTop + 1;
+ } else if (event.keyCode === 75) {
+ comparison = top < scrollTop - 1;
+ }
+ if (comparison) {
+ $('html, body').animate({ scrollTop: top }, 200);
+ return false;
+ }
+ });
+ }
+ });
+
// Set an event listener for infinite scroll
if(typeof infinite_scroll !== 'undefined') {
$(window).scroll(function(e){
@@ -690,11 +720,41 @@
// page number
infinite_scroll.pageno+=1;
+ match = $("span.received").last();
+ if (match.length > 0) {
+ received = match[0].innerHTML;
+ } else {
+ received = "0000-00-00 00:00:00";
+ }
+
+ match = $("span.created").last();
+ if (match.length > 0) {
+ created = match[0].innerHTML;
+ } else {
+ created = "0000-00-00 00:00:00";
+ }
+
+ match = $("span.commented").last();
+ if (match.length > 0) {
+ commented = match[0].innerHTML;
+ } else {
+ commented = "0000-00-00 00:00:00";
+ }
+
+ match = $("span.id").last();
+ if (match.length > 0) {
+ id = match[0].innerHTML;
+ } else {
+ id = "0";
+ }
+ // console.log("Received: " + received + " - Commented: " + commented+ " - Created: " + created + " - ID: " + id);
+
// get the raw content from the next page and insert this content
// right before "#conversation-end"
- $.get('network?mode=raw' + infinite_scroll.reload_uri + '&page=' + infinite_scroll.pageno, function(data) {
+ $.get('network?mode=raw' + infinite_scroll.reload_uri + '&last_received=' + received + '&last_commented=' + commented + '&last_created=' + created + '&last_id=' + id + '&page=' + infinite_scroll.pageno, function(data) {
$("#scroll-loader").hide();
if ($(data).length > 0) {
+
$(data).insertBefore('#conversation-end');
lockLoadContent = false;
} else {