2 lines
10 KiB
JavaScript
2 lines
10 KiB
JavaScript
"use strict";(self.webpackChunkelement_web=self.webpackChunkelement_web||[]).push([[234],{"./src/async-components/views/dialogs/security/NewRecoveryMethodDialog.tsx":(e,t,r)=>{r.r(t),r.d(t,{default:()=>E});var s=r("./node_modules/react/index.js"),a=r("./src/dispatcher/dispatcher.ts"),o=r("./src/languageHandler.tsx"),i=r("./src/Modal.tsx"),n=r("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),c=r("./node_modules/matrix-js-sdk/src/matrix.ts"),l=r("./node_modules/matrix-js-sdk/src/crypto-api/index.ts"),_=r("./node_modules/matrix-js-sdk/src/logger.ts"),u=r("./src/MatrixClientPeg.ts"),y=r("./src/SecurityManager.ts"),p=r("./src/components/views/elements/Spinner.tsx"),h=r("./src/components/views/elements/DialogButtons.tsx"),d=r("./src/components/views/elements/AccessibleButton.tsx"),k=r("./src/components/views/dialogs/BaseDialog.tsx"),g=function(e){return e.Passphrase="passphrase",e.RecoveryKey="recovery_key",e.SecretStorage="secret_storage",e}(g||{}),m=function(e){return e.PreFetch="prefetch",e.Fetch="fetch",e.LoadKeys="load_keys",e}(m||{});class v extends s.PureComponent{constructor(e){super(e),(0,n.A)(this,"onCancel",()=>{this.props.onFinished(!1)}),(0,n.A)(this,"onDone",()=>{this.props.onFinished(!0)}),(0,n.A)(this,"onUseRecoveryKeyClick",()=>{this.setState({forceRecoveryKey:!0})}),(0,n.A)(this,"progressCallback",e=>{this.setState({progress:e})}),(0,n.A)(this,"onResetRecoveryClick",()=>{this.props.onFinished(!1),(0,y.cb)(async()=>{},{forceReset:!0})}),(0,n.A)(this,"onRecoveryKeyChange",e=>{this.setState({recoveryKey:e.target.value,recoveryKeyValid:this.isValidRecoveryKey(e.target.value)})}),(0,n.A)(this,"onPassPhraseNext",async()=>{const e=u.J.safeGet().getCrypto();if(e){this.setState({loading:!0,restoreError:null,restoreType:g.Passphrase});try{const t=await e.restoreKeyBackupWithPassphrase(this.state.passPhrase,{progressCallback:this.progressCallback});if(!this.props.showSummary)return void this.props.onFinished(!0);this.setState({loading:!1,recoverInfo:t})}catch(e){_.vF.log("Error restoring backup",e),this.setState({loading:!1,restoreError:e})}}}),(0,n.A)(this,"onRecoveryKeyNext",async()=>{var e;const t=u.J.safeGet().getCrypto();if(this.state.recoveryKeyValid&&null!==(e=this.state.backupInfo)&&void 0!==e&&e.version&&t){this.setState({loading:!0,restoreError:null,restoreType:g.RecoveryKey});try{await t.storeSessionBackupPrivateKey((0,l.R1)(this.state.recoveryKey),this.state.backupInfo.version);const e=await t.restoreKeyBackup({progressCallback:this.progressCallback});if(!this.props.showSummary)return void this.props.onFinished(!0);this.setState({loading:!1,recoverInfo:e})}catch(e){_.vF.log("Error restoring backup",e),this.setState({loading:!1,restoreError:e})}}}),(0,n.A)(this,"onPassPhraseChange",e=>{this.setState({passPhrase:e.target.value})}),this.state={backupInfo:null,loading:!1,loadError:null,restoreError:null,recoveryKey:"",recoverInfo:null,recoveryKeyValid:!1,forceRecoveryKey:!1,passPhrase:"",restoreType:null,progress:{stage:m.PreFetch}}}componentDidMount(){this.loadBackupStatus()}isValidRecoveryKey(e){try{return(0,l.R1)(e),!0}catch{return!1}}async restoreWithSecretStorage(){const e=u.J.safeGet().getCrypto();if(!e)return!1;this.setState({restoreError:null,restoreType:g.SecretStorage});try{let t=null;return await(0,y.cb)(async()=>{await e.loadSessionBackupPrivateKeyFromSecretStorage(),t=await e.restoreKeyBackup({progressCallback:this.progressCallback})}),this.setState({loading:!1,recoverInfo:t}),!0}catch(e){return _.vF.log("restoreWithSecretStorage failed:",e),this.setState({restoreError:e,loading:!1}),!1}}async restoreWithCachedKey(e){const t=u.J.safeGet().getCrypto();if(!t)return!1;try{const e=await t.restoreKeyBackup({progressCallback:this.progressCallback});return this.setState({recoverInfo:e}),!0}catch(e){return _.vF.log("restoreWithCachedKey failed:",e),!1}}async loadBackupStatus(){this.setState({loading:!0,loadError:null});try{var e,t;const r=u.J.safeGet(),s=null!==(e=await(null===(t=r.getCrypto())||void 0===t?void 0:t.getKeyBackupInfo()))&&void 0!==e?e:null,a=await r.secretStorage.hasKey()?await r.isKeyBackupKeyStored():null;this.setState({backupInfo:s});if(await this.restoreWithCachedKey(s))return _.vF.log("RestoreKeyBackupDialog: found cached backup key"),void this.setState({loading:!1});if(a&&await this.restoreWithSecretStorage())return _.vF.log("RestoreKeyBackupDialog: found backup key in secret storage"),void this.setState({loading:!1});this.setState({loadError:null,loading:!1})}catch(e){_.vF.log("Error loading backup status",e),this.setState({loadError:!0,loading:!1})}}render(){const e=this.state.backupInfo&&this.state.backupInfo.auth_data&&this.state.backupInfo.auth_data.private_key_salt&&this.state.backupInfo.auth_data.private_key_iterations;let t,r;if(this.state.loading){let e;if(r=(0,o._t)("encryption|access_secret_storage_dialog|restoring"),this.state.progress.stage===m.Fetch)e=(0,o._t)("restore_key_backup_dialog|key_fetch_in_progress");else if(this.state.progress.stage===m.LoadKeys){const{total:t,successes:r,failures:s}=this.state.progress;e=(0,o._t)("restore_key_backup_dialog|load_keys_progress",{total:t,completed:(null!=r?r:0)+(null!=s?s:0)})}else this.state.progress.stage===m.PreFetch&&(e=(0,o._t)("restore_key_backup_dialog|key_fetch_in_progress"));t=s.createElement("div",null,s.createElement("div",null,e),s.createElement(p.A,null))}else if(this.state.loadError)r=(0,o._t)("common|error"),t=(0,o._t)("restore_key_backup_dialog|load_error_content");else if(this.state.restoreError)this.state.restoreError instanceof c.MatrixError&&this.state.restoreError.errcode===c.MatrixClient.RESTORE_BACKUP_ERROR_BAD_KEY?this.state.restoreType===g.RecoveryKey?(r=(0,o._t)("restore_key_backup_dialog|recovery_key_mismatch_title"),t=s.createElement("div",null,s.createElement("p",null,(0,o._t)("restore_key_backup_dialog|recovery_key_mismatch_description")))):(r=(0,o._t)("restore_key_backup_dialog|incorrect_security_phrase_title"),t=s.createElement("div",null,s.createElement("p",null,(0,o._t)("restore_key_backup_dialog|incorrect_security_phrase_dialog")))):(r=(0,o._t)("common|error"),t=(0,o._t)("restore_key_backup_dialog|restore_failed_error"));else if(null===this.state.backupInfo)r=(0,o._t)("common|error"),t=(0,o._t)("restore_key_backup_dialog|no_backup_error");else if(this.state.recoverInfo){let e;r=(0,o._t)("restore_key_backup_dialog|keys_restored_title"),this.state.recoverInfo.total>this.state.recoverInfo.imported&&(e=s.createElement("p",null,(0,o._t)("restore_key_backup_dialog|count_of_decryption_failures",{failedCount:this.state.recoverInfo.total-this.state.recoverInfo.imported}))),t=s.createElement("div",null,s.createElement("p",null,(0,o._t)("restore_key_backup_dialog|count_of_successfully_restored_keys",{sessionCount:this.state.recoverInfo.imported})),e,s.createElement(h.A,{primaryButton:(0,o._t)("action|ok"),onPrimaryButtonClick:this.onDone,hasCancel:!1,focus:!0}))}else if(e&&!this.state.forceRecoveryKey)r=(0,o._t)("restore_key_backup_dialog|enter_phrase_title"),t=s.createElement("div",null,s.createElement("p",null,(0,o._t)("restore_key_backup_dialog|key_backup_warning",{},{b:e=>s.createElement("strong",null,e)})),s.createElement("p",null,(0,o._t)("restore_key_backup_dialog|enter_phrase_description")),s.createElement("form",{className:"mx_RestoreKeyBackupDialog_primaryContainer"},s.createElement("input",{type:"password",className:"mx_RestoreKeyBackupDialog_passPhraseInput",onChange:this.onPassPhraseChange,value:this.state.passPhrase,autoFocus:!0}),s.createElement(h.A,{primaryButton:(0,o._t)("action|next"),onPrimaryButtonClick:this.onPassPhraseNext,primaryIsSubmit:!0,hasCancel:!0,onCancel:this.onCancel,focus:!1})),(0,o._t)("restore_key_backup_dialog|phrase_forgotten_text",{},{button1:e=>s.createElement(d.A,{kind:"link_inline",onClick:this.onUseRecoveryKeyClick},e),button2:e=>s.createElement(d.A,{kind:"link_inline",onClick:this.onResetRecoveryClick},e)}));else{let e;r=(0,o._t)("restore_key_backup_dialog|enter_key_title"),e=0===this.state.recoveryKey.length?s.createElement("div",{className:"mx_RestoreKeyBackupDialog_keyStatus"}):this.state.recoveryKeyValid?s.createElement("div",{className:"mx_RestoreKeyBackupDialog_keyStatus"},"👍 ",(0,o._t)("restore_key_backup_dialog|key_is_valid")):s.createElement("div",{className:"mx_RestoreKeyBackupDialog_keyStatus"},"👎 ",(0,o._t)("restore_key_backup_dialog|key_is_invalid")),t=s.createElement("div",null,s.createElement("p",null,(0,o._t)("restore_key_backup_dialog|key_backup_warning",{},{b:e=>s.createElement("strong",null,e)})),s.createElement("p",null,(0,o._t)("restore_key_backup_dialog|enter_key_description")),s.createElement("div",{className:"mx_RestoreKeyBackupDialog_primaryContainer"},s.createElement("input",{className:"mx_RestoreKeyBackupDialog_recoveryKeyInput",onChange:this.onRecoveryKeyChange,value:this.state.recoveryKey,autoFocus:!0}),e,s.createElement(h.A,{primaryButton:(0,o._t)("action|next"),onPrimaryButtonClick:this.onRecoveryKeyNext,hasCancel:!0,onCancel:this.onCancel,focus:!1,primaryDisabled:!this.state.recoveryKeyValid})),(0,o._t)("restore_key_backup_dialog|key_forgotten_text",{},{button:e=>s.createElement(d.A,{kind:"link_inline",onClick:this.onResetRecoveryClick},e)}))}return s.createElement(k.A,{className:"mx_RestoreKeyBackupDialog",onFinished:this.props.onFinished,title:r},s.createElement("div",{className:"mx_RestoreKeyBackupDialog_content"},t))}}(0,n.A)(v,"defaultProps",{showSummary:!0});var f=r("./src/dispatcher/actions.ts"),b=r("./src/contexts/MatrixClientContext.tsx");function E({onFinished:e}){const t=(0,b.nH)(),[r,n]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{(async()=>{const e=t.getCrypto();n(Boolean(e&&null!==await e.getActiveSessionBackupVersion()))})()},[t]),s.createElement(k.A,{className:"mx_KeyBackupFailedDialog",onFinished:e,title:s.createElement("span",{className:"mx_KeyBackupFailedDialog_title"},(0,o._t)("encryption|new_recovery_method_detected|title"))},s.createElement("p",null,(0,o._t)("encryption|new_recovery_method_detected|description_1")),r&&s.createElement("p",null,(0,o._t)("encryption|new_recovery_method_detected|description_2")),s.createElement("strong",{className:"warning"},(0,o._t)("encryption|new_recovery_method_detected|warning")),s.createElement(h.A,{primaryButton:(0,o._t)("common|setup_secure_messages"),onPrimaryButtonClick:function(){if(r)e();else{const{finished:t}=i.Ay.createDialog(v,{},void 0,!1,!0);t.then(e)}},cancelButton:(0,o._t)("common|go_to_settings"),onCancel:()=>{e(),a.A.fire(f.r.ViewUserSettings)}}))}}}]);
|
|
//# sourceMappingURL=234.js.map
|