added custom confirm dialog as js confirm in electron on windows causes all text fields to be disabled
This commit is contained in:
@@ -22,6 +22,27 @@ ipcMain.handle('alert', async(event, message) => {
|
||||
});
|
||||
});
|
||||
|
||||
// add support for showing a confirm window via ipc
|
||||
ipcMain.handle('confirm', async(event, message) => {
|
||||
|
||||
// show confirm dialog
|
||||
const result = await dialog.showMessageBox(mainWindow, {
|
||||
type: "question",
|
||||
title: "Confirm",
|
||||
message: message,
|
||||
cancelId: 0, // esc key should press cancel button
|
||||
defaultId: 1, // enter key should press ok button
|
||||
buttons: [
|
||||
"Cancel", // 0
|
||||
"OK", // 1
|
||||
],
|
||||
});
|
||||
|
||||
// check if user clicked OK
|
||||
return result.response === 1;
|
||||
|
||||
});
|
||||
|
||||
// add support for showing a prompt window via ipc
|
||||
ipcMain.handle('prompt', async(event, message) => {
|
||||
return await electronPrompt({
|
||||
|
||||
@@ -15,6 +15,11 @@ contextBridge.exposeInMainWorld('electron', {
|
||||
return await ipcRenderer.invoke('alert', message);
|
||||
},
|
||||
|
||||
// show a confirm dialog in electron browser window, this fixes a bug where confirm breaks input fields on windows
|
||||
confirm: async function(message) {
|
||||
return await ipcRenderer.invoke('confirm', message);
|
||||
},
|
||||
|
||||
// add support for using "prompt" in electron browser window
|
||||
prompt: async function(message) {
|
||||
return await ipcRenderer.invoke('prompt', message);
|
||||
|
||||
@@ -448,7 +448,7 @@ export default {
|
||||
|
||||
// ask to stop syncing if already syncing
|
||||
if(this.isSyncingPropagationNode){
|
||||
if(confirm("Are you sure you want to stop syncing?")){
|
||||
if(await DialogUtils.confirm("Are you sure you want to stop syncing?")){
|
||||
await this.stopSyncingPropagationNode();
|
||||
}
|
||||
return;
|
||||
@@ -529,7 +529,7 @@ export default {
|
||||
async hangupAllCalls() {
|
||||
|
||||
// confirm user wants to hang up calls
|
||||
if(!confirm("Are you sure you want to hang up all incoming and outgoing calls?")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to hang up all incoming and outgoing calls?")){
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -259,6 +259,7 @@
|
||||
|
||||
<script>
|
||||
import protobuf from "protobufjs";
|
||||
import DialogUtils from "../../js/DialogUtils";
|
||||
export default {
|
||||
name: 'CallPage',
|
||||
data() {
|
||||
@@ -488,7 +489,7 @@ export default {
|
||||
async hangupCall(callHash) {
|
||||
|
||||
// confirm user wants to hang up call
|
||||
if(!confirm("Are you sure you want to hang up this call?")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to hang up this call?")){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -681,7 +682,7 @@ export default {
|
||||
async deleteCall(callHash) {
|
||||
|
||||
// confirm user wants to delete call
|
||||
if(!confirm("Are you sure you want to delete this call?")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to delete this call?")){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -701,7 +702,7 @@ export default {
|
||||
async clearCallHistory() {
|
||||
|
||||
// confirm user wants to clear call history
|
||||
if(!confirm("Are you sure you want to clear your call history?")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to clear your call history?")){
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -191,7 +191,7 @@ export default {
|
||||
async deleteInterface(interfaceName) {
|
||||
|
||||
// ask user to confirm deleting conversation history
|
||||
if(!confirm("Are you sure you want to delete this interface? This can not be undone!")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to delete this interface? This can not be undone!")){
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ export default {
|
||||
async onDeleteMessageHistory() {
|
||||
|
||||
// ask user to confirm deleting conversation history
|
||||
if(!confirm("Are you sure you want to delete all messages in this conversation? This can not be undone!")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to delete all messages in this conversation? This can not be undone!")){
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -997,7 +997,7 @@ export default {
|
||||
try {
|
||||
|
||||
// ask user to confirm deleting message
|
||||
if(shouldConfirm && !confirm("Are you sure you want to delete this message? This can not be undone!")){
|
||||
if(shouldConfirm && !await DialogUtils.confirm("Are you sure you want to delete this message? This can not be undone!")){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1078,7 +1078,7 @@ export default {
|
||||
|
||||
// ask user if they still want to send message if it may be rejected by sender
|
||||
if(totalMessageSize > 1000 * 900){ // actual limit in LXMF Router is 1mb
|
||||
if(!confirm(`Your message exceeds 900KB (It's ${this.formatBytes(totalMessageSize)}). It may be rejected by the recipient unless they have increased their delivery limit. Do you want to try sending anyway?`)){
|
||||
if(!await DialogUtils.confirm(`Your message exceeds 900KB (It's ${this.formatBytes(totalMessageSize)}). It may be rejected by the recipient unless they have increased their delivery limit. Do you want to try sending anyway?`)){
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1209,10 +1209,10 @@ export default {
|
||||
clearFileInput: function() {
|
||||
this.$refs["file-input"].value = null;
|
||||
},
|
||||
removeImageAttachment: function() {
|
||||
async removeImageAttachment() {
|
||||
|
||||
// ask user to confirm removing image attachment
|
||||
if(!confirm("Are you sure you want to remove this image attachment?")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to remove this image attachment?")){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1244,7 +1244,7 @@ export default {
|
||||
}
|
||||
|
||||
// ask user to confirm recording new audio attachment, if an existing audio attachment exists
|
||||
if(this.newMessageAudio && !confirm("An audio recording is already attached. A new recording will replace it. Do you want to continue?")){
|
||||
if(this.newMessageAudio && !await DialogUtils.confirm("An audio recording is already attached. A new recording will replace it. Do you want to continue?")){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1386,10 +1386,10 @@ export default {
|
||||
}
|
||||
|
||||
},
|
||||
removeAudioAttachment: function() {
|
||||
async removeAudioAttachment() {
|
||||
|
||||
// ask user to confirm removing audio attachment
|
||||
if(!confirm("Are you sure you want to remove this audio attachment?")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to remove this audio attachment?")){
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -862,10 +862,10 @@ export default {
|
||||
}
|
||||
|
||||
},
|
||||
onRemoveFavourite: function(favourite) {
|
||||
async onRemoveFavourite(favourite) {
|
||||
|
||||
// ask user to confirm
|
||||
if(!confirm("Are you sure you want to remove this favourite?")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to remove this favourite?")){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -911,7 +911,7 @@ export default {
|
||||
try {
|
||||
|
||||
// ask user to confirm
|
||||
if(!confirm("Are you sure you want to identify yourself to this NomadNetwork Node? The page will reload after your identity has been sent.")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to identify yourself to this NomadNetwork Node? The page will reload after your identity has been sent.")){
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -145,7 +145,7 @@ export default {
|
||||
}
|
||||
|
||||
// confirm user wants to update their icon
|
||||
if(!confirm("Are you sure you want to set this as your profile icon?")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to set this as your profile icon?")){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ export default {
|
||||
async removeProfileIcon() {
|
||||
|
||||
// confirm user wants to remove their icon
|
||||
if(!confirm("Are you sure you want to remove your profile icon? Anyone that has already received it will continue to see it until you send them a new icon.")){
|
||||
if(!await DialogUtils.confirm("Are you sure you want to remove your profile icon? Anyone that has already received it will continue to see it until you send them a new icon.")){
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,16 @@ class DialogUtils {
|
||||
}
|
||||
}
|
||||
|
||||
static confirm(message) {
|
||||
if(window.electron){
|
||||
// running inside electron, use ipc confirm
|
||||
return window.electron.confirm(message);
|
||||
} else {
|
||||
// running inside normal browser, use browser alert
|
||||
return window.confirm(message);
|
||||
}
|
||||
}
|
||||
|
||||
static async prompt(message) {
|
||||
if(window.electron){
|
||||
// running inside electron, use ipc prompt
|
||||
|
||||
Reference in New Issue
Block a user