mirror of
https://github.com/9001/copyparty.git
synced 2025-08-16 16:42:13 -06:00
add support for up2k hooks
This commit is contained in:
parent
095bd17d10
commit
76b1857e4e
45
contrib/plugins/up2k-hooks.js
Normal file
45
contrib/plugins/up2k-hooks.js
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
// hooks into up2k
|
||||||
|
|
||||||
|
function up2k_namefilter(good_files, nil_files, bad_files, hooks) {
|
||||||
|
// is called when stuff is dropped into the browser,
|
||||||
|
// after iterating through the directory tree and discovering all files,
|
||||||
|
// before the upload confirmation dialogue is shown
|
||||||
|
|
||||||
|
// good_files will successfully upload
|
||||||
|
// nil_files are empty files and will show an alert in the final hook
|
||||||
|
// bad_files are unreadable and cannot be uploaded
|
||||||
|
var file_lists = [good_files, nil_files, bad_files];
|
||||||
|
|
||||||
|
// build a list of filenames
|
||||||
|
var filenames = [];
|
||||||
|
for (var lst of file_lists)
|
||||||
|
for (var ent of lst)
|
||||||
|
filenames.push(ent[1]);
|
||||||
|
|
||||||
|
toast.inf(5, "running database query...");
|
||||||
|
|
||||||
|
// simulate delay while passing the list to some api for checking
|
||||||
|
setTimeout(function () {
|
||||||
|
|
||||||
|
// only keep webm files as an example
|
||||||
|
var new_lists = [];
|
||||||
|
for (var lst of file_lists) {
|
||||||
|
var keep = [];
|
||||||
|
new_lists.push(keep);
|
||||||
|
|
||||||
|
for (var ent of lst)
|
||||||
|
if (/\.webm$/.test(ent[1]))
|
||||||
|
keep.push(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
// finally, call the next hook in the chain
|
||||||
|
[good_files, nil_files, bad_files] = new_lists;
|
||||||
|
hooks[0](good_files, nil_files, bad_files, hooks.slice(1));
|
||||||
|
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
// register
|
||||||
|
up2k_hooks.push(function () {
|
||||||
|
up2k.gotallfiles.unshift(up2k_namefilter);
|
||||||
|
});
|
|
@ -15,6 +15,7 @@ function goto_up2k() {
|
||||||
// chrome requires https to use crypto.subtle,
|
// chrome requires https to use crypto.subtle,
|
||||||
// usually it's undefined but some chromes throw on invoke
|
// usually it's undefined but some chromes throw on invoke
|
||||||
var up2k = null,
|
var up2k = null,
|
||||||
|
up2k_hooks = [],
|
||||||
sha_js = window.WebAssembly ? 'hw' : 'ac', // ff53,c57,sa11
|
sha_js = window.WebAssembly ? 'hw' : 'ac', // ff53,c57,sa11
|
||||||
m = 'will use ' + sha_js + ' instead of native sha512 due to';
|
m = 'will use ' + sha_js + ' instead of native sha512 due to';
|
||||||
|
|
||||||
|
@ -578,6 +579,12 @@ function fsearch_explain(n) {
|
||||||
|
|
||||||
|
|
||||||
function up2k_init(subtle) {
|
function up2k_init(subtle) {
|
||||||
|
var r = {
|
||||||
|
"init_deps": init_deps,
|
||||||
|
"set_fsearch": set_fsearch,
|
||||||
|
"gotallfiles": [gotallfiles] // hooks
|
||||||
|
};
|
||||||
|
|
||||||
function showmodal(msg) {
|
function showmodal(msg) {
|
||||||
ebi('u2notbtn').innerHTML = msg;
|
ebi('u2notbtn').innerHTML = msg;
|
||||||
ebi('u2btn').style.display = 'none';
|
ebi('u2btn').style.display = 'none';
|
||||||
|
@ -696,6 +703,10 @@ function up2k_init(subtle) {
|
||||||
var pvis = new U2pvis("bz", '#u2cards', uc),
|
var pvis = new U2pvis("bz", '#u2cards', uc),
|
||||||
donut = new Donut(uc, st);
|
donut = new Donut(uc, st);
|
||||||
|
|
||||||
|
r.ui = pvis;
|
||||||
|
r.st = st;
|
||||||
|
r.uc = uc;
|
||||||
|
|
||||||
var bobslice = null;
|
var bobslice = null;
|
||||||
if (window.File)
|
if (window.File)
|
||||||
bobslice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;
|
bobslice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;
|
||||||
|
@ -906,7 +917,8 @@ function up2k_init(subtle) {
|
||||||
|
|
||||||
if (!dirs.length) {
|
if (!dirs.length) {
|
||||||
if (!pf.length)
|
if (!pf.length)
|
||||||
return gotallfiles(good, nil, bad);
|
// call first hook, pass list of remaining hooks to call
|
||||||
|
return r.gotallfiles[0](good, nil, bad, r.gotallfiles.slice(1));
|
||||||
|
|
||||||
console.log("retry pf, " + pf.length);
|
console.log("retry pf, " + pf.length);
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
|
@ -2123,7 +2135,12 @@ function up2k_init(subtle) {
|
||||||
if (parallel_uploads < 1)
|
if (parallel_uploads < 1)
|
||||||
bumpthread(1);
|
bumpthread(1);
|
||||||
|
|
||||||
return { "init_deps": init_deps, "set_fsearch": set_fsearch, "ui": pvis, "st": st, "uc": uc }
|
setTimeout(function () {
|
||||||
|
for (var a = 0; a < up2k_hooks.length; a++)
|
||||||
|
up2k_hooks[a]();
|
||||||
|
}, 1);
|
||||||
|
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue