2023-07-02 01:22:37 +02:00
/ *
* Vencord , a modification for Discord ' s desktop app
* Copyright ( c ) 2023 Vendicated and contributors
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < https : //www.gnu.org/licenses/>.
* /
import { Devs } from "@utils/constants" ;
import definePlugin from "@utils/types" ;
2023-10-28 23:51:04 +02:00
import { findByPropsLazy } from "@webpack" ;
2023-07-02 01:22:37 +02:00
import { ComponentDispatch , FluxDispatcher , NavigationRouter , SelectedGuildStore , SettingsRouter } from "@webpack/common" ;
2023-10-28 23:51:04 +02:00
const KeyBinds = findByPropsLazy ( "JUMP_TO_GUILD" , "SERVER_NEXT" ) ;
2023-07-02 01:22:37 +02:00
export default definePlugin ( {
name : "WebKeybinds" ,
2024-10-22 19:39:43 -07:00
description : "Re-adds keybinds missing in the web version of Discord: ctrl+t, ctrl+shift+t, ctrl+tab, ctrl+shift+tab, ctrl+1-9, ctrl+,. Only works fully on Vesktop/Legcord, not inside your browser" ,
2023-07-02 01:22:37 +02:00
authors : [ Devs . Ven ] ,
enabledByDefault : true ,
onKey ( e : KeyboardEvent ) {
const hasCtrl = e . ctrlKey || ( e . metaKey && navigator . platform . includes ( "Mac" ) ) ;
if ( hasCtrl ) switch ( e . key ) {
case "t" :
case "T" :
2024-08-18 15:20:03 -03:00
if ( ! IS_VESKTOP ) return ;
2023-07-02 01:22:37 +02:00
e . preventDefault ( ) ;
if ( e . shiftKey ) {
if ( SelectedGuildStore . getGuildId ( ) ) NavigationRouter . transitionToGuild ( "@me" ) ;
ComponentDispatch . safeDispatch ( "TOGGLE_DM_CREATE" ) ;
} else {
FluxDispatcher . dispatch ( {
type : "QUICKSWITCHER_SHOW" ,
query : "" ,
queryMode : null
} ) ;
}
break ;
case "Tab" :
2024-08-18 15:20:03 -03:00
if ( ! IS_VESKTOP ) return ;
2023-10-28 23:51:04 +02:00
const handler = e . shiftKey ? KeyBinds.SERVER_PREV : KeyBinds.SERVER_NEXT ;
2023-07-02 01:22:37 +02:00
handler . action ( e ) ;
break ;
2024-08-18 15:20:03 -03:00
case "," :
e . preventDefault ( ) ;
SettingsRouter . open ( "My Account" ) ;
break ;
2023-07-02 01:22:37 +02:00
default :
if ( e . key >= "1" && e . key <= "9" ) {
e . preventDefault ( ) ;
2023-10-28 23:51:04 +02:00
KeyBinds . JUMP_TO_GUILD . action ( e , ` mod+ ${ e . key } ` ) ;
2023-07-02 01:22:37 +02:00
}
break ;
}
} ,
start() {
document . addEventListener ( "keydown" , this . onKey ) ;
} ,
stop() {
document . removeEventListener ( "keydown" , this . onKey ) ;
}
} ) ;