Preserves messages and files auto-removed by Volafile and prevents navigation to front page on room closure.
// ==UserScript==
// @name Volafile Unremover
// @author Arnold François Lecherche and a Vola anon named Adonis
// @namespace greasyfork.org
// @icon https://volafile.org/favicon.ico
// @version 1.09
// @description Preserves messages and files auto-removed by Volafile and prevents navigation to front page on room closure.
// @include http://volafile.org/*
// @include http://*.volafile.org/*
// @include https://volafile.org/*
// @include https://*.volafile.org/*
// @grant none
// @run-at document-end
// @copyright 2020 Arnold François Lecherche
// ==/UserScript==
(function (w, d) {
'use strict';
var e, v, c, g;
function removeMessages(t) {
var obj = ['messages', 'queued_messages'], i = obj.length, msg, j;
while (i--) {
msg = c[obj[i]];
j = msg.length;
while (j--) if (t.msgIds.indexOf(msg[j].data.id) !== -1) {
msg[j].elem.style.opacity = '.4';
msg[j].elem.style.textDecoration = 'line-through';
}
}
}
function delete_file(t) {
var file = e.filelist.files_by_id[t];
file.dom.fileElement.style.opacity = '.2';
file.dom.fileElement.getElementsByTagName('a')[0].style.textDecoration = 'line-through';
c.showMessage('YourMom', 'File deleted: ' + file.name + ' [' + JSON.stringify(file.tags) + ']', {'dontsave': true, 'staff': true});
}
function navigate(e) {
c.showMessage('Script', 'Intercepted auto-navigation to "' + e + '".', {'dontsave': false, 'staff': true});
}
function reload(e) {
c.showMessage('Script', 'Intercepted force-reload.', {'dontsave': true, 'staff': true});
}
function config(t) {
var keys = Object.keys(t), old = (keys.length === 1 && w.config[keys[0]]) ? ' from {"' + keys[0] + '":' + JSON.stringify(w.config[keys[0]]) + '} ' : '';
if (keys.length < 20) c.showMessage('Config', 'changed ' + old + 'to ' + JSON.stringify(t), {'dontsave': true, 'staff': true});
g(t);
}
function init() {
var n;
e = w.RoomInstance.extensions;
n = e.connection;
n.navigate = navigate;
v = n._events;
v.removeMessages = removeMessages;
v.delete_file = delete_file;
v.forceReload[0] = reload;
g = v.config;
v.config = config;
c = e.chat;
c.showMessage('Script', 'Volafile spy mode', {'dontsave': true, 'staff': true});
}
w.addEventListener('load', init, false);
})(window, document);