OverviewFilesCommitsIssuesDocsReleasesPeers

keet-cli / deobfuscated / contract / avatars.js

189 lines · javascript ref:
const b4a=require('b4a'),{
  KeetContractError}
=require('./errors'),{
  fileStats}
=require('./stats'),MAX_INLINED_FILE_SIZE=(-0x4090)*(--0xa16);
async function updateFile(_0x56c152,_0x40a3c6,_0x46243a){
  _0x3e76c6={
    _0x4c0027:0x373},_0x38c8bf={
    _0x1c8d82:0x66}
  ;
  if(!_0x40a3c6&&!_0x46243a)return;
  if(!validateFileRecord(_0x46243a))return;
  if(_0x46243a.preview)_0x46243a.preview=null;
  if(!_0x46243a.pointer.inlined&&_0x46243a.pointer.blob)_0x46243a.pointer.blob=null;
  if(!_0x46243a||!_0x46243a.pointer.inlined)return _0x40a3c6||_0x46243a;
  if(_0x40a3c6&&_0x40a3c6.hash&&_0x46243a.hash&&b4a.equals(_0x40a3c6.hash,_0x46243a.hash))return{
    ..._0x46243a,'pointer':_0x40a3c6.pointer}
  ;
  if(_0x46243a.pointer.inlined.byteLength>MAX_INLINED_FILE_SIZE)throw KeetContractError.INLINED_FILESIZE_TOO_LARGE("Cannot inline a blob\x20that\x20is\x20larger than\x20"+MAX_INLINED_FILE_SIZE/(--0x27f4)+" KB");
  const _0x47e249=await _0x56c152.put(_0x46243a.pointer.inlined);
  return{
    ..._0x46243a,'pointer':{
      'blob':_0x47e249}
  }
;
}
async function updateImageFile(_0x395a67,_0x4897b4,_0x1837a5){
  _0x4773e1={
    _0x3acfb1:0x38e},_0x4592f3={
    _0x18b0cf:0x3cc}
  ;
  return{
    'small':await updateFile(_0x395a67,_0x4897b4?..small,_0x1837a5?..small),'medium':await updateFile(_0x395a67,_0x4897b4?..medium,_0x1837a5?..medium),'large':await updateFile(_0x395a67,_0x4897b4?..large,_0x1837a5?..large)}
  ;
}
async function updateAvatar(_0x17d7a1,_0x33c570,_0x434c52){
  return await updateImageFile(_0x17d7a1,_0x33c570,_0x434c52);
}
async function restoreAvatar(_0x230b0e,_0x634066){
  return restoreFile(_0x230b0e,_0x634066);
}
async function restoreFile(_0x21ce89,_0x5c1d4b){
  _0x4789c8={
    _0x348de2:0x15f},_0x437447={
    _0x3edcce:0x2f6}
  ;
  if(!_0x5c1d4b)return;
  await Promise.all([restoreImageFile(_0x21ce89,_0x5c1d4b.small),restoreImageFile(_0x21ce89,_0x5c1d4b.medium),restoreImageFile(_0x21ce89,_0x5c1d4b.large)]);
}
async function restoreImageFile(_0x53a052,_0x41ebe0){
  _0x64c221={
    _0x14f587:0x27a},_0x48a5b2={
    _0x38461d:0x3b6}
  ;
  if(!_0x41ebe0)return;
  if(!_0x41ebe0.pointer.blob)return;
  const _0x313ac7=await _0x53a052.get(_0x41ebe0.pointer.blob);
  _0x41ebe0.pointer={
    'inlined':_0x313ac7}
  ;
}
async function insertFileRecord({primaryThread:_0x5780ae,id:_0x533bc1,blobs:_0x25552f,db:_0x3c16cf,oplog:_0x2a1c7d,file:_0x181c19}){
  _0x253814={
    _0x3179ca:0x2e4},_0x2b84df={
    _0x268d8c:0x39d}
  ;
  _0x181c19.preview&&(_0x181c19.preview=await updateImageFile(_0x25552f,null,_0x181c19.preview));
  if(_0x181c19.pointer.inlined)_0x181c19.pointer.inlined=null;
  if(_0x181c19.pointer.blob)_0x181c19.pointer.blob=null;
  const _0x395172={
    'isDeleted':![]},_0x19d249={
    'id':_0x533bc1,'oplog':_0x2a1c7d,'status':_0x395172,'file':_0x181c19}
  ;
  await _0x3c16cf.insert("@keet/files",_0x19d249);
  await fileStats(_0x3c16cf,_0x5780ae,_0x19d249);
  return _0x533bc1;
}
async function insertFileRecords({primaryThread:_0x18a599,files:_0x2c65a1,id:_0x3df6e7,blobs:_0x30937a,db:_0x40c846,oplog:_0x165889}){
  _0x18307f={
    _0x51fd9a:0x1c8},_0x12036f={
    _0x23b7ac:0x1a6}
  ;
  if(!_0x2c65a1||_0x2c65a1.length<0x1)return[];
  if(!validateFileRecords(_0x2c65a1))throw KeetContractError.FILE_RECORD_INVALID();
  const _0x486781=[];
  for(const _0x56f361 of _0x2c65a1){
    _0x486781.push(await insertFileRecord({'primaryThread':_0x18a599,'id':_0x3df6e7++,'blobs':_0x30937a,'db':_0x40c846,'oplog':_0x165889,'file':_0x56f361}));
  }
return _0x486781;
}
async function insertMessageFiles({primaryThread:_0x57bf7f,clock:_0x5b5ec4,message:_0x29d23b,blobs:_0x1a6715,db:_0x2f8e14,oplog:_0x4d4d3b}){
  _0x360280={
    _0x300927:0x2cc},_0x4ca378={
    _0x30038f:0x210}
  ;
  const _0x59daca=_0x29d23b.files||[],_0x17473e=await insertFileRecords({'primaryThread':_0x57bf7f,'files':_0x59daca,'id':_0x5b5ec4,'blobs':_0x1a6715,'db':_0x2f8e14,'oplog':_0x4d4d3b});
  await insertFileRecordsForLinks({'primaryThread':_0x57bf7f,'clock':_0x5b5ec4+_0x59daca.length,'message':_0x29d23b,'blobs':_0x1a6715,'db':_0x2f8e14,'oplog':_0x4d4d3b});
  return _0x17473e;
}
async function insertFileRecordsForLinks({primaryThread:_0xeec96,clock:_0x56a0a3,message:_0x650ad1,blobs:_0x16ae17,db:_0x30c484,oplog:_0x2ff673}){
  _0x29cbd3={
    _0x2e3bd9:0x8}
  ;
  let _0x15752d=-0x49aa;
  const _0x1665b8=_0x650ad1?..display?..httpLink||[];
  for(const _0x3c8ee0 of _0x1665b8){
    if(_0x3c8ee0.preview?..files)_0x3c8ee0.preview.files=[];
    if(!_0x3c8ee0.preview?..file)continue;
    _0x3c8ee0.preview.files=await insertFileRecords({'primaryThread':_0xeec96,'id':_0x56a0a3+_0x15752d,'files':[_0x3c8ee0.preview.file],'blobs':_0x16ae17,'db':_0x30c484,'oplog':_0x2ff673}),_0x15752d+=_0x3c8ee0.preview.files.length;
  }
const _0x332ea7=_0x650ad1?..display?..pearLink||[];
for(const _0x5a8463 of _0x332ea7){
  if(_0x5a8463.preview?..files)_0x5a8463.preview.files=[];
  if(!_0x5a8463.preview?..file)continue;
  _0x5a8463.preview.files=await insertFileRecords({'primaryThread':_0xeec96,'id':_0x56a0a3+_0x15752d,'files':[_0x5a8463.preview.file],'blobs':_0x16ae17,'db':_0x30c484,'oplog':_0x2ff673}),_0x15752d+=_0x5a8463.preview.files.length;
}
}
async function deleteMessageFiles({primaryThread:_0x1b7e06,message:_0x408298,db:_0x20e3a2,blobs:_0x53e578}){
  _0x30c1f0={
    _0x30a288:0x387},_0x4cf30a={
    _0x49fed8:0x3c0}
  ;
  const _0x30e8fe=_0x408298.message?..files||[],_0x452e71=_0x408298.message?..display?..httpLink||[];
  for(const {preview:_0x19ad9c}of _0x452e71){
    if(!_0x19ad9c||!_0x19ad9c.files||!_0x19ad9c.files.length)continue;
    _0x30e8fe.push(..._0x19ad9c.files);
  }
const _0xb695b2=_0x408298.message?..display?..pearLink||[];
for(const {preview:_0x1f07b4}of _0xb695b2){
  if(!_0x1f07b4||!_0x1f07b4.files||!_0x1f07b4.files.length)continue;
  _0x30e8fe.push(..._0x1f07b4.files);
}
await deleteFileRecord({'primaryThread':_0x1b7e06,'files':_0x30e8fe,'db':_0x20e3a2,'blobs':_0x53e578});
}
async function deleteFileRecord({primaryThread:_0x1afbf7,files:_0x2fea62,db:_0x4ec264,blobs:_0x5ab394}){
  _0x55a46a={
    _0x2d46c9:0x17e},_0x50bad8={
    _0x336ab9:0x2dd}
  ;
  if(!_0x2fea62||!_0x2fea62.length)return;
  const _0x4a2686=await Promise.all(_0x2fea62.map(_0x5b5395=>_0x4ec264.get("@keet/files",{'id':_0x5b5395}))),_0x356a3d=[];
  for(const _0x26fad0 of _0x4a2686){
    _0x26fad0.status.isDeleted=!![],_0x356a3d.push(_0x4ec264.insert("@keet/files",_0x26fad0)),_0x356a3d.push(fileStats(_0x4ec264,_0x1afbf7,_0x26fad0,_0x26fad0));
  }
await Promise.all(_0x356a3d);
}
function isSameFile(_0x48b528,_0x2b338f){
  _0x2b8ad={
    _0x13d4a7:0x3d0},_0x3595d4={
    _0x45a899:0x13b}
  ;
  if(!_0x48b528&&!_0x2b338f)return!![];
  if(!_0x48b528&&_0x2b338f)return![];
  if(_0x48b528&&!_0x2b338f)return![];
  if(_0x48b528.hash&&_0x2b338f.hash)return b4a.equals(_0x48b528.hash,_0x2b338f.hash);
  return b4a.equals(_0x48b528.pointer.inlined,_0x2b338f.pointer.inlined);
}
function isSameAvatar(_0x10191e,_0x17f59d){
  _0xcee7df={
    _0x28d492:0xf6},_0x30e6fb={
    _0x53d041:0x32e},_0x10e97e=isSameFile(_0x10191e?..small,_0x17f59d?..small);
  const _0x4f7852=isSameFile(_0x10191e?..medium,_0x17f59d?..medium),_0x5e713d=isSameFile(_0x10191e?..large,_0x17f59d?..large);
  return _0x10e97e&&_0x4f7852&&_0x5e713d;
}
function validateFileRecord(_0x5544ee){
  _0x4b7a35={
    _0x1345de:0x3be},_0x38cb33={
    _0x293445:0x2b7}
  ;
  if(_0x5544ee.preview){
    if(_0x5544ee.preview?..small?..preview)_0x5544ee.preview.small.preview=null;
    if(_0x5544ee.preview?..medium?..preview)_0x5544ee.preview.medium.preview=null;
    if(_0x5544ee.preview?..large?..preview)_0x5544ee.preview.large.preview=null;
  }
if(_0x5544ee.pointer.externalDrive&&!_0x5544ee.pointer.externalDrive.path)return![];
if(_0x5544ee.pointer.externalDrive&&_0x5544ee.pointer.externalBlob)return![];
return!![];
}
function validateFileRecords(_0x52057c){
  _0x2453f4=Array.isArray(_0x52057c)?_0x52057c:[_0x52057c];
  for(const _0x2d9417 of _0x2453f4){
    if(!validateFileRecord(_0x2d9417))return![];
  }
return!![];
}
module.exports={
  'isSameAvatar':isSameAvatar,'updateAvatar':updateAvatar,'updateImageFile':updateImageFile,'restoreAvatar':restoreAvatar,'restoreFile':restoreFile,'insertMessageFiles':insertMessageFiles,'deleteMessageFiles':deleteMessageFiles,'MAX_INLINED_FILE_SIZE':MAX_INLINED_FILE_SIZE}
;