diff --git a/css/qvitter.css b/css/qvitter.css
index df9360a..d0f2a61 100644
--- a/css/qvitter.css
+++ b/css/qvitter.css
@@ -1685,7 +1685,7 @@ body.rtl #history-container.menu-container a .chev-right {
position: absolute;
text-shadow: none;
}
-.profile-card:not(.logged-in) .user-menu-cog {
+.user-menu-cog:not(.logged-in) {
display:none !important;
}
#stream-menu-cog::before,
@@ -2042,8 +2042,8 @@ body.has-right-to-sandbox .profile-card .profile-header-inner.sandboxed span.san
body.rtl .queet.rtl .expanded-content {
direction:rtl;
}
-.stream-item.expanded > div:first-child,
-.stream-item.expanded > div:first-child > .queet {
+.stream-item.expanded > div.first-visible,
+.stream-item.expanded > div.first-visible > .queet {
border-top-left-radius:6px;
border-top-right-radius:6px;
}
@@ -2118,16 +2118,9 @@ body.rtl .queet.rtl .expanded-content {
box-sizing: border-box;
}
-/* only show activity notices if they are conversation starters
- we never need to see these, but sometimes someone replies to
- an activity notice, and then it can be good to know what the
- user is replying to... */
#feed-body > .stream-item.activity {
display:none;
}
-.stream-item > .stream-item.activity:first-child {
- display:block;
- }
.quoted-notices,
.oembed-data {
diff --git a/js/ajax-functions.js b/js/ajax-functions.js
index d83a631..de37732 100644
--- a/js/ajax-functions.js
+++ b/js/ajax-functions.js
@@ -523,6 +523,7 @@ function APISandboxCreateOrDestroy(createOrDestroy,userId,actionOnSuccess) {
data = iterateRecursiveReplaceHtmlSpecialChars(data);
searchForUserDataToCache(data);
updateUserDataInStream();
+ rememberStreamStateInLocalStorage();
actionOnSuccess(data);
}
});
@@ -552,6 +553,7 @@ function APISilenceCreateOrDestroy(createOrDestroy,userId,actionOnSuccess) {
data = iterateRecursiveReplaceHtmlSpecialChars(data);
searchForUserDataToCache(data);
updateUserDataInStream();
+ rememberStreamStateInLocalStorage();
actionOnSuccess(data);
}
});
diff --git a/js/dom-functions.js b/js/dom-functions.js
index 12fa459..d5779c0 100644
--- a/js/dom-functions.js
+++ b/js/dom-functions.js
@@ -438,7 +438,7 @@ function buildProfileCard(data) {
' + window.sL.groups + '' + data.groups_count + '\
\
' + followButton + '\
- \
+ \
\
\
\
@@ -471,6 +471,18 @@ function buildExternalProfileCard(data) {
var followButton = buildFollowBlockbutton(data.local);
}
+ // me?
+ var is_me = '';
+ if(window.loggedIn !== false && window.loggedIn.id == data.local.id) {
+ var is_me = ' is-me';
+ }
+
+ // logged in?
+ var logged_in = '';
+ if(window.loggedIn !== false) {
+ var logged_in = ' logged-in';
+ }
+
// silenced?
var is_silenced = '';
if(data.local.is_silenced === true) {
@@ -483,8 +495,9 @@ function buildExternalProfileCard(data) {
is_sandboxed = ' sandboxed';
}
- // local id
+ // local id/screen_name
var localUserId = data.local.id;
+ var localUserScreenName = data.local.screen_name;
// empty strings and zeros instead of null
data = cleanUpUserObject(data.external);
@@ -519,8 +532,8 @@ function buildExternalProfileCard(data) {
data.screenNameWithServer = '@' + data.screen_name + '@' + serverUrl;
data.profileCardHtml = '\
- \
-
\
+
\
+
\
\
\
\
\
@@ -1599,7 +1612,7 @@ function showConversation(q, qid, data, offsetScroll) {
/* ·
·
- · Add last visible class, since that's not possible to select in pure css
+ · Add last&first visible class, since that's not possible to select in pure css
·
· · · · · · · · · · · · · */
function findAndMarkLastVisibleInConversation(streamItem) {
@@ -1607,6 +1620,8 @@ function findAndMarkLastVisibleInConversation(streamItem) {
streamItem.children().removeClass('first-visible-after-parent');
streamItem.children().not('.hidden-conversation').not('.always-hidden').last().addClass('last-visible');
streamItem.children('.queet').nextAll().not('.hidden-conversation').not('.always-hidden').first().addClass('first-visible-after-parent');
+ streamItem.children().removeClass('first-visible');
+ streamItem.children().not('.hidden-conversation').not('.always-hidden').first().addClass('first-visible');
}
@@ -1995,6 +2010,11 @@ function buildUserStreamItemHtml(obj) {
if(obj.is_sandboxed === true) {
sandboxedClass = ' sandboxed';
}
+ // logged in?
+ var loggedInClass = '';
+ if(window.loggedIn !== false) {
+ loggedInClass = ' logged-in';
+ }
var followButton = '';
if(typeof window.loggedIn.screen_name != 'undefined' // if logged in
@@ -2007,6 +2027,7 @@ function buildUserStreamItemHtml(obj) {
return '
\
\
' + followButton + '\
+
\
\