diff --git a/README.md b/README.md
index 804d010..8a79ddb 100644
--- a/README.md
+++ b/README.md
@@ -28,6 +28,7 @@ We moved our instances list to our webpage: https://www.halcyon.social/instances
or read our new documentation pages to install it manually: https://www.halcyon.social/documentation.php?page=install
## Blog
+- Release of Version 2.4.6 - Replace some removed Mastodon APIs,fix Toot button not locking on CTRL+Enter,make navbar a bit more responsive
- Release of Version 2.4.5 - Support for emoji categories,added links to admin panel,rewrite links to Invidious and Nitter at compose,bugfixes
- Release of Version 2.4.4 - Option to rewrite all Twitter links to Nitter,click on animated GIF works like image now,full height for images option now works for animated GIF
- Release of Version 2.4.3 - Fixed login,fixed YouPlay/Invidious embeds,fixed empty image placeholder when audio available,improved status template code
diff --git a/assets/css/style.css b/assets/css/style.css
index 1f985d1..1a2aea2 100644
--- a/assets/css/style.css
+++ b/assets/css/style.css
@@ -2993,3 +2993,16 @@ color:#FFFFFF;
.media_attachments_delete_button i{
margin:5px;
}
+@media(max-width:899px) {
+#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a > span,
+#header .header_nav_wrap .header_right_box ul.header_nav_list li.search_form_wrap,
+#header .header_nav_wrap .header_right_box ul.header_nav_list li.toot_button_wrap .toot_button_label > span {
+display:none;
+}
+#header .header_nav_wrap .header_right_box ul.header_nav_list li.toot_button_wrap .toot_button {
+width:40px;
+}
+#header .header_nav_wrap .header_left_box ul.header_nav_list li.header_nav_item a {
+padding-right:4px;
+}
+}
diff --git a/assets/js/autocomplete/search.js b/assets/js/autocomplete/search.js
index 3d52501..9bc3272 100644
--- a/assets/js/autocomplete/search.js
+++ b/assets/js/autocomplete/search.js
@@ -21,14 +21,14 @@ replace_emoji();
function searchremotefill(text) {
if(text == "@") searchlocalfill();
else {
-api.get("search?q="+encodeURIComponent(text)+"&resolve=false&limit=5",function(data) {
+api.search("q="+encodeURIComponent(text)+"&resolve=false&limit=5",function(data) {
if(data.hashtags.length == 0 && data.accounts.length == 0) $(".header_search_suggestions").addClass("invisible");
else {
var dropdown = $("
").addClass("account_list");
for(var i=0;i").data("value",data.hashtags[i]).addClass("account_box").append($("").addClass("icon_box").append($("
").addClass("emoji_poss").html("#️⃣").css("float","left").css("font-size","32px")))
-.append($("").addClass("label_box").append($("
").addClass("dn").append($("").html("#"+data.hashtags[i])))).click(function() {
+dropdown.append($("
- ").data("value",data.hashtags[i].name).addClass("account_box").append($("
").addClass("icon_box").append($("
").addClass("emoji_poss").html("#️⃣").css("float","left").css("font-size","32px")))
+.append($("").addClass("label_box").append($("
").addClass("dn").append($("").html("#"+data.hashtags[i].name)))).click(function() {
window.location.href = "/search?q="+encodeURIComponent($(this).data("value"));
}));
}
diff --git a/assets/js/autocomplete/textarea.js b/assets/js/autocomplete/textarea.js
index 541c600..616fb73 100644
--- a/assets/js/autocomplete/textarea.js
+++ b/assets/js/autocomplete/textarea.js
@@ -61,7 +61,6 @@ blurredEle && addToken(blurredEle,prepend,callback);
blurredEle = null;
getDropDown().removeClass('showDropDown').addClass('hideDropDown');
});
-if(resultname) {
if(resultname == "acct") {
if(ele.display_name == "") ele.display_name = ele.username;
ele.display_name = htmlEscape(ele.display_name);
@@ -72,6 +71,11 @@ $(liNode).data("value",prepend+ele[resultname]+" ");
$(liNode).addClass("account_box").append($("").addClass("icon_box").append($("
").attr("src",ele.avatar).css("float","left")))
.append($("
").addClass("label_box").append($("
").addClass("dn").append($("").html(ele.display_name).addClass("emoji_poss"))).append($("").addClass("un").html(prepend+ele.acct)));
}
+else if(resultname == "name") {
+$(liNode).data("value",prepend+ele[resultname]+" ");
+$(liNode).addClass("account_box").append($("").addClass("icon_box").append($("
").addClass("emoji_poss").html("#️⃣").css("float","left").css("font-size","32px")))
+.append($("").addClass("label_box").append($("
").addClass("dn").append($("").html(prepend+ele[resultname]))));
+}
else {
$(liNode).data("value",prepend+ele[resultname]+": ");
if(ele.value) {
@@ -83,12 +87,6 @@ $(liNode).addClass("account_box").append($("").addClass("icon_box").append(
.append($("
").addClass("label_box").append($("
").addClass("dn").append($("").html(ele.name))));
}
}
-}
-else {
-$(liNode).data("value",prepend+ele+" ");
-$(liNode).addClass("account_box").append($("").addClass("icon_box").append($("
").addClass("emoji_poss").html("#️⃣").css("float","left").css("font-size","32px")))
-.append($("").addClass("label_box").append($("
").addClass("dn").append($("").html(prepend+ele))));
-}
node.append(liNode);
}
});
@@ -184,7 +182,7 @@ return;
}
if(extractNewInputs(node,startKey).length > 1 && extractNewInputs(node,startKey).indexOf(endKey) == -1) {
if(config.arrayname) {
-api.get("search?q="+encodeURIComponent(extractNewInputs(node,startKey))+"&resolve=false&limit=5",function(matchedData) {
+api.search("q="+encodeURIComponent(extractNewInputs(node,startKey))+"&resolve=false&limit=5",function(matchedData) {
matchedData = matchedData[config.arrayname];
if(matchedData.length) {
if(hasDropDown()){
diff --git a/assets/js/halcyon/halcyonFunctions.js b/assets/js/halcyon/halcyonFunctions.js
index 6ff4eea..1e3b8c8 100644
--- a/assets/js/halcyon/halcyonFunctions.js
+++ b/assets/js/halcyon/halcyonFunctions.js
@@ -401,7 +401,7 @@ setWhoToFollow();
}
}
function addFollowProfile(id,account) {
-api.get('search',[{name:'q',data:"@"+account},{name:'resolve',data:'true'}], function(search) {
+api.search('q='+encodeURIComponent("@"+account)+"&limit=1&resolve=true",function(search) {
search.accounts[0].display_name = htmlEscape(search.accounts[0].display_name);
for(i=0;i");
@@ -454,7 +454,7 @@ ctx.fillText("😗",-2,4);
return ctx.getImageData(0,0,1,1).data[3] > 0;
}
function openStatus(link) {
-api.get("search?q="+link,function(response) {
+api.search("q="+encodeURIComponent(link),function(response) {
if(response.statuses.length > 0) {
var data = response.statuses[0];
if(data.account.acct.indexOf("@") == -1) {
@@ -541,7 +541,7 @@ else return "";
function enableAutoComplete(textarea) {
if(localStorage.setting_compose_autocomplete == "true") {
textarea.autoCompleteToken({instance:1,startkey:"@",endkey:" ",arrayname:"accounts",resultname:"acct"});
-textarea.autoCompleteToken({instance:2,startkey:"#",endkey:" ",arrayname:"hashtags"});
+textarea.autoCompleteToken({instance:2,startkey:"#",endkey:" ",arrayname:"hashtags",resultname:"name"});
textarea.autoCompleteToken({instance:3,startkey:":",endkey:";",source:actEmojiData,resultname:"name",callback:function() {
textarea.trigger({"type":"keyup","key":":"});
}});
@@ -722,3 +722,48 @@ if(status.account.display_name.length == 0) status.account.display_name = status
}
return status;
}
+function renderTimeline(statuses,show_replies,level) {
+for(let i in statuses) {
+var filterstatus = false;
+for(var a=0;a i').css({"display":"none"});
+}
+isSyncing = false;
+}
+});
+}
+});
+$(window).scroll(function () {
+if ( $(window).scrollTop()+window.innerHeight >= $(document).height()-700 ) {
+if (!isSyncing) {
+isSyncing = true;
+var statuses = new Array();
+if(links && links['next']) {
+load_options.unshift({name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]});
+api.get("conversations",load_options,function(conversations) {
+links = getLinkFromXHRHeader(responce_headers);
+if(conversations.length) {
+for(var a=0;a i').css({"display":"none"});
+}
+isSyncing = false;
+}
+});
+}
+}
+else {
+$('.timeline_footer > i').css({"display":"none"});
+$('.timeline_footer').append('');
+isSyncing = true;
+}
+});
+load_options.shift();
+}
+else {
+$('.timeline_footer > i').css({"display":"none"});
+$('.timeline_footer').append('');
+isSyncing = true;
+}
+};
+};
+});
+startStreaming("timelines/direct",load_options,show_replies);
+}
+function startStreaming(level,load_options,show_replies) {
$(function() {
if(level === "timelines/home") {
var streamscope = "user",
@@ -442,6 +454,7 @@ if(userstream.event === "update") {
if(streaming_option === "manual") {
if(!$('.toot_entry[sid="'+userstream.payload.id+'"]').length) {
var filterstatus = false;
+if(scope == "direct" && userstream.payload.account.id == current_id) filterstatus = true;
for(var a=0;a');
+},0);
const form = document.forms[place+"_status_form"];
if(!Object.keys(image_uploads[place]).length || !$('#'+place+'_status_form .status_poll_editor').hasClass("invisible")) {
const params = {
@@ -2215,10 +2232,10 @@ $("#search_form").focus();
"disable_in_input":true,
'keycode':191
});
-shortcut.add("Meta+Enter",function() {
+shortcut.add("Meta+Enter",function(e) {
$(".active_submit_button").click();
});
-shortcut.add("Ctrl+Enter",function() {
+shortcut.add("Ctrl+Enter",function(e) {
$(".active_submit_button").click();
});
shortcut.add(".",function() {
diff --git a/assets/js/mastodon.js/mastodon.js b/assets/js/mastodon.js/mastodon.js
index f9d13b8..97d6db7 100644
--- a/assets/js/mastodon.js/mastodon.js
+++ b/assets/js/mastodon.js/mastodon.js
@@ -329,8 +329,59 @@ location.href = "/logout";
}
});
},
+search: function (queryString) {
+var queryData,callback,failback,queryStringAppend = "?";
+if (typeof arguments[1] === "function") {
+queryData = {};
+callback = arguments[1];
+if(arguments[2]) failback = arguments[2];
+} else {
+queryData = arguments[1];
+callback = arguments[2];
+if(arguments[3]) failback = arguments[3];
+}
+if(typeof queryData == "string") {
+queryStringAppend = queryData;
+}
+else {
+for (var i in queryData) {
+if (queryData.hasOwnProperty(i)) {
+if (typeof queryData[i] === "string") {
+queryStringAppend += queryData[i] + "&";
+} else if (typeof queryData[i] === "object") {
+queryStringAppend += queryData[i].name + "="+ queryData[i].data + "&";
+}
+}
+}
+}
+var xquerydata = queryData;
+$.ajax({
+url: config.instance + "/api/v2/search?" + queryString + queryStringAppend,
+type: "GET",
+headers: {"Authorization": "Bearer " + config.api_user_token},
+success: function(data, textStatus, xhr) {
+console.log("Successful GET API request to " +config.instance + "/api/v2/search");
+responce_headers = xhr.getAllResponseHeaders();
+callback(data,textStatus);
+},
+error: function(xhr, textStatus, errorThrown) {
+if(xhr.readyState == 0) {
+api.search(queryString,queryStringAppend,callback);
+}
+else if(typeof failback == "function") failback();
+else {
+if(xhr.responseText.length > 0) {
+putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`);
+if ( xhr.status === 401 ) {
+location.href = "/logout";
+}
+}
+}
+}
+});
+},
stream: function (streamType, onData) {
-var es = new WebSocket("wss://" + apiBase.substr(8) + "streaming?access_token=" + config.api_user_token + "&stream=" + streamType);
+var es = new WebSocket("wss://" + apiBase.substr(8) + "streaming/?access_token=" + config.api_user_token + "&stream=" + streamType);
var listener = function(event) {
console.log("Got Data from Stream " + streamType);
if(event.data.length != 0) {
diff --git a/direct.php b/direct.php
index 4383a5d..26c42d8 100644
--- a/direct.php
+++ b/direct.php
@@ -37,7 +37,7 @@ View new Toots
diff --git a/user.php b/user.php
index fafddf1..f63a0c8 100644
--- a/user.php
+++ b/user.php
@@ -91,7 +91,7 @@ $domain = preg_split("/@/",$_GET['user'])[2];
$url= "https://$domain/@$name";
?>
const query = '= htmlspecialchars((string)filter_input(INPUT_GET, 'user'), ENT_QUOTES) ?>';
-api.get('search',[{name:'q',data:query},{name:'resolve',data:'true'}],function(search) {
+api.search('q='+encodeURIComponent(query)+"&resolve=true&limit=1",function(search) {
if(!search.accounts.length) {
location.href = "/404.php";
}
diff --git a/user_favorite.php b/user_favorite.php
index 13ef659..ea21ad3 100644
--- a/user_favorite.php
+++ b/user_favorite.php
@@ -83,7 +83,7 @@ $domain = preg_split("/@/", $_GET['user'])[2];
$url= "https://$domain/@$name";
?>
const query = '= htmlspecialchars((string)filter_input(INPUT_GET, 'user'), ENT_QUOTES) ?>';
-api.get('search', [{name:'q',data:query},{name:'resolve',data:'true'}], function(search) {
+api.search('q='+encodeURIComponent(query)+"&resolve=true&limit=1",function(search) {
if ( !search.accounts.length ) {
location.href="/404.php";
} else if ("@"+search.accounts[0].acct === query || "@"+search.accounts[0].acct+"@"+localStorage.current_instance === query) {
diff --git a/user_followers.php b/user_followers.php
index e5e000e..b4714f2 100644
--- a/user_followers.php
+++ b/user_followers.php
@@ -68,7 +68,7 @@ $domain = preg_split("/@/", $_GET['user'])[2];
$url= "https://$domain/@$name";
?>
const query = '= htmlspecialchars((string)filter_input(INPUT_GET, 'user'), ENT_QUOTES) ?>';
-api.get('search', [{name:'q',data:query},{name:'resolve',data:'true'}], function(search) {
+api.search('q='+encodeURIComponent(query)+"&resolve=true&limit=1",function(search) {
if ( !search.accounts.length ) {
location.href="/404.php";
} else if ("@"+search.accounts[0].acct === query || "@"+search.accounts[0].acct+"@"+localStorage.current_instance === query) {
diff --git a/user_following.php b/user_following.php
index f67191b..b04f593 100644
--- a/user_following.php
+++ b/user_following.php
@@ -68,7 +68,7 @@ $domain = preg_split("/@/", $_GET['user'])[2];
$url= "https://$domain/@$name";
?>
const query = '= htmlspecialchars((string)filter_input(INPUT_GET, 'user'), ENT_QUOTES) ?>';
-api.get('search', [{name:'q',data:query},{name:'resolve',data:'true'}], function(search) {
+api.search('q='+encodeURIComponent(query)+"&resolve=true&limit=1",function(search) {
if ( !search.accounts.length ) {
location.href="/404.php";
} else if ("@"+search.accounts[0].acct === query || "@"+search.accounts[0].acct+"@"+localStorage.current_instance === query) {
diff --git a/user_include_replies.php b/user_include_replies.php
index 92c5310..108fa25 100644
--- a/user_include_replies.php
+++ b/user_include_replies.php
@@ -100,7 +100,7 @@ $domain = preg_split("/@/", $_GET['user'])[2];
$url= "https://$domain/@$name";
?>
const query = '= htmlspecialchars((string)filter_input(INPUT_GET, 'user'), ENT_QUOTES) ?>';
-api.get('search', [{name:'q',data:query},{name:'resolve',data:'true'}], function(search) {
+api.search('q='+encodeURIComponent(query)+"&resolve=true&limit=1",function(search) {
if ( !search.accounts.length ) {
location.href = "/404.php";
} else if ("@"+search.accounts[0].acct === query || "@"+search.accounts[0].acct+"@"+localStorage.current_instance === query) {
diff --git a/user_only_media.php b/user_only_media.php
index e572ab2..de4b338 100644
--- a/user_only_media.php
+++ b/user_only_media.php
@@ -100,7 +100,7 @@ $domain = preg_split("/@/", $_GET['user'])[2];
$url= "https://$domain/@$name";
?>
const query = '= htmlspecialchars((string)filter_input(INPUT_GET, 'user'), ENT_QUOTES) ?>';
-api.get('search', [{name:'q',data:query},{name:'resolve',data:'true'}], function(search) {
+api.search('q='+encodeURIComponent(query)+"&resolve=true&limit=1",function(search) {
if ( !search.accounts.length ) {
location.href="/404.php";
} else if ("@"+search.accounts[0].acct === query || "@"+search.accounts[0].acct+"@"+localStorage.current_instance === query) {
diff --git a/version.txt b/version.txt
index 59aa62c..7bf4b6a 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-2.4.5
+2.4.6
diff --git a/who_to_follow.php b/who_to_follow.php
index 7673312..ad01344 100644
--- a/who_to_follow.php
+++ b/who_to_follow.php
@@ -28,7 +28,7 @@ fcount = 30;
}
for(i=0;i