parent
68f3a280a5
commit
67b554c68f
|
@ -159,8 +159,13 @@ export default new class E2EE extends BuiltinModule {
|
||||||
|
|
||||||
async enabled(e) {
|
async enabled(e) {
|
||||||
seed = Security.randomBytes();
|
seed = Security.randomBytes();
|
||||||
// TODO Input modal for key
|
let newMaster = '';
|
||||||
this.master = Security.encrypt(seed, TEMP_KEY);
|
try {
|
||||||
|
newMaster = await Modals.input('E2EE', 'Master Key:').promise;
|
||||||
|
} catch (err) {
|
||||||
|
Toasts.error('Failed to set master key!');
|
||||||
|
}
|
||||||
|
this.master = Security.encrypt(seed, newMaster);
|
||||||
this.patchDispatcher();
|
this.patchDispatcher();
|
||||||
this.patchMessageContent();
|
this.patchMessageContent();
|
||||||
const selector = '.' + WebpackModules.getClassName('channelTextArea', 'emojiButton');
|
const selector = '.' + WebpackModules.getClassName('channelTextArea', 'emojiButton');
|
||||||
|
|
|
@ -7,3 +7,4 @@
|
||||||
@import './error-modal.scss';
|
@import './error-modal.scss';
|
||||||
@import './settings-modal.scss';
|
@import './settings-modal.scss';
|
||||||
@import './permission-modal.scss';
|
@import './permission-modal.scss';
|
||||||
|
@import './input-modal.scss';
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
.bd-inputModalBody {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
input {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
/**
|
||||||
|
* BetterDiscord Input Modal Component
|
||||||
|
* Copyright (c) 2015-present Jiiks/JsSucks - https://github.com/Jiiks / https://github.com/JsSucks
|
||||||
|
* All rights reserved.
|
||||||
|
* https://betterdiscord.net
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Modal :class="['bd-modal-basic', {'bd-modal-out': modal.closing}]" :headerText="modal.title" @close="modal.close">
|
||||||
|
<div slot="body" class="bd-modal-basic-body bd-inputModalBody bd-form-textinput">
|
||||||
|
{{ modal.text }}
|
||||||
|
<input ref="input" type="text" @keyup.stop="keyup"/><!-- TODO Option for masked input -->
|
||||||
|
</div>
|
||||||
|
<div slot="footer" class="bd-modal-controls">
|
||||||
|
<div class="bd-flex-grow"></div>
|
||||||
|
<div class="bd-button bd-ok" @click="() => { modal.confirm(value); modal.close(); }">OK</div>
|
||||||
|
</div>
|
||||||
|
</Modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Imports
|
||||||
|
import { Modal } from '../../common';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props: ['modal'],
|
||||||
|
components: {
|
||||||
|
Modal
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
keyup(e) {
|
||||||
|
if (e.key === 'Enter') {
|
||||||
|
this.modal.confirm(this.value);
|
||||||
|
this.modal.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.value = e.target.value;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$refs.input.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -16,6 +16,7 @@ import ConfirmModal from './components/bd/modals/ConfirmModal.vue';
|
||||||
import ErrorModal from './components/bd/modals/ErrorModal.vue';
|
import ErrorModal from './components/bd/modals/ErrorModal.vue';
|
||||||
import SettingsModal from './components/bd/modals/SettingsModal.vue';
|
import SettingsModal from './components/bd/modals/SettingsModal.vue';
|
||||||
import PermissionModal from './components/bd/modals/PermissionModal.vue';
|
import PermissionModal from './components/bd/modals/PermissionModal.vue';
|
||||||
|
import InputModal from './components/bd/modals/InputModal.vue';
|
||||||
|
|
||||||
let modals = 0;
|
let modals = 0;
|
||||||
|
|
||||||
|
@ -176,6 +177,19 @@ export default class Modals {
|
||||||
return new Modal(modal, ConfirmModal);
|
return new Modal(modal, ConfirmModal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static input(title, text) {
|
||||||
|
return this.add(this.createInputModal(title, text));
|
||||||
|
}
|
||||||
|
|
||||||
|
static createInputModal(title, text) {
|
||||||
|
const modal = { title, text };
|
||||||
|
modal.promise = new Promise((resolve, reject) => {
|
||||||
|
modal.confirm = value => resolve(value);
|
||||||
|
modal.beforeClose = () => reject();
|
||||||
|
});
|
||||||
|
return new Modal(modal, InputModal);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new permissions modal and adds it to the open stack.
|
* Creates a new permissions modal and adds it to the open stack.
|
||||||
* The modal will have a promise property that will be set to a Promise object that is resolved or rejected if the user accepts the permissions or closes the modal.
|
* The modal will have a promise property that will be set to a Promise object that is resolved or rejected if the user accepts the permissions or closes the modal.
|
||||||
|
|
Loading…
Reference in New Issue