2021-01-09 20:54:44 +01:00
/ * *
* @ name CustomStatusPresets
2021-03-05 13:26:41 +01:00
* @ author DevilBro
2021-01-09 20:54:44 +01:00
* @ authorId 278543574059057154
2021-07-08 16:59:41 +02:00
* @ version 1.0 . 7
2021-03-05 13:26:41 +01:00
* @ description Allows you to save Custom Statuses as Quick Select
2021-01-09 20:54:44 +01:00
* @ invite Jx3TjNS
* @ donate https : //www.paypal.me/MircoWittrien
* @ patreon https : //www.patreon.com/MircoWittrien
2021-03-09 15:10:55 +01:00
* @ website https : //mwittrien.github.io/
* @ source https : //github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/CustomStatusPresets/
2021-03-10 09:17:37 +01:00
* @ updateUrl https : //mwittrien.github.io/BetterDiscordAddons/Plugins/CustomStatusPresets/CustomStatusPresets.plugin.js
2021-01-09 20:54:44 +01:00
* /
module . exports = ( _ => {
const config = {
"info" : {
"name" : "CustomStatusPresets" ,
"author" : "DevilBro" ,
2021-07-08 16:59:41 +02:00
"version" : "1.0.7" ,
2021-03-04 11:48:11 +01:00
"description" : "Allows you to save Custom Statuses as Quick Select"
2021-01-09 22:07:56 +01:00
} ,
"changeLog" : {
2021-07-08 16:59:41 +02:00
"fixed" : {
"Status/Overflow" : "Fixed some Issues with very long Status causing overflow issues"
2021-01-09 22:07:56 +01:00
}
2021-01-09 20:54:44 +01:00
}
} ;
2021-09-06 18:58:10 +02:00
return ( window . Lightcord && ! Node . prototype . isPrototypeOf ( window . Lightcord ) || window . LightCord && ! Node . prototype . isPrototypeOf ( window . LightCord ) || window . Astra && ! Node . prototype . isPrototypeOf ( window . Astra ) ) ? class {
2021-06-15 13:42:02 +02:00
getName ( ) { return config . info . name ; }
getAuthor ( ) { return config . info . author ; }
getVersion ( ) { return config . info . version ; }
getDescription ( ) { return "Do not use LightCord!" ; }
load ( ) { BdApi . alert ( "Attention!" , "By using LightCord you are risking your Discord Account, due to using a 3rd Party Client. Switch to an official Discord Client (https://discord.com/) with the proper BD Injection (https://betterdiscord.app/)" ) ; }
start ( ) { }
stop ( ) { }
} : ! window . BDFDB _Global || ( ! window . BDFDB _Global . loaded && ! window . BDFDB _Global . started ) ? class {
2021-01-09 20:54:44 +01:00
getName ( ) { return config . info . name ; }
getAuthor ( ) { return config . info . author ; }
getVersion ( ) { return config . info . version ; }
2021-02-01 17:13:13 +01:00
getDescription ( ) { return ` The Library Plugin needed for ${ config . info . name } is missing. Open the Plugin Settings to download it. \n \n ${ config . info . description } ` ; }
downloadLibrary ( ) {
require ( "request" ) . get ( "https://mwittrien.github.io/BetterDiscordAddons/Library/0BDFDB.plugin.js" , ( e , r , b ) => {
2021-03-05 13:14:18 +01:00
if ( ! e && b && r . statusCode == 200 ) require ( "fs" ) . writeFile ( require ( "path" ) . join ( BdApi . Plugins . folder , "0BDFDB.plugin.js" ) , b , _ => BdApi . showToast ( "Finished downloading BDFDB Library" , { type : "success" } ) ) ;
2021-03-06 14:59:48 +01:00
else BdApi . alert ( "Error" , "Could not download BDFDB Library Plugin. Try again later or download it manually from GitHub: https://mwittrien.github.io/downloader/?library" ) ;
2021-02-01 17:13:13 +01:00
} ) ;
}
2021-01-09 20:54:44 +01:00
load ( ) {
if ( ! window . BDFDB _Global || ! Array . isArray ( window . BDFDB _Global . pluginQueue ) ) window . BDFDB _Global = Object . assign ( { } , window . BDFDB _Global , { pluginQueue : [ ] } ) ;
if ( ! window . BDFDB _Global . downloadModal ) {
window . BDFDB _Global . downloadModal = true ;
2021-01-14 16:14:44 +01:00
BdApi . showConfirmationModal ( "Library Missing" , ` The Library Plugin needed for ${ config . info . name } is missing. Please click "Download Now" to install it. ` , {
2021-01-09 20:54:44 +01:00
confirmText : "Download Now" ,
cancelText : "Cancel" ,
onCancel : _ => { delete window . BDFDB _Global . downloadModal ; } ,
onConfirm : _ => {
delete window . BDFDB _Global . downloadModal ;
2021-02-01 17:13:13 +01:00
this . downloadLibrary ( ) ;
2021-01-09 20:54:44 +01:00
}
} ) ;
}
if ( ! window . BDFDB _Global . pluginQueue . includes ( config . info . name ) ) window . BDFDB _Global . pluginQueue . push ( config . info . name ) ;
}
start ( ) { this . load ( ) ; }
stop ( ) { }
getSettingsPanel ( ) {
let template = document . createElement ( "template" ) ;
2021-01-14 16:14:44 +01:00
template . innerHTML = ` <div style="color: var(--header-primary); font-size: 16px; font-weight: 300; white-space: pre; line-height: 22px;">The Library Plugin needed for ${ config . info . name } is missing. \n Please click <a style="font-weight: 500;">Download Now</a> to install it.</div> ` ;
2021-02-01 17:13:13 +01:00
template . content . firstElementChild . querySelector ( "a" ) . addEventListener ( "click" , this . downloadLibrary ) ;
2021-01-09 20:54:44 +01:00
return template . content . firstElementChild ;
}
} : ( ( [ Plugin , BDFDB ] ) => {
2021-01-20 17:42:56 +01:00
var _this ;
2021-01-09 20:54:44 +01:00
var presets = { } ;
2021-04-03 17:25:09 +02:00
const CustomStatusInputComponent = class CustomStatusInput extends BdApi . React . Component {
2021-01-20 17:42:56 +01:00
handleChange ( ) {
this . props . onChange ( this . props ) ;
}
render ( ) {
return BDFDB . ReactUtils . createElement ( "div" , {
className : BDFDB . disCN . emojiinputcontainer ,
children : [
BDFDB . ReactUtils . createElement ( "div" , {
key : "EMOJIINPUT" ,
className : BDFDB . disCN . emojiinputbuttoncontainer ,
children : BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . EmojiPickerButton , {
emoji : this . props . emoji ,
onSelect : this . handleChange . bind ( this )
} )
} ) ,
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . TextInput , {
key : "TEXTINPUT" ,
inputClassName : BDFDB . disCN . emojiinput ,
maxLength : 128 ,
value : this . props . text ,
placeholder : this . props . text ,
onChange : this . handleChange . bind ( this )
} ) ,
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . Button , {
size : BDFDB . LibraryComponents . Button . Sizes . NONE ,
look : BDFDB . LibraryComponents . Button . Looks . BLANK ,
className : BDFDB . disCN . emojiinputclearbutton ,
children : BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SvgIcon , {
className : BDFDB . disCN . emojiinputclearicon ,
name : BDFDB . LibraryComponents . SvgIcon . Names . CLOSE _CIRCLE
} ) ,
onClick : ( e , instance ) => {
this . props . text = "" ;
delete this . props . text ;
this . handleChange ( ) ;
BDFDB . ReactUtils . forceUpdate ( this ) ;
}
} )
]
} ) ;
}
} ;
2021-04-03 17:25:09 +02:00
const SortableListComponent = class SortableList extends BdApi . React . Component {
2021-01-20 17:42:56 +01:00
createDragPreview ( div , event ) {
if ( ! Node . prototype . isPrototypeOf ( div ) ) return ;
let dragPreview = div . cloneNode ( true ) ;
BDFDB . DOMUtils . addClass ( dragPreview , BDFDB . disCN . _customstatuspresetsdragpreview ) ;
BDFDB . DOMUtils . hide ( dragPreview ) ;
dragPreview . style . setProperty ( "pointer-events" , "none" , "important" ) ;
dragPreview . style . setProperty ( "left" , event . clientX - 25 + "px" , "important" ) ;
dragPreview . style . setProperty ( "top" , event . clientY - 25 + "px" , "important" ) ;
document . querySelector ( BDFDB . dotCN . appmount ) . appendChild ( dragPreview ) ;
this . props . dragPreview = dragPreview ;
}
updateDragPreview ( event ) {
if ( ! Node . prototype . isPrototypeOf ( this . props . dragPreview ) ) return ;
BDFDB . DOMUtils . show ( this . props . dragPreview ) ;
this . props . dragPreview . style . setProperty ( "left" , event . clientX - 25 + "px" , "important" ) ;
this . props . dragPreview . style . setProperty ( "top" , event . clientY - 25 + "px" , "important" ) ;
}
render ( ) {
2021-04-03 17:31:51 +02:00
return ! Object . keys ( this . props . entries ) . length ? BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . TextElement , {
2021-04-03 17:25:09 +02:00
children : "You haven't added any Custom Status Presets. You can add some via the Custom Status Modal, where you usually configure your Custom Status."
} ) : Object . keys ( BDFDB . ObjectUtils . sort ( this . props . entries , this . props . sortKey ) ) . map ( id => [
2021-01-20 17:42:56 +01:00
this . props . hovered == id && BDFDB . ReactUtils . createElement ( "div" , {
className : BDFDB . disCN . _customstatuspresetssortdivider
} ) ,
this . props . dragged != id && BDFDB . ReactUtils . createElement ( "div" , {
className : BDFDB . disCN . _customstatuspresetssortablecard ,
cardId : id ,
onMouseDown : event => {
event = event . nativeEvent || event ;
let target = BDFDB . DOMUtils . containsClass ( event . target , BDFDB . disCN . hovercard ) ? event . target . parentElement : event . target ;
if ( ! BDFDB . DOMUtils . containsClass ( target , BDFDB . disCN . _customstatuspresetssortablecard ) ) return ;
let mouseMove = event2 => {
if ( Math . sqrt ( ( event . pageX - event2 . pageX ) * * 2 ) > 20 || Math . sqrt ( ( event . pageY - event2 . pageY ) * * 2 ) > 20 ) {
BDFDB . ListenerUtils . stopEvent ( event ) ;
this . createDragPreview ( target , event2 ) ;
this . props . dragged = id ;
BDFDB . ReactUtils . forceUpdate ( this ) ;
document . removeEventListener ( "mousemove" , mouseMove ) ;
document . removeEventListener ( "mouseup" , mouseUp ) ;
let dragging = event3 => {
this . updateDragPreview ( event3 ) ;
2021-02-07 22:36:14 +01:00
let hoveredId = BDFDB . DOMUtils . getParent ( BDFDB . dotCN . _customstatuspresetssortablecard , event3 . target ) ;
hoveredId = hoveredId && hoveredId . getAttribute ( "cardId" ) ;
2021-01-20 17:42:56 +01:00
let update = hoveredId != this . props . hovered ;
this . props . hovered = hoveredId ;
if ( update ) BDFDB . ReactUtils . forceUpdate ( this ) ;
} ;
let releasing = event3 => {
BDFDB . ListenerUtils . stopEvent ( event3 ) ;
BDFDB . DOMUtils . remove ( this . props . dragPreview ) ;
if ( this . props . hovered ) {
presets [ id ] [ this . props . sortKey ] = presets [ this . props . hovered ] [ this . props . sortKey ] - 0.5 ;
let pos = 0 , sortedPresets = BDFDB . ObjectUtils . sort ( presets , this . props . sortKey ) ;
for ( let sortId in sortedPresets ) presets [ sortId ] [ this . props . sortKey ] = pos ++ ;
this . props . entries = presets ;
BDFDB . DataUtils . save ( presets , _this , "presets" ) ;
}
delete this . props . dragged ;
delete this . props . hovered ;
BDFDB . ReactUtils . forceUpdate ( this ) ;
document . removeEventListener ( "mousemove" , dragging ) ;
document . removeEventListener ( "mouseup" , releasing ) ;
} ;
document . addEventListener ( "mousemove" , dragging ) ;
document . addEventListener ( "mouseup" , releasing ) ;
}
} ;
let mouseUp = _ => {
document . removeEventListener ( "mousemove" , mouseMove ) ;
document . removeEventListener ( "mouseup" , mouseUp ) ;
} ;
document . addEventListener ( "mousemove" , mouseMove ) ;
document . addEventListener ( "mouseup" , mouseUp ) ;
} ,
children : BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . Card , {
horizontal : true ,
children : [
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . Flex . Child , {
wrap : true ,
2021-04-03 17:25:09 +02:00
children : BDFDB . ReactUtils . createElement ( CustomStatusInputComponent , {
2021-01-20 17:42:56 +01:00
text : presets [ id ] . text ,
emoji : presets [ id ] . emojiInfo ,
onChange : value => {
presets [ id ] . text = value . text ;
presets [ id ] . emojiInfo = value . emoji ;
BDFDB . DataUtils . save ( presets , _this , "presets" ) ;
}
} )
} ) ,
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . Flex . Child , {
children : BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . Switch , {
value : ! presets [ id ] . disabled ,
onChange : value => {
presets [ id ] . disabled = ! value ;
BDFDB . DataUtils . save ( presets , _this , "presets" ) ;
}
} )
} )
] ,
onRemove : _ => {
delete presets [ id ] ;
BDFDB . DataUtils . save ( presets , _this , "presets" ) ;
this . props . entries = presets ;
BDFDB . ReactUtils . forceUpdate ( this ) ;
}
} )
} )
] ) . flat ( ) . filter ( n => n ) ;
}
} ;
2021-01-09 20:54:44 +01:00
return class CustomStatusPresets extends Plugin {
onLoad ( ) {
2021-01-20 17:42:56 +01:00
_this = this ;
2021-01-09 20:54:44 +01:00
this . patchedModules = {
before : {
Menu : "default"
} ,
after : {
Account : "render" ,
CustomStatusModal : "render"
}
} ;
this . css = `
$ { BDFDB . dotCN . customstatusmodal } {
min - width : 440 px ;
width : unset ;
}
$ { BDFDB . dotCN . animationcontainerscale + BDFDB . dotCN . animationcontainerrender } {
transform : unset ! important ;
}
# status - picker$ { BDFDB . dotCN . menu } # status - picker - custom - status$ { BDFDB . dotCN . menulabelcontainer } {
padding : 0 ;
}
# status - picker$ { BDFDB . dotCN . menu } # status - picker - custom - status $ { BDFDB . dotCN . menulabel } {
overflow : visible ;
white - space : unset ;
}
2021-05-20 19:11:58 +02:00
# status - picker$ { BDFDB . dotCN . menu } # status - picker - custom - status $ { BDFDB . dotCN . customstatusitem } {
grid - template - rows : minmax ( 24 px , auto ) 1 fr ;
}
2021-01-09 20:54:44 +01:00
# status - picker$ { BDFDB . dotCN . menu } # status - picker - custom - status $ { BDFDB . dotCN . customstatusitemcustom } ,
# status - picker$ { BDFDB . dotCN . menu } # status - picker - custom - status $ { BDFDB . dotCN . customstatusitemcustomwithemoji } {
display : flex ;
padding - right : 0 ;
padding - left : 0 ;
}
# status - picker$ { BDFDB . dotCN . menu } # status - picker - custom - status $ { BDFDB . dotCNS . customstatusitemcustomwithemoji + BDFDB . dotCN . customstatusitememoji } {
margin - left : 4 px ;
order : 3 ;
}
# status - picker$ { BDFDB . dotCN . menu } # status - picker - custom - status $ { BDFDB . dotCN . customstatusitemcustomtext } {
flex : 1 1 auto ;
max - width : 126 px ;
overflow : hidden ;
order : 2 ;
}
# status - picker$ { BDFDB . dotCN . menu } # status - picker - custom - status $ { BDFDB . dotCN . customstatusitemclearbutton } {
margin - right : 10 px ;
margin - left : 2 px ;
order : 1 ;
}
$ { BDFDB . dotCN . _customstatuspresetscustomstatusitem } {
display : flex ;
align - items : center ;
}
$ { BDFDB . dotCN . _customstatuspresetsdeletebutton } {
display : flex ;
margin - right : 6 px ;
}
2021-04-13 16:30:51 +02:00
$ { BDFDB . dotCN . _customstatuspresetsstatus } {
margin - right : 6 px ;
2021-07-08 16:59:41 +02:00
flex : 0 0 auto ;
2021-04-13 16:30:51 +02:00
}
2021-01-20 17:42:56 +01:00
$ { BDFDB . dotCN . _customstatuspresetssortdivider } {
background : $ { BDFDB . DiscordConstants . Colors . STATUS _GREEN } ;
height : 2 px ;
margin : 0 26 px 8 px 0 ;
}
$ { BDFDB . dotCN . _customstatuspresetsdragpreview } {
pointer - events : none ! important ;
position : absolute ! important ;
opacity : 0.5 ! important ;
z - index : 10000 ! important ;
}
2021-01-09 20:54:44 +01:00
` ;
}
onStart ( ) {
this . forceUpdateAll ( ) ;
}
onStop ( ) {
this . forceUpdateAll ( ) ;
}
2021-01-20 17:42:56 +01:00
getSettingsPanel ( collapseStates = { } ) {
let settingsPanel , settingsItems = [ ] ;
settingsItems . push ( BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SettingsPanelList , {
title : "Custom Status Presets:" ,
dividerTop : true ,
2021-04-03 17:25:09 +02:00
children : BDFDB . ReactUtils . createElement ( SortableListComponent , {
2021-01-20 17:42:56 +01:00
entries : presets ,
sortKey : "pos"
} )
} ) ) ;
return settingsPanel = BDFDB . PluginUtils . createSettingsPanel ( this , settingsItems ) ;
}
2021-01-09 20:54:44 +01:00
forceUpdateAll ( ) {
presets = BDFDB . DataUtils . load ( this , "presets" ) ;
BDFDB . PatchUtils . forceAllUpdates ( this ) ;
}
processMenu ( e ) {
2021-01-20 17:42:56 +01:00
let enabledPresets = BDFDB . ObjectUtils . filter ( presets , id => ! presets [ id ] . disabled , true ) ;
if ( e . instance . props . navId == "status-picker" && Object . keys ( enabledPresets ) . length ) {
2021-01-09 20:54:44 +01:00
let [ children , index ] = BDFDB . ContextMenuUtils . findItem ( e . instance , { id : "custom-status" } ) ;
if ( index > - 1 && children [ index ] . props && ! children [ index ] . props . children ) {
let render = children [ index ] . props . render ;
delete children [ index ] . props . render ;
children [ index ] = BDFDB . ContextMenuUtils . createItem ( BDFDB . LibraryComponents . MenuItems . MenuItem , Object . assign ( { } , children [ index ] . props , {
label : render ( ) ,
2021-01-20 17:42:56 +01:00
children : Object . keys ( BDFDB . ObjectUtils . sort ( enabledPresets , "pos" ) ) . map ( id => BDFDB . ContextMenuUtils . createItem ( BDFDB . LibraryComponents . MenuItems . MenuItem , {
id : BDFDB . ContextMenuUtils . createItemId ( this . name , "custom-status-preset" , id ) ,
2021-01-09 20:54:44 +01:00
label : BDFDB . ReactUtils . createElement ( "div" , {
className : BDFDB . disCN . _customstatuspresetscustomstatusitem ,
children : [
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . TooltipContainer , {
text : BDFDB . LanguageUtils . LanguageStrings . CUSTOM _STATUS _CLEAR _CUSTOM _STATUS ,
tooltipConfig : {
zIndex : 2001
} ,
children : BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . Clickable , {
className : BDFDB . disCN . _customstatuspresetsdeletebutton ,
onClick : _ => {
2021-01-20 17:42:56 +01:00
delete presets [ id ] ;
2021-01-09 20:54:44 +01:00
let pos = 0 , sortedPresets = BDFDB . ObjectUtils . sort ( presets , "pos" ) ;
2021-01-20 17:42:56 +01:00
for ( let id in sortedPresets ) presets [ id ] . pos = pos ++ ;
2021-01-09 20:54:44 +01:00
BDFDB . DataUtils . save ( presets , this , "presets" ) ;
} ,
children : BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SvgIcon , {
className : BDFDB . disCN . _customstatuspresetsdeleteicon ,
name : BDFDB . LibraryComponents . SvgIcon . Names . CLOSE _CIRCLE ,
width : 14 ,
height : 14
} )
} )
} ) ,
2021-04-13 16:30:51 +02:00
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . Status , {
className : BDFDB . disCN . _customstatuspresetsstatus ,
status : presets [ id ] . status || BDFDB . DiscordConstants . StatusTypes . ONLINE
} ) ,
2021-07-08 16:59:41 +02:00
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . TextScroller , {
children : presets [ id ] . text
} )
2021-01-09 20:54:44 +01:00
]
} ) ,
2021-01-20 17:42:56 +01:00
imageUrl : presets [ id ] . emojiInfo && ( presets [ id ] . emojiInfo . id ? BDFDB . LibraryModules . IconUtils . getEmojiURL ( presets [ id ] . emojiInfo ) : BDFDB . LibraryModules . EmojiStateUtils . getURL ( presets [ id ] . emojiInfo . name ) ) ,
hint : ! presets [ id ] . clearAfter ? BDFDB . LanguageUtils . LanguageStrings . DISPLAY _OPTION _NEVER : presets [ id ] . clearAfter == BDFDB . LibraryModules . CustomStatusConstants . ClearAfterValues . TODAY ? BDFDB . LanguageUtils . LanguageStrings . CUSTOM _STATUS _TODAY : BDFDB . LanguageUtils . LanguageStringsFormat ( "CUSTOM_STATUS_HOURS" , presets [ id ] . clearAfter / 3600000 ) ,
2021-01-09 20:54:44 +01:00
action : _ => {
2021-01-20 17:42:56 +01:00
if ( ! presets [ id ] ) return ;
let expiresAt = presets [ id ] . clearAfter ? presets [ id ] . clearAfter : null ;
if ( presets [ id ] . clearAfter === BDFDB . LibraryModules . CustomStatusConstants . ClearAfterValues . TODAY ) {
2021-01-09 20:54:44 +01:00
let date = new Date ;
expiresAt = new Date ( date . getFullYear ( ) , date . getMonth ( ) , date . getDate ( ) + 1 ) . getTime ( ) - date . getTime ( ) ;
}
BDFDB . LibraryModules . SettingsUtils . updateRemoteSettings ( {
2021-04-13 16:30:51 +02:00
status : presets [ id ] . status ,
2021-01-09 20:54:44 +01:00
customStatus : {
2021-01-20 17:42:56 +01:00
text : presets [ id ] . text && presets [ id ] . text . length > 0 ? presets [ id ] . text : null ,
2021-01-09 22:07:56 +01:00
expiresAt : expiresAt ? BDFDB . DiscordObjects . Timestamp ( ) . add ( expiresAt , "ms" ) . toISOString ( ) : null ,
2021-01-20 17:42:56 +01:00
emojiId : presets [ id ] . emojiInfo ? presets [ id ] . emojiInfo . id : null ,
emojiName : presets [ id ] . emojiInfo ? presets [ id ] . emojiInfo . name : null
2021-01-09 20:54:44 +01:00
}
} ) ;
}
} ) )
} ) ) ;
}
}
}
processCustomStatusModal ( e ) {
let id = BDFDB . NumberUtils . generateId ( Object . keys ( presets ) ) ;
let footer = BDFDB . ReactUtils . findChild ( e . returnvalue , { name : [ "ModalFooter" , "Footer" ] } ) ;
if ( footer ) footer . props . children . splice ( 1 , 0 , BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . Button , {
color : BDFDB . disCN . modalcancelbutton ,
look : BDFDB . LibraryComponents . Button . Looks . LINK ,
onClick : event => {
2021-04-13 16:30:51 +02:00
presets [ id ] = Object . assign ( { pos : Object . keys ( presets ) . length } , BDFDB . ObjectUtils . extract ( e . instance . state , "clearAfter" , "emojiInfo" , "status" , "text" ) ) ;
2021-01-09 20:54:44 +01:00
BDFDB . DataUtils . save ( presets , this , "presets" ) ;
if ( ! event . shiftKey ) e . instance . props . onClose ( ) ;
else id = BDFDB . NumberUtils . generateId ( Object . keys ( presets ) ) ;
} ,
children : this . labels . modal _savepreset
} ) ) ;
}
setLabelsByLanguage ( ) {
switch ( BDFDB . LanguageUtils . getLanguage ( ) . id ) {
case "bg" : // Bulgarian
return {
modal _savepreset : "Запазване като бърз избор"
} ;
case "da" : // Danish
return {
modal _savepreset : "Gem som hurtigvalg"
} ;
case "de" : // German
return {
modal _savepreset : "Als Schnellauswahl speichern"
} ;
case "el" : // Greek
return {
modal _savepreset : "Αποθήκευση ως γρήγορη επιλογή"
} ;
case "es" : // Spanish
return {
modal _savepreset : "Guardar como selección rápida"
} ;
case "fi" : // Finnish
return {
modal _savepreset : "Tallenna pikavalintana"
} ;
case "fr" : // French
return {
modal _savepreset : "Enregistrer en tant que sélection rapide"
} ;
case "hr" : // Croatian
return {
modal _savepreset : "Spremi kao brzi odabir"
} ;
case "hu" : // Hungarian
return {
modal _savepreset : "Mentés gyorsválasztásként"
} ;
case "it" : // Italian
return {
modal _savepreset : "Salva come selezione rapida"
} ;
case "ja" : // Japanese
return {
modal _savepreset : "クイック選択として保存"
} ;
case "ko" : // Korean
return {
modal _savepreset : "빠른 선택으로 저장"
} ;
case "lt" : // Lithuanian
return {
modal _savepreset : "Išsaugoti kaip greitą pasirinkimą"
} ;
case "nl" : // Dutch
return {
modal _savepreset : "Opslaan als snel selecteren"
} ;
case "no" : // Norwegian
return {
modal _savepreset : "Lagre som hurtigvalg"
} ;
case "pl" : // Polish
return {
modal _savepreset : "Zapisz jako Szybki wybór"
} ;
case "pt-BR" : // Portuguese (Brazil)
return {
modal _savepreset : "Salvar como seleção rápida"
} ;
case "ro" : // Romanian
return {
modal _savepreset : "Salvați ca selecție rapidă"
} ;
case "ru" : // Russian
return {
modal _savepreset : "Сохранить как быстрый выбор"
} ;
case "sv" : // Swedish
return {
modal _savepreset : "Spara som snabbval"
} ;
case "th" : // Thai
return {
modal _savepreset : "บันทึกเป็น เลือกด่วน"
} ;
case "tr" : // Turkish
return {
modal _savepreset : "Hı zlı Seçim olarak kaydet"
} ;
case "uk" : // Ukrainian
return {
modal _savepreset : "Зберегти як швидкий вибір"
} ;
case "vi" : // Vietnamese
return {
modal _savepreset : "Lưu dưới dạng Chọn nhanh"
} ;
2021-01-15 17:54:22 +01:00
case "zh-CN" : // Chinese (China)
2021-01-09 20:54:44 +01:00
return {
modal _savepreset : "另存为快速选择"
} ;
2021-01-15 17:54:22 +01:00
case "zh-TW" : // Chinese (Taiwan)
2021-01-09 20:54:44 +01:00
return {
modal _savepreset : "另存為快速選擇"
} ;
default : // English
return {
modal _savepreset : "Save as Quick Select"
} ;
}
}
} ;
} ) ( window . BDFDB _Global . PluginUtils . buildPlugin ( config ) ) ;
2021-02-07 22:36:14 +01:00
} ) ( ) ;