Skip to content

Commit

Permalink
Stop crash on loading news, fix local vs this references, and more
Browse files Browse the repository at this point in the history
  • Loading branch information
SonnyX committed Sep 20, 2021
1 parent 9f8352c commit c2e108d
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 34 deletions.
9 changes: 8 additions & 1 deletion backend/src/handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,14 @@ impl Handler {

downloader.download(download_async::Body::empty(), &mut buffer).await?;
crate::spawn_wrapper::spawn(move || -> Result<(), Error> {
callback.call(Some(context), &make_args!(buffer.as_slice()), None)?;
let image = sciter::graphics::Image::load(&buffer).ok();
if let Some(image) = image {
info!("Sending back image as it was succesfull");
callback.call(Some(context), &make_args!(image), None)?;
} else {
info!("Failed to load bytes as an image");
callback.call(Some(context), &make_args!(), None)?;
}
Ok(())
});
Ok::<(), Error>(())
Expand Down
29 changes: 26 additions & 3 deletions dom/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,19 @@ Date.prototype.monthName = function(longFormat) {
sciter = await import("@sciter");
sys = await import("@sys");

Element.prototype.load = function(file) {
this.content(sciter.decode(sys.fs.$readfile("dom/" + file)));
return true;
Element.prototype.load = function(file, base_url = undefined) {
console.log("Called prototype load!");
if(base_url != undefined) {
console.log("Loading HTML into element:");
console.log(this);
this.content(file);
return true;
} else {
console.log("Loading file \"" + file + "\" into element:");
console.log(this);
this.content(sciter.decode(sys.fs.$readfile("dom/" + file)));
return true;
}
};
})();

Expand Down Expand Up @@ -56,11 +66,16 @@ var Emu = {
},

news_image: function() {
try {
console.log(this);
if (this.classList.getAttribute("width")) {
this.setAttribute("width", (Number(this.getAttribute("width"))/10) + "%");
} else {
this.setAttribute("width", "100%");
}
} catch (e) {
console.log(e, e.stacktrace);
}
},

chat_menu: function() {
Expand All @@ -74,6 +89,7 @@ var Emu = {
},

render_news_items: function() {
try {
var frame = document.$("#news")
for (var i=0; i<news_items.length;i++) {
var date = new Date(news_items[i].pubDate);
Expand All @@ -90,8 +106,12 @@ var Emu = {
if (current) current.classList.remove("current");
evt.target.classList.add("current");
if (news_items[id].html) {
console.log("Setting the html to news_items["+id+"]");
console.log(frame);
console.log(frame.load);
frame.load(news_items[id].html, "");
} else {
console.log("Clearing the frame and fetching resource");
frame.load("", "");
Window.this.xcall("fetch_resource", news_items[id].link+"?preview=1", { "Referer": "https://renegade-x.com/forums/forum/7-news/", "X-Requested-With": "XMLHttpRequest", "TE": "Trailers", "Pragma": "no-cache"}, load_news_item, {id: id, frame: frame});
}
Expand All @@ -109,6 +129,9 @@ var Emu = {
Window.this.xcall("fetch_resource", news_items[id].link+"?preview=1", {Referer: "https://renegade-x.com/forums/forum/7-news/", "X-Requested-With": "XMLHttpRequest", TE: "Trailers", Pragma: "no-cache"}, load_news_item, {id: id, frame: frame});
}
}
} catch(e) {
console.error(e, e.stacktrace);
}
},

spoiler: function() {
Expand Down
19 changes: 14 additions & 5 deletions dom/frontpage.htm
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,27 @@
sciter = await import("@sciter");
sys = await import("@sys");

Element.prototype.load = function(file) {
this.content(sciter.decode(sys.fs.$readfile("dom/" + file)));
return true;
Element.prototype.load = function(file, base_url = undefined) {
console.log("Called prototype load!");
if(base_url != undefined) {
console.log("Loading HTML into element:");
console.log(this);
this.content(file);
return true;
} else {
console.log("Loading file \"" + file + "\" into element:");
console.log(this);
this.content(sciter.decode(sys.fs.$readfile("dom/" + file)));
return true;
}
};

document.$("#content").load(document.$("div.current").getAttribute("page"));
set_current_page(document.$("div.current"));
Window.this.xcall("check_launcher_update", check_launcher_result);
initialize_variables();
Window.this.xcall("get_servers", getServersCallback);
load_news_feed();

})();

</script>
Expand Down
65 changes: 40 additions & 25 deletions dom/functional.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,19 @@ var sys;
sciter = await import("@sciter");
sys = await import("@sys");

Element.prototype.load = function(file) {
this.content(sciter.decode(sys.fs.$readfile("dom/" + file)));
return true;
Element.prototype.load = function(file, base_url = undefined) {
console.log("Called prototype load!");
if(base_url != undefined) {
console.log("Loading HTML into element:");
console.log(this);
this.content(file);
return true;
} else {
console.log("Loading file \"" + file + "\" into element:");
console.log(this);
this.content(sciter.decode(sys.fs.$readfile("dom/" + file)));
return true;
}
};
})();

Expand Down Expand Up @@ -93,48 +103,51 @@ function news_feed_callback(text) {
pubDate: text.match(/<pubDate>(?:<!\[CDATA\[)?((?:.|\n)+?)(?:\]\]>)?<\/pubDate>/m)[1],
};
news_items.push(item);
if (i==0) Window.this.xcall("fetch_resource", news_items[i].link+"?preview=1", {"Referer": "https://renegade-x.com/forums/forum/7-news/", "X-Requested-With": "XMLHttpRequest", "TE": "Trailers", "Pragma": "no-cache"}, load_news_item, {"id": i, "frame": undefined});
if (i==0) Window.this.xcall("fetch_resource", news_items[i].link+"?preview=1", {"Referer": "https://ren-x.com/forums/forum/7-news/", "X-Requested-With": "XMLHttpRequest", "TE": "Trailers", "Pragma": "no-cache"}, load_news_item, {"id": i, "frame": frame});
}
}

function load_news_feed() {
Window.this.xcall("fetch_resource", "https://renegade-x.com/rss/1-recent-news.xml/", {"Referer": "https://renegade-x.com/forums/forum/7-news/", "X-Requested-With": "XMLHttpRequest", "TE": "Trailers", "Pragma": "no-cache"}, news_feed_callback, this);
Window.this.xcall("fetch_resource", "https://ren-x.com/rss/1-recent-news.xml/", {"Referer": "https://ren-x.com/forums/forum/7-news/", "X-Requested-With": "XMLHttpRequest", "TE": "Trailers", "Pragma": "no-cache"}, news_feed_callback, {});
}

function image_callback(bytes) {
var escaped_url = url.replace(/([\?\.\|\/\?\(\)])/g, "\\$1").trim();
if(bytes) {
var image = Image.fromBytes(bytes);
if(image && url) {
function image_callback(image) {
var escaped_url = this.url.replace(/([\?\.\|\/\?\(\)])/g, "\\$1").trim();
if(image) {
if(image && this.url) {
var url_regex = new RegExp(escaped_url, "g");
var filetype = escaped_url.split('.').pop();
news_items[id].content(news_items[id].html.replace(url_regex, "data:image/webp;base64,"+image.toBytes("#webp", 100).toString("base64")));
news_items[this.id].html = news_items[this.id].html.replace(url_regex, "data:image/webp;base64,"+image.toBytes("webp", 100).toString("base64"));
} else {
console.log("Image at url \""+escaped_url+"\" appears to be damaged.");
var escaped_tag = "<img[^>]+?src=\""+escaped_url+"\"[^>]*?\/>";
var image_regex = new RegExp(escaped_tag, "g");
news_items[id].content(news_items[id].html.replace(image_regex, ""));
news_items[this.id].html = news_items[this.id].html.replace(image_regex, "");
}
} else {
console.log("Image at url \""+escaped_url+"\" appears to be missing.");
var escaped_tag = "<img[^>]+?src=\""+escaped_url+"\"[^>]*?\/>";
var image_regex = new RegExp(escaped_tag, "g");
news_items[id].content(news_items[id].html.replace(image_regex, ""));
news_items[this.id].html = news_items[this.id].html.replace(image_regex, "");
}
var regex = /<img[^>]+?src="(http[^"]+?\.(?!gif)[^"]{3,4}(?:\?[^"]+?)?)"[^>]*?>/;
var img = news_items[id].html.match(regex);
if (img && img[1]) Window.this.xcall("fetch_image", img[1], {}, image_callback, {id:id,url:img[1],frame:this.frame});
else if (id==frame_id) {
var news_frame = document.$("#news");
var img = news_items[this.id].html.match(regex);
console.log(frame_id);
if (img && img[1]) Window.this.xcall("fetch_image", img[1], {}, image_callback, {id:this.id,url:img[1],frame:this.frame});
else if (this.id==frame_id) {
console.log("Loading news item: ");
if (this.frame) {
this.frame.load(news_items[id].html, "");
} else if (news_frame) {
news_frame.load(news_items[id].html, "");
this.frame.load(news_items[this.id].html, "");
} else if ((news_frame = document.$("#news"))) {
this.frame = news_frame;
news_frame.load(news_items[this.id].html, "");
}
}
}

function load_news_item(text) {
console.log("Load_news_item(text)");
console.log(this.frame);

text = text.replace(/\s<\/span/g, "&nbsp;</span").replace(/[\r\n\s\t]+/g, " ").replace(/>\s</, ">&nbsp;<");
var topicID = text.match(/data-topicID='(.+?)'/)[1];
text = text.replace(new RegExp("_"+topicID,"g"), "_topicID");
Expand All @@ -143,12 +156,14 @@ function load_news_item(text) {

var iframe_regex = /<i?frame[^>]*?(?:\/>|>[^<>]*?<\/i?frame>)/g;
text = text.replace(iframe_regex, "");

news_items[id].content(text);
if (this.frame) this.frame.load(text,"");
news_items[this.id].html = text;
if (this.frame) {
this.frame.load(text,"");
}
console.log("ladidadida");
var regex = /<img[^>]+?src="(http[^"]+?\.(?!gif)[^"]{3,4}(?:\?[^"]+?)?)"[^>]*?>/;
var img = text.match(regex);
if (img && img[1]) Window.this.xcall("fetch_image", img[1], {}, image_callback, {id:id,url:img[1],frame: this.frame});
if (img && img[1]) Window.this.xcall("fetch_image", img[1], {}, image_callback, {id:this.id,url:img[1],frame: this.frame});
}

const variable_observer = {
Expand Down
5 changes: 5 additions & 0 deletions inspector.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/sh
export PATH=$PATH:$PWD/../sciter-js-sdk/bin/linux/x64/

inspector && \
echo "Launched Inspector"

0 comments on commit c2e108d

Please sign in to comment.