const _0x43740e=(function(){let _0x33a748=!![];return function(_0x429c12,_0x3758ca){_0x249c7f=_0x33a748?function(){if(_0x3758ca){const _0x31b20d=_0x3758ca.apply(_0x429c12,arguments);return _0x3758ca=null,_0x31b20d;}}:function(){};return _0x33a748=![],_0x249c7f;};}()),_0x1c9848=_0x43740e(this,function(){_0x174396={_0xcb7bb1:0x353},_0x1908ab={_0x3d9e4e:0x4b};return _0x1c9848.toString().search("(((.+)+)+)+$").toString().constructor(_0x1c9848).search("(((.+)+)+)+$");});
_0x1c9848();
const {
contract:{
hyperschema:{
getEnum:getContractEnum}
}
}
=require('../../../spec'),{
Task}
=require('../task');
const b4a=require('b4a'),RoomType=getContractEnum("@keet/room-type"),RoomUpdater=require('../../sync/updater'),{
roomsStats}
=require('../../contract/stats/local');
module.exports=class CreateRoomTask extends Task{
constructor(_0xc11fe){
_0x1bdf57={
_0x58d9a7:0x5a,_0x45792e:0x36f},_0x1539e0={
_0x2f0f2f:0xd2,_0x146e51:0x120,_0x30f950:0x3bc}
;
super(_0xc11fe);
const _0x4e21b1=this.description.createRoom;
this._key=_0x4e21b1.roomKey;
this._mailbox=_0x4e21b1.mailbox,this._keyPair=_0x4e21b1.keyPair,this._genesis=_0x4e21b1.genesis,this._fastForwardTo=_0x4e21b1.fastForwardTo,this._encryptionKey=_0x4e21b1.encryptionKey,this._isPrivateProfile=_0x4e21b1.isPrivateProfile,this._room=null,this._updater=null;
this._privateProfile=null;
}
async._close(){
_0x2dc886={
_0x424653:0x79,_0x4b8b5c:0x73d,_0x20c211:0x131},_0xa69c7c={
_0x29de11:0x17,_0x12e878:0x4b3}
;
if(this._updater)await this._updater.close();
if(this._room)this.keet.internalReleaseRoom(this._room);
if(this._privateProfile)this.keet.internalReleaseRoom(this._privateProfile);
}
async._save(){
_0x30363c={
_0x565fa3:0xbf,_0x57cb20:0xcc,_0x5d67f1:0x3a3},_0x1249ec={
_0x49042f:0x78,_0x4a0462:0x0}
;
const _0x1a10f8=await this.keet.internalEnterLocalTransaction();
try{
const _0x38db0a=await _0x1a10f8.get("@local/rooms",this._updater.roomInfo);
await _0x1a10f8.insert("@local/rooms",this._updater.roomInfo),await roomsStats(_0x1a10f8,this._updater.roomInfo,_0x38db0a),await _0x1a10f8.flush();
}finally{
await this.keet.internalExitLocalTransaction();
}
}
._getDmMemberKey(){
_0x1045cb={
_0x44cf1f:0x4b,_0x634550:0x321},_0x4e1ee9={
_0x3de0a5:0x179,_0x2607d0:0x97}
;
if(this._genesis.digest.settings.roomType!==RoomType.DirectMessage)return null;
for(const {attestation:_0x1f71f1}of this._genesis.initialMembers){
if(b4a.equals(_0x1f71f1.memberKey,this._genesis.bootstrapDevice.attestation.memberKey))continue;
return _0x1f71f1.memberKey;
}
}
._maybeEmitEvents(){
_0x246036={
_0x5c6067:0x191,_0x2ff6c4:0x382,_0x3f5943:0x1c1},_0x4f6f62={
_0x4ae4d1:0x16,_0x4d2ef1:0x17f}
;
this.keet.emit("room-changed",this._room.id);
}
async._create(){
_0x14fdbd={
_0x1fbadc:0xbe,_0x1abb31:0x43d,_0x2ec1f4:0x76},_0x2470a6={
_0x1e4213:0x12b,_0x28ce61:0x2e4}
;
await this._room.ready();
if(this.closing)return;
let _0x52c4cb=this._genesis.bootstrapDevice;
let _0x201db8=this._genesis.initialMembers;
if(!_0x52c4cb){
const _0x249280=await this.keet.internalGetIdentityInfo();
if(this.closing)return;
_0x52c4cb=this.keet.internalCreateDeviceUpdate(_0x249280,this._room.deviceKey),_0x201db8=[this.keet.internalGetMemberUpdate(_0x249280)];
}
await this._room.dispatch("@keet/genesis",{...this._genesis,'bootstrapDevice':_0x52c4cb,'initialMembers':_0x201db8}),this._updater=new RoomUpdater(this.keet,this._room.base.view,this._room.base,null);
const _0x38c456=await this._updater.run();
if(this.closing||!_0x38c456)return;
await this._save();
if(this.closing)return;
if(this._privateProfile){
const _0x26bfbf=this._room.base.getSystemKey(),_0xf800e9={
'key':this._room.base.local.key,'length':this._room.base.local.length}
;
await this._privateProfile.dispatch("@keet-private-id/add-room",{'roomKey':this._room.key,'encryptionKey':this._room.encryptionKey,'mailbox':this._mailbox,'fastForwardTo':_0x26bfbf,'initiator':_0xf800e9,'dm':this._getDmMemberKey()});
}
this._maybeEmitEvents();
}
async._run(){
_0x5204ba={
_0x3b387a:0x146,_0x1aa455:0x605,_0x3da479:0x141},_0x32ea8a={
_0xbee438:0x2f6}
;
this._room=this.keet.internalOpenRoom(this._key,this._encryptionKey,{'fastForwardTo':this._fastForwardTo,'keyPair':this._keyPair,'mailbox':this._mailbox});
if(!this._isPrivateProfile){
const _0x50289e=await this.local.get("@local/identity");
this._privateProfile=this.keet.internalOpenExistingRoom(_0x50289e.privateProfileKey);
}
await this._create();
}
}
;