"use strict";(self.webpackChunkelement_web=self.webpackChunkelement_web||[]).push([[485],{"./node_modules/matrix-js-sdk/src/crypto/store/base.ts":(e,s,t)=>{t.d(s,{Il:()=>n,Nv:()=>o,oT:()=>r});const o="migrationState";let n=function(e){return e[e.NOT_STARTED=0]="NOT_STARTED",e[e.INITIAL_DATA_MIGRATED=1]="INITIAL_DATA_MIGRATED",e[e.OLM_SESSIONS_MIGRATED=2]="OLM_SESSIONS_MIGRATED",e[e.MEGOLM_SESSIONS_MIGRATED=3]="MEGOLM_SESSIONS_MIGRATED",e[e.ROOM_SETTINGS_MIGRATED=4]="ROOM_SETTINGS_MIGRATED",e[e.INITIAL_OWN_KEY_QUERY_DONE=5]="INITIAL_OWN_KEY_QUERY_DONE",e}({});const r=50},"./node_modules/matrix-js-sdk/src/crypto/store/indexeddb-crypto-store.ts":(e,s,t)=>{t.d(s,{y:()=>E});var o=t("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),n=t("./node_modules/matrix-js-sdk/src/logger.ts"),r=t("./node_modules/matrix-js-sdk/src/crypto/store/localStorage-crypto-store.ts"),i=t("./node_modules/matrix-js-sdk/src/crypto/store/memory-crypto-store.ts"),c=t("./node_modules/matrix-js-sdk/src/crypto/store/base.ts");class d{constructor(e){(0,o.A)(this,"nextTxnId",0),this.db=e,e.onversionchange=()=>{n.vF.log(`versionchange for indexeddb ${this.db.name}: closing`),e.close()}}async containsData(){throw Error("Not implemented for Backend")}async startup(){return this}async deleteAllData(){throw Error("This is not implemented, call IDBFactory::deleteDatabase(dbName) instead.")}async getMigrationState(){let e=c.Il.NOT_STARTED;return await this.doTxn("readonly",[E.STORE_ACCOUNT],s=>{const t=s.objectStore(E.STORE_ACCOUNT).get(c.Nv);t.onsuccess=()=>{var s;e=null!==(s=t.result)&&void 0!==s?s:c.Il.NOT_STARTED}}),e}async setMigrationState(e){await this.doTxn("readwrite",[E.STORE_ACCOUNT],s=>{s.objectStore(E.STORE_ACCOUNT).put(e,c.Nv)})}getAccount(e,s){const t=e.objectStore("account").get("-");t.onsuccess=function(){try{s(t.result||null)}catch(s){l(e,s)}}}storeAccount(e,s){e.objectStore("account").put(s,"-")}getCrossSigningKeys(e,s){const t=e.objectStore("account").get("crossSigningKeys");t.onsuccess=function(){try{s(t.result||null)}catch(s){l(e,s)}}}getSecretStorePrivateKey(e,s,t){const o=e.objectStore("account").get(`ssss_cache:${t}`);o.onsuccess=function(){try{s(o.result||null)}catch(s){l(e,s)}}}storeSecretStorePrivateKey(e,s,t){e.objectStore("account").put(t,`ssss_cache:${s}`)}countEndToEndSessions(e,s){const t=e.objectStore("sessions").count();t.onsuccess=function(){try{s(t.result)}catch(s){l(e,s)}}}getEndToEndSessions(e,s,t){const o=s.objectStore("sessions").index("deviceKey").openCursor(e),n={};o.onsuccess=function(){const e=o.result;if(e)n[e.value.sessionId]={session:e.value.session,lastReceivedMessageTs:e.value.lastReceivedMessageTs},e.continue();else try{t(n)}catch(e){l(s,e)}}}getEndToEndSession(e,s,t,o){const n=t.objectStore("sessions").get([e,s]);n.onsuccess=function(){try{n.result?o({session:n.result.session,lastReceivedMessageTs:n.result.lastReceivedMessageTs}):o(null)}catch(e){l(t,e)}}}storeEndToEndSession(e,s,t,o){o.objectStore("sessions").put({deviceKey:e,sessionId:s,session:t.session,lastReceivedMessageTs:t.lastReceivedMessageTs})}async getEndToEndSessionsBatch(){const e=[];return await this.doTxn("readonly",[E.STORE_SESSIONS],s=>{const t=s.objectStore(E.STORE_SESSIONS).openCursor();t.onsuccess=function(){try{const s=t.result;s&&(e.push(s.value),e.length{try{const t=s.objectStore(E.STORE_SESSIONS);for(const{deviceKey:s,sessionId:o}of e){const e=t.delete([s,o]);await new Promise(s=>{e.onsuccess=s})}}catch(e){l(s,e)}})}getEndToEndInboundGroupSession(e,s,t,o){let n=!1,r=!1;const i=t.objectStore("inbound_group_sessions").get([e,s]);i.onsuccess=function(){try{n=i.result?i.result.session:null,!1!==r&&o(n,r)}catch(e){l(t,e)}};const c=t.objectStore("inbound_group_sessions_withheld").get([e,s]);c.onsuccess=function(){try{r=c.result?c.result.session:null,!1!==n&&o(n,r)}catch(e){l(t,e)}}}storeEndToEndInboundGroupSession(e,s,t,o){o.objectStore("inbound_group_sessions").put({senderCurve25519Key:e,sessionId:s,session:t})}async countEndToEndInboundGroupSessions(){let e=0;return await this.doTxn("readonly",[E.STORE_INBOUND_GROUP_SESSIONS],s=>{const t=s.objectStore(E.STORE_INBOUND_GROUP_SESSIONS).count();t.onsuccess=()=>{e=t.result}}),e}async getEndToEndInboundGroupSessionsBatch(){const e=[];return await this.doTxn("readonly",[E.STORE_INBOUND_GROUP_SESSIONS,E.STORE_BACKUP],s=>{const t=s.objectStore(E.STORE_INBOUND_GROUP_SESSIONS),o=s.objectStore(E.STORE_BACKUP),n=t.openCursor();n.onsuccess=function(){try{const s=n.result;if(s){const t=o.get(s.key);t.onsuccess=()=>{e.push({senderKey:s.value.senderCurve25519Key,sessionId:s.value.sessionId,sessionData:s.value.session,needsBackup:void 0!==t.result}),e.length{try{const t=s.objectStore(E.STORE_INBOUND_GROUP_SESSIONS);for(const{senderKey:s,sessionId:o}of e){const e=t.delete([s,o]);await new Promise(s=>{e.onsuccess=s})}}catch(e){l(s,e)}})}getEndToEndDeviceData(e,s){const t=e.objectStore("device_data").get("-");t.onsuccess=function(){try{s(t.result||null)}catch(s){l(e,s)}}}getEndToEndRooms(e,s){const t={},o=e.objectStore("rooms").openCursor();o.onsuccess=function(){const n=o.result;if(n)t[n.key]=n.value,n.continue();else try{s(t)}catch(s){l(e,s)}}}async markSessionsNeedingBackup(e,s){s||(s=this.db.transaction("sessions_needing_backup","readwrite"));const t=s.objectStore("sessions_needing_backup");await Promise.all(e.map(e=>new Promise((s,o)=>{const n=t.put({senderCurve25519Key:e.senderKey,sessionId:e.sessionId});n.onsuccess=s,n.onerror=o})))}doTxn(e,s,t,o=n.vF){const r=this.db.transaction(s,e),i=function(e){return new Promise((s,t)=>{e.oncomplete=()=>{void 0!==e._mx_abortexception&&t(e._mx_abortexception),s(null)},e.onerror=s=>{void 0!==e._mx_abortexception?t(e._mx_abortexception):(n.vF.log("Error performing indexeddb txn",s),t(e.error))},e.onabort=s=>{void 0!==e._mx_abortexception?t(e._mx_abortexception):(n.vF.log("Error performing indexeddb txn",s),t(e.error))}})}(r),c=t(r);return i.then(()=>c)}}const a=[e=>{!function(e){const s=e.createObjectStore("outgoingRoomKeyRequests",{keyPath:"requestId"});s.createIndex("session",["requestBody.room_id","requestBody.session_id"]),s.createIndex("state","state")}(e)},e=>{e.createObjectStore("account")},e=>{e.createObjectStore("sessions",{keyPath:["deviceKey","sessionId"]}).createIndex("deviceKey","deviceKey")},e=>{e.createObjectStore("inbound_group_sessions",{keyPath:["senderCurve25519Key","sessionId"]})},e=>{e.createObjectStore("device_data")},e=>{e.createObjectStore("rooms")},e=>{e.createObjectStore("sessions_needing_backup",{keyPath:["senderCurve25519Key","sessionId"]})},e=>{e.createObjectStore("inbound_group_sessions_withheld",{keyPath:["senderCurve25519Key","sessionId"]})},e=>{e.createObjectStore("session_problems",{keyPath:["deviceKey","time"]}).createIndex("deviceKey","deviceKey"),e.createObjectStore("notified_error_devices",{keyPath:["userId","deviceId"]})},e=>{e.createObjectStore("shared_history_inbound_group_sessions",{keyPath:["roomId"]})},e=>{e.createObjectStore("parked_shared_history",{keyPath:["roomId"]})}],u=a.length;function l(e,s){e._mx_abortexception=s;try{e.abort()}catch{}}var S=t("./node_modules/matrix-js-sdk/src/errors.ts"),h=t("./node_modules/matrix-js-sdk/src/indexeddb-helpers.ts");class E{static exists(e,s){return h.t(e,s)}static existsAndIsNotMigrated(e,s){return new Promise((t,o)=>{let n=!0;const r=e.open(s);r.onupgradeneeded=()=>{n=!1},r.onblocked=()=>o(r.error),r.onsuccess=()=>{const i=r.result;if(n){const e=i.transaction([E.STORE_ACCOUNT],"readonly").objectStore(E.STORE_ACCOUNT).get(c.Nv);e.onsuccess=()=>{var s;const o=null!==(s=e.result)&&void 0!==s?s:c.Il.NOT_STARTED;t(o===c.Il.NOT_STARTED)},e.onerror=()=>{o(e.error)},i.close()}else i.close(),e.deleteDatabase(s),t(!1)},r.onerror=()=>o(r.error)})}constructor(e,s){(0,o.A)(this,"backendPromise",void 0),(0,o.A)(this,"backend",void 0),this.indexedDB=e,this.dbName=s}async containsData(){return E.exists(this.indexedDB,this.dbName)}startup(){return this.backendPromise||(this.backendPromise=new Promise((e,s)=>{if(!this.indexedDB)return void s(new Error("no indexeddb support available"));n.vF.log(`connecting to indexeddb ${this.dbName}`);const t=this.indexedDB.open(this.dbName,u);t.onupgradeneeded=e=>{!function(e,s){n.vF.log(`Upgrading IndexedDBCryptoStore from version ${s} to ${u}`),a.forEach((t,o)=>{s<=o&&t(e)})}(t.result,e.oldVersion)},t.onblocked=()=>{n.vF.log("can't yet open IndexedDBCryptoStore because it is open elsewhere")},t.onerror=e=>{n.vF.log("Error connecting to indexeddb",e),s(t.error)},t.onsuccess=()=>{const s=t.result;n.vF.log(`connected to indexeddb ${this.dbName}`),e(new d(s))}}).then(e=>e.doTxn("readonly",[E.STORE_INBOUND_GROUP_SESSIONS,E.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],s=>{e.getEndToEndInboundGroupSession("","",s,()=>{})}).then(()=>e)).catch(e=>{if("VersionError"===e.name)throw n.vF.warn("Crypto DB is too new for us to use!",e),new S.E5(S.hP.TooNew);n.vF.warn(`unable to connect to indexeddb ${this.dbName}: falling back to localStorage store: ${e}`);try{if(!(globalThis.localStorage instanceof Storage))throw new Error("localStorage is not available");return new r.F(globalThis.localStorage)}catch(e){return n.vF.warn(`Unable to open localStorage: falling back to in-memory store: ${e}`),new i._}}).then(e=>(this.backend=e,e))),this.backendPromise}deleteAllData(){return new Promise((e,s)=>{if(!this.indexedDB)return void s(new Error("no indexeddb support available"));n.vF.log(`Removing indexeddb instance: ${this.dbName}`);const t=this.indexedDB.deleteDatabase(this.dbName);t.onblocked=()=>{n.vF.log("can't yet delete IndexedDBCryptoStore because it is open elsewhere")},t.onerror=e=>{n.vF.log("Error deleting data from indexeddb",e),s(t.error)},t.onsuccess=()=>{n.vF.log(`Removed indexeddb instance: ${this.dbName}`),e()}}).catch(e=>{n.vF.warn(`unable to delete IndexedDBCryptoStore: ${e}`)})}getMigrationState(){return this.backend.getMigrationState()}setMigrationState(e){return this.backend.setMigrationState(e)}getAccount(e,s){this.backend.getAccount(e,s)}storeAccount(e,s){this.backend.storeAccount(e,s)}getCrossSigningKeys(e,s){this.backend.getCrossSigningKeys(e,s)}getSecretStorePrivateKey(e,s,t){this.backend.getSecretStorePrivateKey(e,s,t)}storeSecretStorePrivateKey(e,s,t){this.backend.storeSecretStorePrivateKey(e,s,t)}countEndToEndSessions(e,s){this.backend.countEndToEndSessions(e,s)}getEndToEndSession(e,s,t,o){this.backend.getEndToEndSession(e,s,t,o)}getEndToEndSessions(e,s,t){this.backend.getEndToEndSessions(e,s,t)}storeEndToEndSession(e,s,t,o){this.backend.storeEndToEndSession(e,s,t,o)}countEndToEndInboundGroupSessions(){return this.backend.countEndToEndInboundGroupSessions()}getEndToEndSessionsBatch(){return this.backend.getEndToEndSessionsBatch()}deleteEndToEndSessionsBatch(e){return this.backend.deleteEndToEndSessionsBatch(e)}getEndToEndInboundGroupSession(e,s,t,o){this.backend.getEndToEndInboundGroupSession(e,s,t,o)}storeEndToEndInboundGroupSession(e,s,t,o){this.backend.storeEndToEndInboundGroupSession(e,s,t,o)}getEndToEndInboundGroupSessionsBatch(){return this.backend.getEndToEndInboundGroupSessionsBatch()}deleteEndToEndInboundGroupSessionsBatch(e){return this.backend.deleteEndToEndInboundGroupSessionsBatch(e)}getEndToEndRooms(e,s){this.backend.getEndToEndRooms(e,s)}markSessionsNeedingBackup(e,s){return this.backend.markSessionsNeedingBackup(e,s)}doTxn(e,s,t,o){return this.backend.doTxn(e,s,t,o)}}(0,o.A)(E,"STORE_ACCOUNT","account"),(0,o.A)(E,"STORE_SESSIONS","sessions"),(0,o.A)(E,"STORE_INBOUND_GROUP_SESSIONS","inbound_group_sessions"),(0,o.A)(E,"STORE_INBOUND_GROUP_SESSIONS_WITHHELD","inbound_group_sessions_withheld"),(0,o.A)(E,"STORE_SHARED_HISTORY_INBOUND_GROUP_SESSIONS","shared_history_inbound_group_sessions"),(0,o.A)(E,"STORE_PARKED_SHARED_HISTORY","parked_shared_history"),(0,o.A)(E,"STORE_DEVICE_DATA","device_data"),(0,o.A)(E,"STORE_ROOMS","rooms"),(0,o.A)(E,"STORE_BACKUP","sessions_needing_backup")},"./node_modules/matrix-js-sdk/src/crypto/store/localStorage-crypto-store.ts":(e,s,t)=>{t.d(s,{F:()=>b});var o=t("./node_modules/matrix-js-sdk/src/logger.ts"),n=t("./node_modules/matrix-js-sdk/src/crypto/store/memory-crypto-store.ts"),r=t("./node_modules/matrix-js-sdk/src/crypto/store/base.ts");const i="crypto.",c=i+"migration",d=i+"account",a=i+"cross_signing_keys",u=i+"inboundgroupsessions/",l=i+"inboundgroupsessions.withheld/",S=i+"rooms/",h=i+"sessionsneedingbackup";function E(e){return i+"sessions/"+e}function g(e,s){return u+e+"/"+s}class b extends n._{static exists(e){const s=e.length;for(let o=0;o=r.oT)return e}}return 0===e.length?null:e}async deleteEndToEndSessionsBatch(e){for(const{deviceKey:s,sessionId:t}of e){const e=this._getEndToEndSessions(s)||{};delete e[t],0===Object.keys(e).length?this.store.removeItem(E(s)):_(this.store,E(s),e)}}getEndToEndInboundGroupSession(e,s,t,o){o(y(this.store,g(e,s)),y(this.store,function(e,s){return l+e+"/"+s}(e,s)))}storeEndToEndInboundGroupSession(e,s,t,o){_(this.store,g(e,s),t)}async countEndToEndInboundGroupSessions(){let e=0;for(let s=0;s=r.oT)return s}}return 0===s.length?null:s}async deleteEndToEndInboundGroupSessionsBatch(e){for(const{senderKey:s,sessionId:t}of e){const e=g(s,t);this.store.removeItem(e)}}getEndToEndRooms(e,s){const t={},o=S+"";for(let e=0;e{t.d(s,{_:()=>u});var o=t("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),n=t("./node_modules/matrix-js-sdk/src/utils.ts"),r=t("./node_modules/matrix-js-sdk/src/crypto/store/base.ts");function i(e,s){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);s&&(o=o.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),t.push.apply(t,o)}return t}function c(e){for(var s=1;s=r.oT)return e;return 0===e.length?null:e}async deleteEndToEndSessionsBatch(e){for(const{deviceKey:s,sessionId:t}of e){const e=this.sessions[s]||{};delete e[t],0===Object.keys(e).length&&delete this.sessions[s]}}getEndToEndInboundGroupSession(e,s,t,o){const n=d(e,s);o(this.inboundGroupSessions[n]||null,this.inboundGroupSessionsWithheld[n]||null)}storeEndToEndInboundGroupSession(e,s,t,o){const n=d(e,s);this.inboundGroupSessions[n]=t}async countEndToEndInboundGroupSessions(){return Object.keys(this.inboundGroupSessions).length}async getEndToEndInboundGroupSessionsBatch(){const e=[];for(const[s,t]of Object.entries(this.inboundGroupSessions))if(e.push(c(c({},a(s)),{},{sessionData:t,needsBackup:s in this.sessionsNeedingBackup})),e.length>=r.oT)return e;return 0===e.length?null:e}async deleteEndToEndInboundGroupSessionsBatch(e){for(const{senderKey:s,sessionId:t}of e){const e=d(s,t);delete this.inboundGroupSessions[e]}}getEndToEndRooms(e,s){s(this.rooms)}markSessionsNeedingBackup(e){for(const s of e){const e=d(s.senderKey,s.sessionId);this.sessionsNeedingBackup[e]=!0}return Promise.resolve()}doTxn(e,s,t){return Promise.resolve(t(null))}}},"./node_modules/matrix-js-sdk/src/models/device.ts":(e,s,t)=>{t.d(s,{p:()=>r,u:()=>n});var o=t("./node_modules/@babel/runtime/helpers/esm/defineProperty.js");let n=function(e){return e[e.Blocked=-1]="Blocked",e[e.Unverified=0]="Unverified",e[e.Verified=1]="Verified",e}({});class r{constructor(e){(0,o.A)(this,"deviceId",void 0),(0,o.A)(this,"userId",void 0),(0,o.A)(this,"algorithms",void 0),(0,o.A)(this,"keys",void 0),(0,o.A)(this,"verified",void 0),(0,o.A)(this,"signatures",void 0),(0,o.A)(this,"displayName",void 0),(0,o.A)(this,"dehydrated",!1),this.deviceId=e.deviceId,this.userId=e.userId,this.algorithms=e.algorithms,this.keys=e.keys,this.verified=e.verified||n.Unverified,this.signatures=e.signatures||new Map,this.displayName=e.displayName,this.dehydrated=!!e.dehydrated}getFingerprint(){return this.keys.get(`ed25519:${this.deviceId}`)}getIdentityKey(){return this.keys.get(`curve25519:${this.deviceId}`)}}},"./node_modules/matrix-js-sdk/src/types.ts":(e,s,t)=>{t.d(s,{O:()=>o.O,V:()=>n});var o=t("./node_modules/matrix-js-sdk/src/@types/membership.ts");let n=function(e){return e.Sas="m.sas.v1",e.ShowQrCode="m.qr_code.show.v1",e.ScanQrCode="m.qr_code.scan.v1",e.Reciprocate="m.reciprocate.v1",e}({})}}]); //# sourceMappingURL=485.js.map