Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Extensions/addressbar.icon.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
data:image/png;base64,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
79 changes: 79 additions & 0 deletions Extensions/addressbar.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
//* TITLE Addressbar Updater **//
//* VERSION 1.0.1 **//
//* DESCRIPTION Keeps the url in its place **//
//* DEVELOPER srsutherland **//
//* DETAILS Sets the url to the current post on your dashboard (to keep your place during tab crashes and refreshes). **//
//* FRAME false **//
//* BETA false **//
//* SLOW false **//

XKit.extensions.addressbar = new Object({

running: false,
interval: 0,
initialScroll: history.scrollRestoration,

preferences: {
"focus_only": {
text: "Only run the extension when the page has focus",
default: true,
value: true
},
},

run: function() {
this.running = true; //there's some confusion over whether this gets set to true on immediate return

const Xwhere = XKit.interface.where();
if (Xwhere.dashboard !== true || Xwhere.endless !== true) {
return; //only useful on endless dashboard
}

this.interval = setInterval(this.update_address, 500);

history.scrollRestoration = "manual"; //prevent page from jumping to bottom on refresh
},

find_top: function() {
var offset = 200; //place slightly below navbar to ignore reblog controls
var scrollPos = $(window).scrollTop() + offset;
var minDist = Number.MAX_SAFE_INTEGER;
var id = null; //check later and do nothing to history if no post qualifies

$("[data-id]").each(function() {
var dist = scrollPos - $(this).offset().top;
//if it equals exactly 200 that's a bogus value
if (dist > 0 && dist !== offset && dist < minDist) {
minDist = dist;
id = $(this).attr('data-id');
}
});
return id;
},

replace_address: function(postid) {
postid = BigInt(postid);
window.history.replaceState(
{ id: postid },
'Tumblr - ' + postid, //title param is ignored currently
'?max_post_id=' + (postid + BigInt(1)) //has to be the id immediately after
);
},

update_address: function() {
if (!XKit.extensions.addressbar.focus_only || document.hasFocus()) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

XKit.extensions.addressbar.focus_only doesn't exist; you meant XKit.extensions.addressbar.preferences.focus_only

//do nothing if you're not in focus
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this comment should be removed too

var id = XKit.extensions.addressbar.find_top();
if (id !== null && id > 1) {
XKit.extensions.addressbar.replace_address(id);
}
return id; //unused/debug
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

always remove debug lines

}
},

destroy: function() {
this.running = false;
clearInterval(this.interval);
history.scrollRestoration = this.initialScroll;
}
});