You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
torrent-paradise/static/resultpage/main.js

74 lines
2.2 KiB
JavaScript

app = new Vue({
el: '#app',
data: {
results: undefined,
resultsFound: false,
showProgress: false,
progress: 0
},
methods: {
urlEncode: function (input) {
return encodeURIComponent(input)
}
}
})
let actionid = 0
let sessionid
let query
window.onmessage = function(e){
if (e.data.type == "results") {
let results = JSON.parse(e.data.results)
app.results = results.map((result) => {
result.length = formatBytes(result.len)
return result
})
app.resultsFound = true
setTimeout(updateSize,1)
} else if (e.data.type == "query") {
query = e.data.query
console.log("Query sent, sending limited anonymized telemetry.")
sendTelemetry({"query":query})
}
};
function updateSize(){
window.parent.postMessage(parseInt(document.body.scrollHeight),"*")
}
function formatBytes(a,b){if(0==a)return"0 Bytes";var c=1024,d=b||2,e=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],f=Math.floor(Math.log(a)/Math.log(c));return parseFloat((a/Math.pow(c,f)).toFixed(d))+" "+e[f]}
/**
* Sends telemetry payload, adds actionid and sessionid to it. IP is never logged.
*/
function sendTelemetry(payload){
payload.aid = actionid;
actionid = actionid + 1
if (sessionid == undefined){
sessionid = Math.round((Math.random()-0.5)*Math.pow(2,32))
payload.sid = sessionid;
}else{
payload.sid = sessionid;
}
fetch('/api/telemetry', {
method: 'POST',
body: JSON.stringify(payload)
})
}
/**
* Reports anonymized data about which result you picked. Smart result sorting is planned and I expect that screen resolution, language and OS will be critical in determining which result you prefer.
*/
function resultClicked(ih,name,s,l,len){
console.log("Result clicked, sending limited anonymized telemetry")
payload = {ih: ih, n: name, s: s, l:l, len: len}
payload.os = platform.os
payload.w = window.screen.width*window.devicePixelRatio
payload.h = window.screen.height*window.devicePixelRatio
payload.lang = navigator.language || navigator.userLanguage
payload.query = query
sendTelemetry(payload)
}