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}
;