Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function save_deleted_messages(as_json){
- if (as_json){
- vkopt.save_file(JSON.stringify(vk_deleted_messages,'', ' '), 'deleted_messages'+vk.id+' '+(new Date())+'.json');
- } else {
- vkopt.messages.export_data(vk_deleted_messages);
- }
- }
- function search_deleted_messages(){
- var get_last_msg_id = function(cb){
- dApi.call('messages.getDialogs', {count:1, v:'5.73'}, function(r){
- cb(((((r.response || {}).items || [])[0] || {}).message || {}).id)
- })
- }
- window.vk_deleted_messages = [];
- var msg = window.vk_deleted_messages;
- var del_ids = [];
- var restored = 0;
- var restoring = false;
- var last_msg = 0;
- var offset = 0;
- var collect = function(cb){
- var ids = [];
- var PER_REQ = 50;
- var PER_EXEC = 10;
- for (var i = 0; (i < PER_REQ * PER_EXEC) && (offset > 0); i++)
- ids.push(offset--);
- var code = [];
- while(ids.length)
- code.push('API.messages.getById({"message_ids":"'+ids.splice(0,PER_REQ).join(',')+'"}).items');
- code = 'return ' + code.join('+') + ';'
- dApi.call('execute', {code: code, v:'5.73'}, function(r){
- if (r && r.response){
- r.response.forEach(function(item, idx){
- if (item.deleted){
- msg.push(item);
- del_ids.push(item.id);
- }
- })
- ge('vk_scan_msg').innerHTML =
- (offset > 0 ? vkProgressBar(last_msg - offset, last_msg, 310, IDL('msgreq') + ' %')+'<br><br>' : '')+
- 'deleted found: <b>' + msg.length + '</b><br>'+
- (msg.length > 0 ?
- '<div class="button_blue"><button onclick="save_deleted_messages()">save '+msg.length+' messages (.html)</button></div><br>'+
- '<div class="button_gray"><button onclick="save_deleted_messages(true)">save '+msg.length+' raw messages (.json)</button></div><br/>' : '')+
- (offset > 0 ? 'cur msg id:' + offset : '');
- if (!restoring){
- ge('vk_restore_msg').innerHTML = restored > 0 ? 'Restored: <b>' + restored + '</b>' : '';
- var r_btn = se('<div class="button_blue"><button>try restore '+del_ids.length+' messages</button></div>');
- ge('vk_restore_msg').appendChild(r_btn);
- addEvent(r_btn, 'click', function(ev){
- restore();
- });
- }
- if (offset > 0){
- //console.log('ESTIMATED IDs: ', offset);
- setTimeout(function(){collect(cb)},300);
- } else {
- cb();
- }
- } else {
- console.log('API EXEC FAILED: ', code);
- }
- })
- }
- var restore = function(){
- if (!del_ids.length){
- alert('Nothing to restore');
- return;
- }
- ge('vk_restore_msg').innerHTML = 'Preparing to restore...';
- restoring = true;
- var total = del_ids.length;
- var code = [];
- for (var i = 0; i < 15 && del_ids.length; i++)
- code.push('API.messages.restore({message_id:'+del_ids.shift()+'})');
- code = 'return [ ' + code.join(',') + ' ];'
- dApi.call('execute', {code: code, v:'5.73'}, function(r){
- if (r && r.response){
- restored += r.response.filter(function(item){return item}).length;
- ge('vk_restore_msg').innerHTML = vkProgressBar(total - del_ids.length, total, 310, 'Restoring... %') + '<br><br>' +
- 'Restored: <b>' + restored + '</b>';
- } else {
- console.log('API EXEC RESTORE FAILED: ', code);
- }
- if (del_ids.length){
- restore();
- } else {
- restoring = false;
- ge('vk_restore_msg').innerHTML = 'Restored: <b>' + restored + '</b>';
- }
- })
- }
- var box = new MessageBox({
- title : IDL('ScanMessages'),
- closeButton : true,
- width : "350px"
- });
- box.removeButtons();
- box.addButton(IDL('Cancel'), function (r) {
- abort = true;
- box.hide();
- }, 'no');
- var html = '<div id="vk_scan_msg">Starting process...</div><div id="vk_restore_msg"></div>';
- box.content(html).show();
- get_last_msg_id(function(id){
- if (!id){
- alert('Nothing...');
- return;
- }
- last_msg = id;
- offset = id;
- collect(function(){
- alert('done');
- })
- });
- }
- search_deleted_messages();
Add Comment
Please, Sign In to add comment