Added reasons, probably other fixes (was dirty worktree)

This commit is contained in:
towards-a-new-leftypol 2023-08-24 18:07:37 -04:00
parent b73b3bad42
commit 860ffe856a
3 changed files with 191 additions and 45 deletions

BIN
mpg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

225
script.js
View File

@ -131,6 +131,23 @@ var ROUTES = RoutePart([
], loadTop);
*/
var ROUTES = RoutePart(
[
[ match(/^spam_post$/)
, new RoutePart(
[
[ match(/^[0-9]+$/)
, new RoutePart([], showSpamPost)
]
]
, null
)
]
]
, handlePageRoot
);
/*
var ROUTES = RoutePart(
[
[ match(/^static$/)
@ -146,6 +163,7 @@ var ROUTES = RoutePart(
]
, null
);
*/
/**
* Functions
@ -346,12 +364,13 @@ function _mkelem(etype, child) {
return elem;
}
var div = _mkelem.bind(this, 'div');
var li = _mkelem.bind(this, 'li');
var span = _mkelem.bind(this, 'span');
var h3 = _mkelem.bind(this, 'h3');
var div = _mkelem.bind(this, 'div');
var li = _mkelem.bind(this, 'li');
var span = _mkelem.bind(this, 'span');
var italic = _mkelem.bind(this, 'i');
var bold = _mkelem.bind(this, 'b');
var ul = document.createElement.bind(document, 'ul');
var bold = _mkelem.bind(this, 'b');
var ul = _mkelem.bind(this, 'ul');
function magnetLinkHash(m) {
return m.split(':').slice(-1)[0];
@ -477,11 +496,19 @@ function caught(m, e) {
alert(new Error(m + e.message));
};
function renderReasons() {
return span(text('This is Why'));
}
function mkSpamImgElement(img_description) {
console.log(img_description);
var img_elem = document.createElement('img');
var mime = img_description.mimetype;
var thumb_url = `/bin/?path=${img_description.thumbnail}&mimetype=image/jpeg`
var thumb_url;
if (!img_description.thumbnail) {
thumb_url = `/bin/?path=${GlobalVars.settings.audio_mpeg_thumbnail_path}&mimetype=image/jpeg`
} else {
thumb_url = `/bin/?path=${img_description.thumbnail}&mimetype=image/jpeg`
}
var image_url = `/bin/?path=${img_description.filename}&mimetype=${mime}`
img_elem.setAttribute('src', thumb_url);
img_elem.setAttribute('decoding', 'async');
@ -490,34 +517,93 @@ function mkSpamImgElement(img_description) {
var a_elem = document.createElement('a');
a_elem.setAttribute('href', image_url);
a_elem.appendChild(img_elem);
var img_container_elem = document.createElement('div');
img_container_elem.appendChild(a_elem);
var img_container_elem = div(a_elem);
img_container_elem.classList.add('post--image_container');
return img_container_elem;
}
function renderPostElem(post) {
var postContainer = div();
postContainer.className = 'post';
var postElem = div();
postElem.classList.add('post--body_container');
postContainer.appendChild(postElem);
var bodyTextElem = div();
bodyTextElem.classList.add('post--body');
bodyTextElem.innerText = post.body;
post.known_spam_post_attachment.forEach(function(attachment) {
postElem.appendChild(mkSpamImgElement(attachment));
});
postElem.appendChild(bodyTextElem);
return postContainer;
}
var REASONS = {
RECENTLY_POSTED_ATTACHMENT_ABOVE_RATE: 1 << 0,
LEXICAL_ANALYSIS_SHOWS_NONSENSE: 1 << 1,
SEGMENTED_AVG_ENTROPY_TOO_HIGH: 1 << 2,
TEXT_MATCHES_KNOWN_SPAM: 1 << 3,
RECENTLY_POSTED_TEXT_ABOVE_RATE: 1 << 4,
TEXT_IS_URL: 1 << 5,
TEXT_IS_ONE_LONG_WORD: 1 << 6,
TEXT_IS_RANDOM_WORDS: 1 << 7
};
function reasonsFromBitmap(n) {
var reasons = new Set();
for (const [reason, bit] of Object.entries(REASONS)) {
if (n & bit) {
reasons.add(reason);
}
}
return reasons;
}
function renderOverviewPost(post) {
var postContainer = renderPostElem(post);
var reasons = ul();
reasonsFromBitmap(post.reason).forEach(function(r) {
reasons.appendChild(li(text(r)));
});
postContainer.appendChild(h3(text('Reasons:')));
postContainer.appendChild(div(reasons));
return postContainer;
}
function loadKnownSpamImages() {
pageInfoText.innerText = 'Loading known spam images';
pageInfoText.innerText = 'Loading known spam post';
cancelGlobalEvts();
var url = GlobalVars.settings.postgrest_url + '/known_spam_attachments'
//var url = GlobalVars.settings.postgrest_url + '/known_spam_post?select=*,known_spam_attachments(*)'
var url = GlobalVars.settings.postgrest_url + '/known_spam_post?select=*,known_spam_post_attachment(*)'
var headers = {
'Authorization': 'Bearer ' + GlobalVars.settings.jwt
};
return get(url, cancel, headers)
get(url, cancel, headers)
.then(function(response) {
console.log("have known spam images:", response);
var json = JSON.parse(response);
console.log("have known spam images:", json);
console.log("results for", url, json);
//console.log("have known spam images:", json);
pageInfoText.innerText = 'Have these known spam posts:';
var mainElem = document.querySelector('main');
mainElem.innerHTML = '';
json.forEach(function (post) {
var postElem = renderOverviewPost(post);
var imgTags = json.map(mkSpamImgElement);
imgTags.forEach(function(imgTag) {
document.querySelector('main').appendChild(imgTag);
postElem.addEventListener('click', function() {
changeUrl('/spam_post/' + post.text_post_id, null, true);
});
mainElem.appendChild(postElem);
});
pageInfoText.innerText = 'Have these known spam images:';
})
.catch(caught.bind(this, "Failed to load known spam images. Reason:"));
.catch(caught.bind(this, "Failed to load known spam posts. Reason:"));
}
function loadInfo(info_hash) {
@ -602,44 +688,79 @@ function loadResults(search_query) {
.catch(caught.bind(this, "Failed to results: "));
}
function changeUrl(path, search_query) {
function changeUrl(path, search_query, push_state) {
var event = new CustomEvent(
'urlchange',
{
detail: {
path: path,
query: search_query
query: search_query,
push_state: push_state,
}
});
window.dispatchEvent(event);
}
function searchInputHandler() {
var input = document.querySelector("input");
var btn = document.querySelector("button");
btn.addEventListener('click', function() {
var search_query = input.value;
window.history.pushState(null, "",
window.location.origin +
'/s?q=' + encodeURIComponent(search_query));
changeUrl('/s', { q: search_query });
});
input.addEventListener('keydown', function(e) {
if (e.keyCode === 13) {
e.preventDefault();
btn.click();
}
});
}
function handlePageRoot(_, query_params) {
console.log("handlePageRoot", query_params);
return loadKnownSpamImages();
}
function showSpamPost(path_data, _) {
console.log(path_data);
var post_id = path_data[1];
pageInfoText.innerText = 'Loading known spam post ' + post_id;
var url =
GlobalVars.settings.postgrest_url
+ '/known_spam_post?text_post_id=eq.' + post_id
+ '&select=*,known_spam_post_attachment(*)';
var headers = {
'Authorization': 'Bearer ' + GlobalVars.settings.jwt
};
var postSectionElem = document.createElement('section');
var mainElem = document.querySelector('main');
mainElem.innerHTML = '';
mainElem.appendChild(postSectionElem);
var h2 = document.createElement('h2');
h2.innerText = 'Known Spam Attachments';
mainElem.appendChild(postSectionElem);
mainElem.appendChild(h2);
var knownSpamAttachmentsSectionElem = document.createElement('section');
mainElem.append(knownSpamAttachmentsSectionElem);
get(url, cancel, headers)
.then(function(response) {
var json = JSON.parse(response);
console.log(json);
pageInfoText.innerText = 'Known Spam Post';
json.forEach(function(p) {
var postElem = renderPostElem(p);
postSectionElem.appendChild(postElem);
});
})
.catch(caught.bind(this, "Failed to load known spam post. Reason:"));
url =
GlobalVars.settings.postgrest_url
+ '/known_spam_attachments?post_id=eq.' + post_id;
get(url, cancel, headers)
.then(function(response) {
var json = JSON.parse(response);
console.log("known spam attachments:", json);
})
.catch(caught.bind(this, "Failed to load known spam attachments. Reason:"));
}
function handleSearch(_, query_params) {
var search_query = query_params.q;
@ -660,6 +781,15 @@ function handleInfo(parts, query_params) {
function onUrlChange(e) {
var path = e.detail.path.split('/').filter(function(s){ return s.length; });
console.log(e, e.detail, path);
if (e.detail.push_state) {
var params = Object.assign({ __path: e.detail.path }, e.detail.query);
var search_query = new URLSearchParams(params);
window.history.pushState(null, "",
window.location.origin + window.location.pathname + '?' + search_query.toString());
}
resolvePath(ROUTES, path, e.detail.query);
}
@ -696,8 +826,17 @@ function parseQueryParams(querystring) {
}
function onRealUrlChange() {
var path = window.location.pathname;
//var path = window.location.pathname;
var path;
var query_params = parseQueryParams(window.location.search.substring(1));
if (query_params.__path != null) {
path = query_params.__path;
console.log("NEW PATH", path);
} else {
path = '/';
}
changeUrl(path, query_params);
}

View File

@ -3,12 +3,12 @@ body {
}
header {
margin: 1em 4em;
margin: 1em 1em;
}
.post {
background-color: white;
margin: 1em 4em;
margin: 1em 1em;
box-shadow: .4em .4em .4em grey;
border: 1px solid grey;
padding: 1em;
@ -18,4 +18,11 @@ header {
background-color: #FFEEEE;
}
.post--image_container {
float: left;
margin-right: 1em;
}
.post--body_container {
display: flow-root;
}