Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.5 KiB
52 lines
1.5 KiB
import apiManager from "./apiManager"; |
|
import AppStorage from '../storage'; |
|
import cryptoWorker from "../crypto/cryptoworker"; |
|
import networkerFactory from "./networkerFactory"; |
|
|
|
//const ctx: Worker = self as any; |
|
const ctx = self; |
|
|
|
//console.error('INCLUDE !!!', new Error().stack); |
|
|
|
networkerFactory.setUpdatesProcessor((obj, bool) => { |
|
ctx.postMessage({update: {obj, bool}}); |
|
}); |
|
|
|
ctx.onmessage = function(e) { |
|
var taskID = e.data.taskID; |
|
|
|
if(e.data.useLs) { |
|
AppStorage.finishTask(e.data.taskID, e.data.args); |
|
return; |
|
} |
|
|
|
switch(e.data.task) { |
|
case 'unzip': |
|
return cryptoWorker.gzipUncompress.apply(cryptoWorker, e.data.args).then(result => { |
|
ctx.postMessage({taskID: taskID, result: result}); |
|
}); |
|
|
|
default: { |
|
try { |
|
let result = apiManager[e.data.task].apply(apiManager, e.data.args); |
|
if(result instanceof Promise) { |
|
result.then(result => { |
|
//console.log(e.data.task + ' result:', result, taskID); |
|
ctx.postMessage({taskID: taskID, result: result}); |
|
}).catch(err => { |
|
//console.error(e.data.task + ' err:', err, taskID); |
|
ctx.postMessage({taskID: taskID, error: err}); |
|
}); |
|
} else { |
|
ctx.postMessage({taskID: taskID, result: result}); |
|
} |
|
} catch(err) { |
|
ctx.postMessage({taskID: taskID, error: err}); |
|
} |
|
|
|
//throw new Error('Unknown task: ' + e.data.task); |
|
} |
|
} |
|
} |
|
|
|
ctx.postMessage('ready');
|
|
|