Allow ESC to close all floating windows (#750)

This commit is contained in:
josc146
2024-08-04 23:44:34 +08:00
parent c7ee67a884
commit 4e7410f8cf
16 changed files with 53 additions and 15 deletions
+16 -3
View File
@@ -253,17 +253,30 @@ function ConversationCard(props) {
setIsReady(true)
}
const closeChatsListener = (message) => {
const closeChatsMessageListener = (message) => {
if (message.type === 'CLOSE_CHATS') {
port.disconnect()
Browser.runtime.onMessage.removeListener(closeChatsMessageListener)
window.removeEventListener('keydown', closeChatsEscListener)
if (props.onClose) props.onClose()
}
}
const closeChatsEscListener = async (e) => {
if (e.key === 'Escape' && (await getUserConfig()).allowEscToCloseAll) {
closeChatsMessageListener({ type: 'CLOSE_CHATS' })
}
}
if (props.closeable) Browser.runtime.onMessage.addListener(closeChatsListener)
if (props.closeable) {
Browser.runtime.onMessage.addListener(closeChatsMessageListener)
window.addEventListener('keydown', closeChatsEscListener)
}
port.onDisconnect.addListener(portListener)
return () => {
if (props.closeable) Browser.runtime.onMessage.removeListener(closeChatsListener)
if (props.closeable) {
Browser.runtime.onMessage.removeListener(closeChatsMessageListener)
window.removeEventListener('keydown', closeChatsEscListener)
}
port.onDisconnect.removeListener(portListener)
}
}, [port])