2020-10-20 23:25:34 +02:00
/ * *
* @ name EditChannels
2021-03-05 13:26:41 +01:00
* @ author DevilBro
2020-10-20 23:25:34 +02:00
* @ authorId 278543574059057154
2023-07-06 08:52:35 +02:00
* @ version 4.5 . 4
2021-03-05 13:26:41 +01:00
* @ description Allows you to locally edit Channels
2020-10-20 23:25:34 +02:00
* @ invite Jx3TjNS
2020-11-19 16:45:36 +01:00
* @ 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/EditChannels/
2021-03-10 09:17:37 +01:00
* @ updateUrl https : //mwittrien.github.io/BetterDiscordAddons/Plugins/EditChannels/EditChannels.plugin.js
2020-10-20 23:25:34 +02:00
* /
2018-10-11 10:21:26 +02:00
2020-09-19 20:49:33 +02:00
module . exports = ( _ => {
2022-09-01 14:40:11 +02:00
const changeLog = {
2022-09-02 12:37:10 +02:00
2020-09-19 20:49:33 +02:00
} ;
2020-11-13 19:47:44 +01:00
2022-02-05 21:14:17 +01:00
return ! window . BDFDB _Global || ( ! window . BDFDB _Global . loaded && ! window . BDFDB _Global . started ) ? class {
2022-09-01 14:55:22 +02:00
constructor ( meta ) { for ( let key in meta ) this [ key ] = meta [ key ] ; }
getName ( ) { return this . name ; }
getAuthor ( ) { return this . author ; }
getVersion ( ) { return this . version ; }
getDescription ( ) { return ` The Library Plugin needed for ${ this . name } is missing. Open the Plugin Settings to download it. \n \n ${ this . description } ` ; }
2021-02-01 17:13:13 +01:00
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
} ) ;
}
2020-09-19 20:49:33 +02:00
2021-01-06 12:38:36 +01:00
load ( ) {
2020-11-19 16:51:14 +01:00
if ( ! window . BDFDB _Global || ! Array . isArray ( window . BDFDB _Global . pluginQueue ) ) window . BDFDB _Global = Object . assign ( { } , window . BDFDB _Global , { pluginQueue : [ ] } ) ;
2020-09-19 20:49:33 +02:00
if ( ! window . BDFDB _Global . downloadModal ) {
window . BDFDB _Global . downloadModal = true ;
2022-09-01 14:55:22 +02:00
BdApi . showConfirmationModal ( "Library Missing" , ` The Library Plugin needed for ${ this . name } is missing. Please click "Download Now" to install it. ` , {
2020-09-19 20:49:33 +02:00
confirmText : "Download Now" ,
cancelText : "Cancel" ,
onCancel : _ => { delete window . BDFDB _Global . downloadModal ; } ,
2020-09-20 08:15:13 +02:00
onConfirm : _ => {
delete window . BDFDB _Global . downloadModal ;
2021-02-01 17:13:13 +01:00
this . downloadLibrary ( ) ;
2020-09-20 08:15:13 +02:00
}
2020-09-19 20:49:33 +02:00
} ) ;
}
2022-09-01 14:55:22 +02:00
if ( ! window . BDFDB _Global . pluginQueue . includes ( this . name ) ) window . BDFDB _Global . pluginQueue . push ( this . name ) ;
2020-10-09 21:09:35 +02:00
}
2021-01-06 12:38:36 +01:00
start ( ) { this . load ( ) ; }
stop ( ) { }
getSettingsPanel ( ) {
2020-11-28 23:12:09 +01:00
let template = document . createElement ( "template" ) ;
2022-09-01 14:55:22 +02: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 ${ this . 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 ) ;
2020-11-28 23:12:09 +01:00
return template . content . firstElementChild ;
}
2020-10-09 21:09:35 +02:00
} : ( ( [ Plugin , BDFDB ] ) => {
2021-05-20 16:44:45 +02:00
var changedChannels = { } ;
2022-11-23 10:55:10 +01:00
var appTitleObserver ;
2020-09-19 20:49:33 +02:00
2020-10-09 21:09:35 +02:00
return class EditChannels extends Plugin {
2021-01-06 12:38:36 +01:00
onLoad ( ) {
2020-09-19 20:49:33 +02:00
this . defaults = {
2021-05-20 16:44:45 +02:00
general : {
changeChannelIcon : { value : true , description : "Change Color of Channel Icon" }
} ,
places : {
chatTextarea : { value : true , description : "Chat Textarea" } ,
2021-07-28 23:04:01 +02:00
chatWindow : { value : true , description : "Messages" } ,
2021-05-20 16:44:45 +02:00
mentions : { value : true , description : "Mentions" } ,
channelList : { value : true , description : "Channel/Group List" } ,
channelHeader : { value : true , description : "Channel/Group Header" } ,
recentDms : { value : true , description : "Group Notifications" } ,
recentMentions : { value : true , description : "Recent Mentions Popout" } ,
2021-07-28 23:04:01 +02:00
threads : { value : true , description : "Thread Overview" } ,
2021-05-20 16:44:45 +02:00
autocompletes : { value : true , description : "Autocomplete Menu" } ,
auditLog : { value : true , description : "Audit Log" } ,
inviteLog : { value : true , description : "Invite Log" } ,
quickSwitcher : { value : true , description : "Quick Switcher" } ,
searchResults : { value : true , description : "Search Results" } ,
searchPopout : { value : true , description : "Search Popout" } ,
appTitle : { value : true , description : "Discord App Title (Channels)" }
2020-09-19 20:49:33 +02:00
}
} ;
2020-02-04 08:20:40 +01:00
2022-11-04 20:53:39 +01:00
this . modulePatches = {
before : [
"AuditLogEntry" ,
"AutocompleteChannelResult" ,
2022-11-29 18:50:17 +01:00
"ChannelEmptyMessages" ,
2022-11-04 20:53:39 +01:00
"ChannelsList" ,
"ChannelTextAreaEditor" ,
"ChannelThreadItem" ,
2022-11-29 14:12:15 +01:00
"GuildInvites" ,
2022-11-04 20:53:39 +01:00
"MessageContent" ,
"QuickSwitchChannelResult" ,
"RecentsChannelHeader" ,
"SearchPopout" ,
"SystemMessageWrapper" ,
"ThreadMessageAccessories"
] ,
after : [
"AuditLogEntry" ,
"AutocompleteChannelResult" ,
"ChannelItem" ,
"ChannelThreadItem" ,
"DirectMessage" ,
"FocusRingScope" ,
"HeaderBarContainer" ,
"PrivateChannel" ,
"QuickSwitchChannelResult" ,
"RecentsChannelHeader" ,
"RichChannelMention" ,
"SearchResultsInner" ,
"SystemMessageThreadCreated" ,
"ThreadCard" ,
"ThreadMessageAccessories" ,
"ThreadSidebar"
]
2020-09-19 20:49:33 +02:00
} ;
2021-06-09 17:52:32 +02:00
this . patchPriority = 9 ;
2020-09-19 20:49:33 +02:00
this . css = `
$ { BDFDB . dotCN . messagespopoutchannelname } : hover > span [ style *= "color" ] ,
2022-11-04 20:53:39 +01:00
$ { BDFDB . dotCN . recentmentionschannelname } : hover span [ style *= "color" ] ,
2021-02-04 22:51:39 +01:00
$ { BDFDB . dotCN . searchresultschannelname } : hover > span [ style *= "color" ] {
2020-09-19 20:49:33 +02:00
text - decoration : underline ;
}
` ;
2020-02-04 08:20:40 +01:00
}
2020-09-19 20:49:33 +02:00
2022-11-23 10:55:10 +01:00
onStart ( ) {
appTitleObserver = new MutationObserver ( _ => this . changeAppTitle ( ) ) ;
appTitleObserver . observe ( document . head . querySelector ( "title" ) , { childList : true } ) ;
2022-08-29 13:46:12 +02:00
BDFDB . PatchUtils . patch ( this , BDFDB . LibraryModules . QuerySearchUtils , "queryChannels" , { after : e => {
if ( ! e . methodArguments [ 0 ] . query ) return ;
2023-06-06 08:48:41 +02:00
for ( let id of BDFDB . LibraryStores . SortedGuildStore . getFlattenedGuildIds ( ) . map ( id => Object . keys ( BDFDB . LibraryStores . ChannelStore . getMutableGuildChannelsForGuild ( id ) ) ) . flat ( ) ) {
2022-09-27 14:48:10 +02:00
let channel = BDFDB . LibraryStores . ChannelStore . getChannel ( id ) ;
2022-08-29 13:46:12 +02:00
if ( channel && ! channel . isCategory ( ) ) {
2022-09-27 14:48:10 +02:00
let category = channel . parent _id && BDFDB . LibraryStores . ChannelStore . getChannel ( channel . parent _id ) ;
2022-09-27 20:05:55 +02:00
if ( ( ( changedChannels [ id ] && changedChannels [ id ] . name && changedChannels [ id ] . name . toLocaleLowerCase ( ) . indexOf ( e . methodArguments [ 0 ] . query . toLocaleLowerCase ( ) ) > - 1 ) || ( category && changedChannels [ category . id ] && changedChannels [ category . id ] . name && changedChannels [ category . id ] . name . toLocaleLowerCase ( ) . indexOf ( e . methodArguments [ 0 ] . query . toLocaleLowerCase ( ) ) > - 1 ) ) && ! e . returnValue . find ( n => n . record && n . record . id == id && ( n . type == BDFDB . DiscordConstants . AutocompleterResultTypes . VOICE _CHANNEL || n . type == BDFDB . DiscordConstants . AutocompleterResultTypes . TEXT _CHANNEL ) ) ) e . returnValue . push ( {
2022-08-29 13:46:12 +02:00
comparator : channel . name ,
record : channel ,
score : 30000 ,
sortable : channel . name . toLocaleLowerCase ( ) ,
2022-09-27 20:05:55 +02:00
type : channel . isGuildVocal ( ) ? BDFDB . DiscordConstants . AutocompleterResultTypes . VOICE _CHANNEL : BDFDB . DiscordConstants . AutocompleterResultTypes . TEXT _CHANNEL
2022-08-29 13:46:12 +02:00
} ) ;
}
2020-09-26 18:37:56 +02:00
}
} } ) ;
2020-02-04 08:20:40 +01:00
this . forceUpdateAll ( ) ;
}
2020-09-19 20:49:33 +02:00
2021-01-06 12:38:36 +01:00
onStop ( ) {
2022-11-23 10:55:10 +01:00
if ( appTitleObserver ) appTitleObserver . disconnect ( ) ;
2020-06-08 20:50:04 +02:00
this . forceUpdateAll ( ) ;
2020-02-04 08:20:40 +01:00
}
2019-01-26 22:45:19 +01:00
2020-09-19 20:49:33 +02:00
getSettingsPanel ( collapseStates = { } ) {
2021-05-20 16:44:45 +02:00
let settingsPanel ;
return settingsPanel = BDFDB . PluginUtils . createSettingsPanel ( this , {
collapseStates : collapseStates ,
children : _ => {
let settingsItems = [ ] ;
settingsItems . push ( Object . keys ( this . defaults . general ) . map ( key => BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SettingsSaveItem , {
type : "Switch" ,
plugin : this ,
keys : [ "general" , key ] ,
label : this . defaults . general [ key ] . description ,
value : this . settings . general [ key ]
} ) ) ) ;
settingsItems . push ( BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SettingsPanelList , {
title : "Change Channels in:" ,
children : Object . keys ( this . defaults . places ) . map ( key => BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SettingsSaveItem , {
type : "Switch" ,
plugin : this ,
keys : [ "places" , key ] ,
label : this . defaults . places [ key ] . description ,
value : this . settings . places [ key ]
} ) )
} ) ) ;
settingsItems . push ( BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SettingsItem , {
type : "Button" ,
color : BDFDB . LibraryComponents . Button . Colors . RED ,
label : "Reset all Channels" ,
onClick : _ => BDFDB . ModalUtils . confirm ( this , this . labels . confirm _resetall , _ => {
BDFDB . DataUtils . remove ( this , "channels" ) ;
this . forceUpdateAll ( ) ; ;
} ) ,
children : BDFDB . LanguageUtils . LanguageStrings . RESET
} ) ) ;
return settingsItems ;
}
} ) ;
2020-02-04 08:20:40 +01:00
}
2020-01-03 21:05:35 +01:00
2021-01-06 12:38:36 +01:00
onSettingsClosed ( ) {
2020-09-19 20:49:33 +02:00
if ( this . SettingsUpdated ) {
delete this . SettingsUpdated ;
this . forceUpdateAll ( ) ;
}
2020-02-04 08:20:40 +01:00
}
2020-10-30 15:54:55 +01:00
forceUpdateAll ( instant = false ) {
2020-09-19 20:49:33 +02:00
changedChannels = BDFDB . DataUtils . load ( this , "channels" ) ;
this . changeAppTitle ( ) ;
BDFDB . PatchUtils . forceAllUpdates ( this ) ;
2022-05-26 15:01:24 +02:00
BDFDB . DiscordUtils . rerenderAll ( instant ) ;
2020-02-04 08:20:40 +01:00
}
2020-01-03 21:05:35 +01:00
2020-09-19 20:49:33 +02:00
onChannelContextMenu ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! e . instance . props . channel ) return ;
let [ children , index ] = BDFDB . ContextMenuUtils . findItem ( e . returnvalue , { id : "devmode-copy-id" , group : true } ) ;
children . splice ( index > - 1 ? index : children . length , 0 , BDFDB . ContextMenuUtils . createItem ( BDFDB . LibraryComponents . MenuItems . MenuGroup , {
children : BDFDB . ContextMenuUtils . createItem ( BDFDB . LibraryComponents . MenuItems . MenuItem , {
2022-07-08 17:04:44 +02:00
label : this . labels . context _localchannelsettings ,
id : BDFDB . ContextMenuUtils . createItemId ( this . name , "settings-submenu" ) ,
children : BDFDB . ContextMenuUtils . createItem ( BDFDB . LibraryComponents . MenuItems . MenuGroup , {
children : [
BDFDB . ContextMenuUtils . createItem ( BDFDB . LibraryComponents . MenuItems . MenuItem , {
label : this . labels . submenu _channelsettings ,
id : BDFDB . ContextMenuUtils . createItemId ( this . name , "settings-change" ) ,
action : _ => this . openChannelSettingsModal ( e . instance . props . channel )
} ) ,
BDFDB . ContextMenuUtils . createItem ( BDFDB . LibraryComponents . MenuItems . MenuItem , {
label : this . labels . submenu _resetsettings ,
id : BDFDB . ContextMenuUtils . createItemId ( this . name , "settings-reset" ) ,
2022-09-30 14:18:20 +02:00
color : BDFDB . DiscordConstants . MenuItemColors . DANGER ,
2022-07-08 17:04:44 +02:00
disabled : ! changedChannels [ e . instance . props . channel . id ] ,
action : event => {
let remove = _ => {
BDFDB . DataUtils . remove ( this , "channels" , e . instance . props . channel . id ) ;
this . forceUpdateAll ( true ) ;
} ;
if ( event . shiftKey ) remove ( ) ;
else BDFDB . ModalUtils . confirm ( this , this . labels . confirm _reset , remove ) ;
}
} )
]
2022-07-08 16:07:07 +02:00
} )
2022-11-04 20:53:39 +01:00
} )
} ) ) ;
}
onThreadContextMenu ( e ) {
this . onChannelContextMenu ( e ) ;
}
onGroupDMContextMenu ( e ) {
this . onChannelContextMenu ( e ) ;
2020-09-19 20:49:33 +02:00
}
2022-10-24 10:42:20 +02:00
processChannelTextAreaEditor ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . chatTextarea || e . instance . props . disabled || ! e . instance . props . channel || ! changedChannels [ e . instance . props . channel . id ] || e . instance . props . type != BDFDB . DiscordConstants . ChannelTextAreaTypes . NORMAL && e . instance . props . type != BDFDB . DiscordConstants . ChannelTextAreaTypes . NORMAL _WITH _ACTIVITY && e . instance . props . type != BDFDB . DiscordConstants . ChannelTextAreaTypes . SIDEBAR ) return ;
if ( changedChannels [ e . instance . props . channel . id ] . name ) e . instance . props . placeholder = BDFDB . LanguageUtils . LanguageStringsFormat ( "TEXTAREA_PLACEHOLDER" , ` # ${ changedChannels [ e . instance . props . channel . id ] . name } ` ) ;
2020-01-03 21:05:35 +01:00
}
2021-07-28 23:04:01 +02:00
2022-11-29 18:50:17 +01:00
processChannelEmptyMessages ( e ) {
if ( ! this . settings . places . chatWindow || ! e . instance . props . channel || ! changedChannels [ e . instance . props . channel . id ] ) return ;
e . instance . props . channel = this . getChannelData ( e . instance . props . channel . id ) ;
2021-07-28 23:04:01 +02:00
}
2021-07-28 23:39:25 +02:00
processSystemMessageWrapper ( e ) {
2022-11-04 20:53:39 +01:00
if ( this . settings . places . chatWindow && e . instance . props . channel && changedChannels [ e . instance . props . channel . id ] ) e . instance . props . channel = this . getChannelData ( e . instance . props . channel . id ) ;
2021-07-28 23:39:25 +02:00
}
2022-11-04 20:53:39 +01:00
processSystemMessageThreadCreated ( e ) {
if ( ! this . settings . places . chatWindow || ! e . instance . props . message || ! e . instance . props . message . messageReference || ! e . instance . props . message . messageReference . channel _id || ! changedChannels [ e . instance . props . message . messageReference . channel _id ] ) return ;
let channelName = BDFDB . ObjectUtils . get ( e , "returnvalue.props.children.2.props.children.0" ) ;
if ( changedChannels [ e . instance . props . message . messageReference . channel _id ] . name ) channelName . props . children = [ changedChannels [ e . instance . props . message . messageReference . channel _id ] . name ] ;
this . changeChannelColor ( channelName , e . instance . props . message . messageReference . channel _id ) ;
2021-07-28 23:39:25 +02:00
}
processThreadMessageAccessories ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . chatWindow || ! e . instance . props . channel || ! changedChannels [ e . instance . props . channel . id ] ) return ;
if ( ! e . returnvalue ) e . instance . props . channel = this . getChannelData ( e . instance . props . channel . id ) ;
else {
let channelName = BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "className" , BDFDB . disCN . messagesystemname ] ] } ) ;
if ( channelName ) this . changeChannelColor ( channelName , e . instance . props . channel . id ) ;
2021-07-28 23:39:25 +02:00
}
}
2020-01-03 21:05:35 +01:00
2020-09-19 20:49:33 +02:00
processAutocompleteChannelResult ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . autocompletes || ! e . instance . props . channel ) return ;
if ( ! e . returnvalue ) {
if ( e . instance . props . category ) e . instance . props . category = this . getChannelData ( e . instance . props . category . id ) ;
e . instance . props . channel = this . getChannelData ( e . instance . props . channel . id ) ;
}
else if ( typeof e . returnvalue . props . children == "function" ) {
let childrenRender = e . returnvalue . props . children ;
e . returnvalue . props . children = BDFDB . TimeUtils . suppress ( ( ... args ) => {
let modify = Object . assign ( { } , e . instance . props , e . instance . state ) ;
let children = childrenRender ( ... args ) ;
let icon = BDFDB . ReactUtils . findChild ( children , { name : "AutocompleteRowIcon" } ) ;
if ( icon ) {
let iconType = icon . type ;
icon . type = BDFDB . TimeUtils . suppress ( ( ... args2 ) => {
let iconChild = iconType ( ... args2 ) ;
if ( iconChild . props && iconChild . props . children && typeof iconChild . props . children . type == "function" ) {
let iconChildType = iconChild . props . children . type ;
iconChild . props . children . type = BDFDB . TimeUtils . suppress ( ( ... args3 ) => {
let iconSubChild = iconChildType ( ... args3 ) ;
this . changeChannelIconColor ( iconSubChild , e . instance . props . channel . id , modify ) ;
return iconSubChild ;
} , "Error in Type of AutocompleteRowIcon Child!" , this ) ;
2022-08-29 13:46:12 +02:00
}
2022-11-04 20:53:39 +01:00
return iconChild ;
} , "Error in Type of AutocompleteRowIcon!" , this ) ;
2022-08-22 22:43:09 +02:00
}
2022-11-04 20:53:39 +01:00
let channelName = BDFDB . ReactUtils . findChild ( children , { name : "AutocompleteRowContentPrimary" } ) ;
if ( channelName ) this . changeChannelColor ( channelName . props . children , e . instance . props . channel . id , modify ) ;
let categoryName = e . instance . props . category && BDFDB . ReactUtils . findChild ( children , { name : "AutocompleteRowContentSecondary" } ) ;
if ( categoryName ) this . changeChannelColor ( categoryName , e . instance . props . category . id , modify ) ;
return children ;
} , "Error in Children Render of AutocompleteChannelResult!" , this ) ;
2022-08-22 22:43:09 +02:00
}
2020-01-03 21:05:35 +01:00
}
2022-11-04 20:53:39 +01:00
processAuditLogEntry ( e ) {
if ( ! this . settings . places . auditLog ) return ;
2020-09-19 20:49:33 +02:00
let channel = BDFDB . ObjectUtils . get ( e . instance , "props.log.options.channel" ) ;
2022-11-04 20:53:39 +01:00
if ( ! channel ) return ;
if ( ! e . returnvalue ) e . instance . props . log . options . channel = this . getChannelData ( channel . id ) ;
else {
let channelName = BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "children" , [ [ "#" + channel . name ] ] ] ] } ) ;
if ( channelName ) this . changeChannelColor ( channelName , channel . id ) ;
2020-02-04 08:20:40 +01:00
}
2020-01-03 21:05:35 +01:00
}
2022-11-29 14:12:15 +01:00
processGuildInvites ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . inviteLog || ! e . instance . props . invites ) return ;
e . instance . props . invites = Object . assign ( { } , e . instance . props . invites ) ;
for ( let id in e . instance . props . invites ) e . instance . props . invites [ id ] = new BDFDB . DiscordObjects . Invite ( Object . assign ( { } , e . instance . props . invites [ id ] , { channel : this . getChannelData ( e . instance . props . invites [ id ] . channel . id ) } ) ) ;
2020-01-03 21:05:35 +01:00
}
2021-07-28 23:04:01 +02:00
2020-09-19 20:49:33 +02:00
processHeaderBarContainer ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . channelHeader ) return ;
2022-09-27 14:48:10 +02:00
let channel = BDFDB . LibraryStores . ChannelStore . getChannel ( e . instance . props . channelId ) ;
2022-11-04 20:53:39 +01:00
if ( ! channel ) return ;
let thread ;
if ( BDFDB . ChannelUtils . isThread ( channel ) ) {
thread = channel ;
channel = BDFDB . LibraryStores . ChannelStore . getChannel ( thread . parent _id ) ;
}
if ( ! changedChannels [ channel . id ] && ! ( thread && changedChannels [ thread . id ] ) ) return ;
let channelNames = BDFDB . ReactUtils . findChild ( e . returnvalue , { all : true , name : [ "HeaderBarTitle" , "HeaderBarChannelName" ] } ) ;
if ( channelNames . length ) {
if ( channelNames [ 0 ] . props . children ) {
if ( changedChannels [ channel . id ] && changedChannels [ channel . id ] . name ) channelNames [ 0 ] . props . children = channel . isGroupDM ( ) ? this . getGroupName ( channel . id ) : this . getChannelData ( channel . id ) . name ;
this . changeChannelColor ( channelNames [ 0 ] , channel . id ) ;
}
if ( channelNames [ 0 ] . props . channel ) channelNames [ 0 ] . props . channel = this . getChannelData ( channel . id ) ;
if ( thread && channelNames [ 1 ] . props . children ) {
if ( changedChannels [ thread . id ] && changedChannels [ thread . id ] . name ) channelNames [ 1 ] . props . children = this . getChannelData ( thread . id ) . name ;
this . changeChannelColor ( channelNames [ 1 ] , thread . id ) ;
2021-07-28 23:04:01 +02:00
}
2022-11-04 20:53:39 +01:00
}
let channelIcons = BDFDB . ReactUtils . findChild ( e . returnvalue , { all : true , name : "HeaderBarTitleIcon" } ) ;
if ( channelIcons . length ) {
if ( channelIcons [ 0 ] . props . icon ) {
let iconRender = channelIcons [ 0 ] . props . icon ;
channelIcons [ 0 ] . props . icon = BDFDB . TimeUtils . suppress ( ( ... args ) => {
let icon = iconRender ( ... args ) ;
this . changeChannelIconColor ( icon , channel . id ) ;
return icon ;
} , "Error in Channel Icon Render of HeaderBarContainer!" , this ) ;
}
if ( thread && channelIcons [ 1 ] . props . icon ) {
let iconRender = channelIcons [ 1 ] . props . icon ;
channelIcons [ 1 ] . props . icon = BDFDB . TimeUtils . suppress ( ( ... args ) => {
let icon = iconRender ( ... args ) ;
this . changeChannelIconColor ( icon , thread . id ) ;
return icon ;
} , "Error in Thread Icon Render of HeaderBarContainer!" , this ) ;
2020-03-08 14:07:16 +01:00
}
2020-02-04 08:20:40 +01:00
}
2020-01-03 21:05:35 +01:00
}
2021-07-28 23:04:01 +02:00
processThreadSidebar ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . channelHeader || ! changedChannels [ e . instance . props . channelId ] ) return ;
let channelName = BDFDB . ReactUtils . findChild ( e . returnvalue , { name : [ "HeaderBarTitle" , "HeaderBarChannelName" ] } ) ;
if ( channelName && channelName . props . children ) {
if ( changedChannels [ e . instance . props . channelId ] . name ) channelName . props . children = this . getChannelData ( e . instance . props . channelId ) . name ;
this . changeChannelColor ( channelName , e . instance . props . channelId ) ;
}
let [ children , index ] = BDFDB . ReactUtils . findParent ( e . returnvalue , { name : "HeaderBarTitleIcon" } ) ;
if ( index > - 1 ) {
let icon = BDFDB . ReactUtils . createElement ( children [ index ] . props . icon , {
className : BDFDB . disCN . channelheadericon
} ) ;
this . changeChannelIconColor ( icon , e . instance . props . channelId ) ;
children [ index ] = BDFDB . ReactUtils . createElement ( "div" , {
className : BDFDB . disCN . channelheadericonwrapper ,
children : icon
} )
2021-07-28 23:04:01 +02:00
}
}
processThreadCard ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . threads || ! changedChannels [ e . instance . props . threadId ] ) return ;
let channelName = BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "className" , BDFDB . disCN . threadcardname ] ] } ) ;
if ( channelName ) {
if ( changedChannels [ e . instance . props . threadId ] . name ) channelName . props . children = changedChannels [ e . instance . props . threadId ] . name ;
this . changeChannelColor ( channelName , e . instance . props . threadId ) ;
2021-07-28 23:04:01 +02:00
}
}
2020-01-03 21:05:35 +01:00
2022-11-04 20:53:39 +01:00
processFocusRingScope ( e ) {
if ( ! e . returnvalue || ! e . returnvalue . props . className ) return ;
let change , hoveredEvents , channelId , nameClass , categoyClass , iconClass , modify = { } ;
if ( this . settings . places . channelList && e . returnvalue . props . className . indexOf ( BDFDB . disCN . categoryiconvisibility ) > - 1 ) {
change = true ;
hoveredEvents = true ;
channelId = ( BDFDB . ReactUtils . findValue ( e . returnvalue , "data-list-item-id" ) || "" ) . split ( "___" ) . pop ( ) ;
nameClass = BDFDB . disCN . categoryname ;
iconClass = BDFDB . disCN . categoryicon ;
modify = { muted : BDFDB . LibraryStores . UserGuildSettingsStore . isGuildOrCategoryOrChannelMuted ( BDFDB . LibraryStores . SelectedGuildStore . getGuildId ( ) , channelId ) } ;
2020-02-04 08:20:40 +01:00
}
2022-11-04 20:53:39 +01:00
else if ( this . settings . places . searchPopout && e . returnvalue . props . className . indexOf ( BDFDB . disCN . searchpopoutoption ) > - 1 ) {
change = true ;
let channel = ( BDFDB . ReactUtils . findValue ( e . returnvalue . _owner , "result" , { up : true } ) || { } ) . channel ;
channelId = channel && channel . id ;
nameClass = BDFDB . disCN . searchpopoutresultchannel ;
categoyClass = BDFDB . disCN . searchpopoutsearchresultchannelcategory ;
iconClass = BDFDB . disCN . searchpopoutsearchresultchannelicon ;
}
if ( change && channelId ) {
if ( hoveredEvents ) {
2022-08-23 14:29:07 +02:00
let changeColors = ( wrapper , props ) => {
2022-11-04 20:53:39 +01:00
let color = this . chooseColor ( this . getChannelDataColor ( channelId ) , props ) ;
let channelName = wrapper . querySelector ( ` . ${ nameClass } > * ` ) ;
let channelIcon = wrapper . querySelector ( ` . ${ iconClass } ` ) ;
2022-08-23 14:29:07 +02:00
if ( channelName && channelName . firstElementChild ) channelName . firstElementChild . style . setProperty ( "color" , color ) ;
if ( channelIcon ) {
for ( let path of channelIcon . querySelectorAll ( '[path*="rgba("], [path*="rgb("]' ) ) path . setAttribute ( "path" , color ) ;
for ( let fill of channelIcon . querySelectorAll ( '[fill*="rgba("], [fill*="rgb("]' ) ) fill . setAttribute ( "fill" , color ) ;
}
} ;
2022-11-04 20:53:39 +01:00
let onMouseEnter = e . instance . props . children . props . onMouseEnter , onMouseLeave = e . instance . props . children . props . onMouseLeave ;
e . instance . props . children . props . onMouseEnter = BDFDB . TimeUtils . suppress ( event => {
2022-08-23 14:29:07 +02:00
changeColors ( event . currentTarget , { hovered : true } ) ;
return ( onMouseEnter || ( _ => { } ) ) ( event ) ;
} , "Error in onMouseEnter of ChannelItem!" , this ) ;
2022-11-04 20:53:39 +01:00
e . instance . props . children . props . onMouseLeave = BDFDB . TimeUtils . suppress ( event => {
changeColors ( event . currentTarget , modify ) ;
2022-08-23 14:29:07 +02:00
return ( onMouseLeave || ( _ => { } ) ) ( event ) ;
} , "Error in onMouseLeave of ChannelItem!" , this ) ;
}
2022-11-04 20:53:39 +01:00
let name = nameClass && BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "className" , nameClass ] ] } ) ;
if ( name ) {
name = name . props && name . props . children || name ;
this . changeChannelColor ( BDFDB . ArrayUtils . is ( name ) ? name . find ( c => c . type == "strong" ) || name [ 0 ] : name , channelId , modify ) ;
}
let icon = iconClass && BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "className" , iconClass ] ] } ) ;
if ( icon ) this . changeChannelIconColor ( icon , channelId , modify ) ;
let categoryId = ( BDFDB . LibraryStores . ChannelStore . getChannel ( channelId ) || { } ) . parent _id ;
if ( categoryId ) {
let categoryName = categoyClass && BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "className" , categoyClass ] ] } ) ;
if ( categoryName ) {
categoryName . props . children = this . getChannelData ( categoryId ) . name ;
this . changeChannelColor ( categoryName , categoryId , modify ) ;
2021-01-10 14:34:13 +01:00
}
2020-09-19 20:49:33 +02:00
}
2020-01-03 21:05:35 +01:00
}
}
2022-11-04 20:53:39 +01:00
processChannelsList ( e ) {
if ( ! this . settings . places . channelList || ! e . instance . props . guildChannels ) return ;
e . instance . props . guildChannels = new e . instance . props . guildChannels . constructor ( e . instance . props . guild . id , e . instance . props . guildChannels . communitySection && e . instance . props . guildChannels . communitySection . communityRows || [ ] ) ;
2022-12-15 15:09:59 +01:00
for ( let id in e . instance . props . guildChannels . categories ) e . instance . props . guildChannels . categories [ id ] . record = this . getChannelData ( id , true , e . instance . props . guildChannels . categories [ id ] . record ) ;
2022-11-04 20:53:39 +01:00
let getChannelFromSectionRow = e . instance . props . guildChannels . getChannelFromSectionRow . bind ( e . instance . props . guildChannels ) ;
e . instance . props . guildChannels . getChannelFromSectionRow = BDFDB . TimeUtils . suppress ( ( ... args ) => {
let returnValue = getChannelFromSectionRow ( ... args ) ;
2022-11-05 16:16:32 +01:00
if ( returnValue ) {
2022-11-05 00:44:21 +01:00
returnValue = Object . assign ( { } , returnValue ) ;
2022-12-09 15:53:48 +01:00
if ( returnValue . channel && returnValue . channel . record ) returnValue . channel . record = this . getChannelData ( returnValue . channel . record . id , true , returnValue . channel . record ) ;
if ( returnValue . category && returnValue . category . record ) returnValue . category . record = this . getChannelData ( returnValue . category . record . id , true , returnValue . category . record ) ;
2022-11-05 00:44:21 +01:00
}
2022-11-04 20:53:39 +01:00
return returnValue ;
} , "Error in getChannelFromSectionRow of ChannelsList!" , this ) ;
}
processChannelItem ( e ) {
if ( ! this . settings . places . channelList || ! e . instance . props . channel ) return ;
let modify = BDFDB . ObjectUtils . extract ( e . instance . props , "muted" , "locked" , "selected" , "unread" , "connected" , "hovered" ) ;
2023-07-06 08:52:35 +02:00
let channelName = BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "className" , BDFDB . disCN . channelname ] ] } ) ;
2022-11-04 20:53:39 +01:00
if ( channelName ) this . changeChannelColor ( channelName , e . instance . props . channel . id , modify ) ;
let channelIcon = this . settings . general . changeChannelIcon && BDFDB . ReactUtils . findChild ( e . returnvalue , { name : "ChannelItemIcon" } ) ;
if ( channelIcon && typeof channelIcon . type == "function" ) {
let type = channelIcon . type ;
channelIcon . type = BDFDB . TimeUtils . suppress ( ( ... args ) => {
let returnValue = type ( ... args ) ;
if ( returnValue && typeof returnValue . props . children == "function" ) {
let childrenRender = returnValue . props . children ;
returnValue . props . children = BDFDB . TimeUtils . suppress ( ( ... args2 ) => {
let renderedChildren = childrenRender ( ... args2 ) ;
this . changeChannelIconColor ( renderedChildren . props . children , e . instance . props . channel . id , modify ) ;
return renderedChildren ;
} , "Error in Children Render of ChannelItem!" , this ) ;
}
return returnValue ;
} , "Error in Type Render of ChannelItem!" , this ) ;
2021-07-28 23:04:01 +02:00
}
}
2022-11-04 20:53:39 +01:00
processChannelThreadItem ( e ) {
if ( ! this . settings . places . channelList || ! e . instance . props . thread ) return ;
if ( ! e . returnvalue ) e . instance . props . thread = this . getChannelData ( e . instance . props . thread . id , true , e . instance . props . thread ) ;
else {
let modify = BDFDB . ObjectUtils . extract ( e . instance . props , "muted" , "locked" , "selected" , "unread" , "connected" , "hovered" ) ;
2023-07-06 08:52:35 +02:00
let channelName = BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "className" , BDFDB . disCN . channelname ] ] } ) ;
2022-11-04 20:53:39 +01:00
if ( channelName ) this . changeChannelColor ( channelName , e . instance . props . thread . id , modify ) ;
2021-01-09 22:06:27 +01:00
}
}
2022-11-04 20:53:39 +01:00
processDirectMessage ( e ) {
if ( ! this . settings . places . recentDms || ! e . instance . props . channel || ! e . instance . props . channel . isGroupDM ( ) ) return ;
if ( changedChannels [ e . instance . props . channel . id ] && changedChannels [ e . instance . props . channel . id ] . name ) {
let tooltip = BDFDB . ReactUtils . findChild ( e . returnvalue , { name : "ListItemTooltip" } ) ;
if ( tooltip ) tooltip . props . text = this . getGroupName ( e . instance . props . channel . id ) ;
}
let avatar = BDFDB . ReactUtils . findChild ( e . returnvalue , { filter : c => c && c . props && ! isNaN ( parseInt ( c . props . id ) ) } ) ;
if ( avatar && typeof avatar . props . children == "function" ) {
let childrenRender = avatar . props . children ;
avatar . props . children = BDFDB . TimeUtils . suppress ( ( ... args ) => {
let renderedChildren = childrenRender ( ... args ) ;
if ( renderedChildren && renderedChildren . props ) renderedChildren . props . icon = this . getGroupIcon ( e . instance . props . channel . id ) ;
return renderedChildren ;
} , "Error in Avatar Render of DirectMessage!" , this ) ;
2021-11-12 16:30:05 +01:00
}
}
2022-11-04 20:53:39 +01:00
processPrivateChannel ( e ) {
if ( ! this . settings . places . channelList || ! e . instance . props . channel || ! e . instance . props . channel . isGroupDM ( ) ) return ;
let wrapper = e . returnvalue && e . returnvalue . props . children && e . returnvalue . props . children . props && typeof e . returnvalue . props . children . props . children == "function" ? e . returnvalue . props . children : e . returnvalue ;
if ( typeof wrapper . props . children == "function" ) {
let process = returnvalue => {
const wrapper = returnvalue . props . avatar ? returnvalue : BDFDB . ReactUtils . findChild ( returnvalue , { props : [ "avatar" ] } ) ;
if ( ! wrapper ) return ;
if ( changedChannels [ e . instance . props . channel . id ] && changedChannels [ e . instance . props . channel . id ] . name ) {
wrapper . props . name = BDFDB . ReactUtils . createElement ( "span" , { children : this . getGroupName ( e . instance . props . channel . id ) } ) ;
}
this . changeChannelColor ( wrapper . props . name , e . instance . props . channel . id , BDFDB . ObjectUtils . extract ( Object . assign ( { } , e . instance . props , e . instance . state ) , "hovered" , "selected" , "hasUnreadMessages" , "muted" ) ) ;
wrapper . props . name = [ wrapper . props . name ] ;
if ( wrapper . props . avatar ) wrapper . props . avatar . props . src = this . getGroupIcon ( e . instance . props . channel . id ) ;
} ;
let childrenRender = wrapper . props . children ;
wrapper . props . children = BDFDB . TimeUtils . suppress ( ( ... args ) => {
let children = childrenRender ( ... args ) ;
process ( children ) ;
return children ;
} , "Error in Children Render of PrivateChannel!" , this ) ;
2021-11-12 16:30:05 +01:00
}
2022-11-04 20:53:39 +01:00
else process ( wrapper ) ;
2021-11-12 16:30:05 +01:00
}
2020-09-19 20:49:33 +02:00
processQuickSwitchChannelResult ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . quickSwitcher || ! e . instance . props . channel ) return ;
if ( ! e . returnvalue ) {
e . instance . props . channel = this . getChannelData ( e . instance . props . channel . id ) ;
if ( e . instance . props . category ) e . instance . props . category = this . getChannelData ( e . instance . props . category . id ) ;
}
else {
let modify = BDFDB . ObjectUtils . extract ( e . instance . props , "focused" , "unread" , "mentions" ) ;
let channelName = BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "className" , BDFDB . disCN . quickswitchresultmatch ] ] } ) ;
if ( channelName ) this . changeChannelColor ( channelName , e . instance . props . channel . id , modify ) ;
let channelIcon = BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "className" , BDFDB . disCN . quickswitchresulticon ] ] } ) ;
if ( channelIcon ) this . changeChannelIconColor ( channelIcon , e . instance . props . channel . id , modify ) ;
if ( e . instance . props . category ) {
let categoryName = BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "className" , BDFDB . disCN . quickswitchresultnote ] ] } ) ;
if ( categoryName ) this . changeChannelColor ( categoryName , e . instance . props . category . id ) ;
2020-02-04 08:20:40 +01:00
}
2020-01-03 21:05:35 +01:00
}
}
2021-02-04 22:51:39 +01:00
2022-11-04 20:53:39 +01:00
processSearchPopout ( e ) {
if ( ! this . settings . places . searchPopout || ! BDFDB . ArrayUtils . is ( BDFDB . ObjectUtils . get ( e , "instance.props.resultsState.autocompletes" ) ) ) return ;
for ( let autocomplete of e . instance . props . resultsState . autocompletes ) if ( autocomplete && BDFDB . ArrayUtils . is ( autocomplete . results ) ) for ( let result of autocomplete . results ) if ( result . channel ) result . channel = this . getChannelData ( result . channel . id ) ;
2021-02-04 22:51:39 +01:00
}
processSearchResultsInner ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . searchResults ) return ;
let results = BDFDB . ReactUtils . findChild ( e . returnvalue , { props : [ [ "id" , "search-results" ] ] } ) ;
if ( results && BDFDB . ArrayUtils . is ( results . props . children ) ) for ( let group of results . props . children ) {
let channelId = ( BDFDB . ObjectUtils . get ( group , "props.children.key" ) || "" ) . split ( "-" ) [ 0 ] ;
let channelName = channelId && changedChannels [ channelId ] && BDFDB . ReactUtils . findChild ( group , { props : [ [ "className" , BDFDB . disCN . searchresultschannelname ] ] } ) ;
if ( channelName ) {
if ( changedChannels [ channelId ] . name ) channelName . props . children = "#" + changedChannels [ channelId ] . name ;
this . changeChannelColor ( channelName , channelId ) ;
2021-02-04 22:51:39 +01:00
}
}
}
2020-09-19 20:49:33 +02:00
processRecentsChannelHeader ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . recentMentions || ! e . instance . props . channel ) return ;
if ( ! e . returnvalue ) e . instance . props . channel = this . getChannelData ( e . instance . props . channel . id ) ;
else {
let [ children , index ] = BDFDB . ReactUtils . findParent ( e . returnvalue , { props : [ [ "className" , BDFDB . disCN . recentmentionschannelnamespan ] ] } ) ;
if ( index > - 1 ) {
this . changeChannelColor ( children [ index ] , e . instance . props . channel . id ) ;
let icon = index > 0 && children [ index - 1 ] ;
if ( icon && icon . props && icon . props . width ) this . changeChannelIconColor ( icon , e . instance . props . channel . id ) ;
2020-09-19 20:49:33 +02:00
}
2020-01-03 21:05:35 +01:00
}
}
2020-09-19 20:49:33 +02:00
processMessageContent ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . mentions || ! BDFDB . ArrayUtils . is ( e . instance . props . content ) ) return ;
for ( let ele of e . instance . props . content ) if ( BDFDB . ReactUtils . isValidElement ( ele ) && ele . type && ele . type . prototype && ele . type . prototype . renderTooltip && typeof ele . props . children == "function" ) {
let children = ele . props . children ( { } ) ;
if ( ! children || ! children . props || ! children . props . iconType || ! children . props . className || children . props . className . indexOf ( "channelMention" ) != 0 ) return ;
const checkChild = channelName => {
let guildId = BDFDB . LibraryStores . SelectedGuildStore . getGuildId ( ) ;
let channels = guildId && [ ] . concat ( BDFDB . LibraryStores . GuildChannelStore . getChannels ( guildId ) . SELECTABLE , Object . keys ( BDFDB . LibraryStores . ActiveThreadsStore . getThreadsForGuild ( guildId ) ) . map ( id => ( { channel : BDFDB . LibraryStores . ChannelStore . getChannel ( id ) } ) ) ) ;
if ( ! BDFDB . ArrayUtils . is ( channels ) ) return ;
for ( let channelObj of channels ) {
if ( channelName == channelObj . channel . name ) {
let category = BDFDB . LibraryStores . ChannelStore . getChannel ( channelObj . channel . parent _id ) ;
if ( ! category || category && ele . props . text == category . name ) {
if ( category ) {
let categoryData = changedChannels [ category . id ] ;
if ( categoryData && categoryData . name ) ele . props . text = categoryData . name ;
2020-01-03 21:05:35 +01:00
}
2022-11-04 20:53:39 +01:00
let name = ( changedChannels [ channelObj . channel . id ] || { } ) . name ;
let color = this . getChannelDataColor ( channelObj . channel . id ) ;
if ( name || color ) {
let renderChildren = ele . props . children ;
ele . props . children = BDFDB . TimeUtils . suppress ( ( ... args ) => {
let renderedChildren = renderChildren ( ... args ) ;
this . changeMention ( renderedChildren , { name , color } ) ;
return renderedChildren ;
} , "Error in Children Render of ChannelMention in MessageContent!" , this ) ;
}
break ;
2020-01-03 21:05:35 +01:00
}
}
}
2022-11-04 20:53:39 +01:00
} ;
if ( typeof children . props . children == "string" ) checkChild ( children . props . children ) ;
else if ( BDFDB . ArrayUtils . is ( children . props . children ) ) for ( let i in children . props . children ) {
if ( typeof children . props . children [ i ] == "string" ) checkChild ( children . props . children [ i ] ) ;
else if ( BDFDB . ArrayUtils . is ( children . props . children [ i ] ) ) for ( let j in children . props . children [ i ] ) if ( typeof children . props . children [ i ] [ j ] == "string" ) checkChild ( children . props . children [ i ] [ j ] ) ;
2020-01-03 21:05:35 +01:00
}
}
}
2020-12-04 22:38:52 +01:00
2021-02-24 17:32:17 +01:00
processRichChannelMention ( e ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . places . mentions || ! e . instance . props . id ) return ;
let name = ( changedChannels [ e . instance . props . id ] || { } ) . name ;
let color = this . getChannelDataColor ( e . instance . props . id ) ;
if ( ! name && ! color ) return ;
if ( typeof e . returnvalue . props . children == "function" ) {
let renderChildren = e . returnvalue . props . children ;
e . returnvalue . props . children = BDFDB . TimeUtils . suppress ( ( ... args ) => {
let children = renderChildren ( ... args ) ;
this . changeMention ( children , { name , color } ) ;
return children ;
} , "Error in Children Render of RichChannelMention!" , this ) ;
}
else this . changeMention ( e . returnvalue , { name , color } ) ;
}
changeAppTitle ( ) {
if ( ! this . settings . places . appTitle ) return ;
let channel = BDFDB . LibraryStores . ChannelStore . getChannel ( BDFDB . LibraryStores . SelectedChannelStore . getChannelId ( ) ) ;
let title = document . head . querySelector ( "title" ) ;
if ( title && channel && ( document . location . href || "" ) . indexOf ( channel . id ) > - 1 && changedChannels [ channel . id ] && changedChannels [ channel . id ] . name ) {
if ( channel . isGroupDM ( ) ) BDFDB . DOMUtils . setText ( title , this . getGroupName ( channel . id ) ) ;
else BDFDB . DOMUtils . setText ( title , ( BDFDB . ChannelUtils . isTextChannel ( channel ) ? "#" : "" ) + this . getChannelData ( channel . id ) . name ) ;
2020-12-04 22:38:52 +01:00
}
}
changeMention ( mention , data ) {
2021-07-29 20:47:38 +02:00
if ( ! mention ) return ;
2020-12-04 22:38:52 +01:00
if ( data . name ) {
2021-07-28 23:04:01 +02:00
const changeMentionName = ( child , name ) => {
if ( ! child ) return ;
if ( BDFDB . ArrayUtils . is ( child ) ) for ( let i in child ) {
if ( typeof child [ i ] == "string" && child [ i ] [ 0 ] == "#" ) {
if ( child [ i ] == "#" ) child [ parseInt ( i ) + 1 ] = data . name ;
else child [ i ] = "#" + data . name ;
}
else changeMentionName ( child [ i ] ) ;
}
2022-11-04 20:53:39 +01:00
else if ( child . props ) {
if ( child . props . iconType && typeof child . props . children == "string" ) child . props . children = data . name ;
else if ( child . props . iconType && BDFDB . ArrayUtils . is ( child . props . children ) && child . props . children . length == 1 ) child . props . children = [ data . name ] ;
else if ( typeof child . props . children == "string" && child . props . children [ 0 ] == "#" ) child . props . children = "#" + data . name ;
else if ( BDFDB . ArrayUtils . is ( child . props . children ) ) changeMentionName ( child . props . children ) ;
}
2020-12-04 22:38:52 +01:00
} ;
2021-07-28 23:04:01 +02:00
changeMentionName ( mention ) ;
2020-12-04 22:38:52 +01:00
}
2021-07-28 23:04:01 +02:00
if ( data . color ) mention . props . color = BDFDB . ColorUtils . convert ( BDFDB . ObjectUtils . is ( data . color ) ? data . color [ 0 ] : data . color , "INT" ) ;
2020-12-04 22:38:52 +01:00
}
2020-09-19 20:49:33 +02:00
changeChannelColor ( child , channelId , modify ) {
2022-11-04 20:53:39 +01:00
if ( ! BDFDB . ReactUtils . isValidElement ( child ) ) return ;
let color = this . getChannelDataColor ( channelId ) ;
if ( color ) {
color = modify ? this . chooseColor ( color , modify ) : BDFDB . ColorUtils . convert ( color , "RGBA" ) ;
let childProp = child . props . children ? "children" : "text" ;
let fontGradient = BDFDB . ObjectUtils . is ( color ) ;
if ( fontGradient ) child . props [ childProp ] = BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . TextGradientElement , {
gradient : BDFDB . ColorUtils . createGradient ( color ) ,
children : child . props [ childProp ]
} ) ;
else child . props [ childProp ] = BDFDB . ReactUtils . createElement ( "span" , {
style : { color : color } ,
children : child . props [ childProp ]
} ) ;
2020-07-08 16:32:07 +02:00
}
2020-02-04 08:20:40 +01:00
}
2020-09-19 20:49:33 +02:00
changeChannelIconColor ( child , channelId , modify ) {
2022-11-04 20:53:39 +01:00
if ( ! this . settings . general . changeChannelIcon ) return ;
2021-01-10 14:34:13 +01:00
let color = child && this . getChannelDataColor ( channelId ) ;
2022-11-04 20:53:39 +01:00
if ( ! color ) return ;
color = modify ? this . chooseColor ( BDFDB . ObjectUtils . is ( color ) ? color [ 0 ] : color , modify ) : BDFDB . ColorUtils . convert ( BDFDB . ObjectUtils . is ( color ) ? color [ 0 ] : color , "RGBA" ) ;
if ( ! color ) return ;
child . props . foreground = null ;
child . props . color = color || "currentColor" ;
child . props . children = [ child . props . children ] . flat ( 10 ) . filter ( n => n ) ;
for ( let c of child . props . children ) {
if ( c && c . props && c . props . fill == "currentColor" ) c . props . fill = color || "currentColor" ;
if ( c && c . props && c . props . path == "currentColor" ) c . props . path = color || "currentColor" ;
2020-09-19 20:49:33 +02:00
}
2020-03-08 14:07:16 +01:00
}
2020-02-04 08:20:40 +01:00
2020-09-19 20:49:33 +02:00
chooseColor ( color , config ) {
2022-11-04 20:53:39 +01:00
if ( ! color ) return null ;
if ( BDFDB . ObjectUtils . is ( config ) ) {
if ( config . focused || config . hovered || config . selected || config . connected ) color = BDFDB . ColorUtils . change ( color , 0.5 ) ;
else if ( config . muted || config . locked ) color = BDFDB . ColorUtils . change ( color , - 0.5 ) ;
else if ( config . mentions || config . unread ) color = BDFDB . ColorUtils . change ( color , 0.5 ) ;
2020-01-03 21:05:35 +01:00
}
2022-11-04 20:53:39 +01:00
return BDFDB . ColorUtils . convert ( color , "RGBA" ) ;
2020-01-03 21:05:35 +01:00
}
2020-09-19 20:49:33 +02:00
getChannelDataColor ( channelId ) {
2021-06-15 19:08:38 +02:00
if ( changedChannels [ channelId ] && changedChannels [ channelId ] . color ) return changedChannels [ channelId ] . color ;
2022-09-27 14:48:10 +02:00
let channel = BDFDB . LibraryStores . ChannelStore . getChannel ( channelId ) ;
let category = channel && ( BDFDB . ChannelUtils . isThread ( channel ) ? BDFDB . LibraryStores . ChannelStore . getChannel ( ( BDFDB . LibraryStores . ChannelStore . getChannel ( BDFDB . LibraryStores . ChannelStore . getChannel ( channel . id ) . parent _id ) || { } ) . parent _id ) : BDFDB . LibraryStores . ChannelStore . getChannel ( channel . parent _id ) ) ;
2021-06-15 13:06:51 +02:00
if ( category && changedChannels [ category . id ] && changedChannels [ category . id ] . inheritColor && changedChannels [ category . id ] . color ) return changedChannels [ category . id ] . color ;
2020-09-19 20:49:33 +02:00
return null ;
2020-02-04 08:20:40 +01:00
}
2020-06-08 20:50:04 +02:00
2021-06-15 13:06:51 +02:00
getChannelData ( channelId , change = true , fallbackData ) {
2022-09-27 14:48:10 +02:00
let channel = BDFDB . LibraryStores . ChannelStore . getChannel ( channelId ) ;
2021-06-15 13:06:51 +02:00
if ( ! channel && BDFDB . ObjectUtils . is ( fallbackData ) || channel && BDFDB . ObjectUtils . is ( fallbackData ) && channel . name != fallbackData . name ) channel = fallbackData ;
2020-09-19 20:49:33 +02:00
if ( ! channel ) return new BDFDB . DiscordObjects . Channel ( { } ) ;
let data = change && changedChannels [ channel . id ] ;
if ( data ) {
2022-12-07 11:53:48 +01:00
let nativeObject = new ( fallbackData && fallbackData . constructor || BDFDB . DiscordObjects . Channel ) ( channel ) ;
2020-09-19 20:49:33 +02:00
nativeObject . name = data . name || nativeObject . name ;
return nativeObject ;
}
2022-12-09 15:53:48 +01:00
return fallbackData || ( new BDFDB . DiscordObjects . Channel ( channel ) ) ;
2020-09-19 20:49:33 +02:00
}
2021-01-09 22:06:27 +01:00
2021-06-09 17:52:32 +02:00
getGroupName ( channelId ) {
let channel = this . getChannelData ( channelId ) ;
2021-01-09 22:06:27 +01:00
if ( channel . name ) return channel . name ;
2022-09-27 16:53:10 +02:00
let recipients = channel . recipients . map ( BDFDB . LibraryStores . UserStore . getUser ) . filter ( n => n ) ;
2021-01-09 22:06:27 +01:00
return recipients . length > 0 ? recipients . map ( u => u . toString ( ) ) . join ( ", " ) : BDFDB . LanguageUtils . LanguageStrings . UNNAMED ;
}
getGroupIcon ( channelId , change = true ) {
2022-09-27 14:48:10 +02:00
let channel = BDFDB . LibraryStores . ChannelStore . getChannel ( channelId ) ;
2021-01-09 22:06:27 +01:00
if ( ! channel ) return "" ;
let data = change && changedChannels [ channel . id ] ;
if ( data ) {
if ( data . removeIcon ) return "" ;
else if ( data . url ) return data . url ;
}
return BDFDB . LibraryModules . IconUtils . getChannelIconURL ( channel ) ;
}
2019-01-26 22:45:19 +01:00
2020-09-19 20:49:33 +02:00
openChannelSettingsModal ( channel ) {
let data = changedChannels [ channel . id ] || { } ;
2021-01-29 17:59:14 +01:00
let newData = Object . assign ( { } , data ) ;
let iconInput ;
2020-09-19 20:49:33 +02:00
BDFDB . ModalUtils . open ( this , {
size : "MEDIUM" ,
2020-12-21 19:56:36 +01:00
header : this . labels . modal _header ,
2021-01-23 18:50:24 +01:00
subHeader : channel . name ,
2020-09-19 20:49:33 +02:00
children : [
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . FormComponents . FormItem , {
2020-12-21 19:56:36 +01:00
title : this . labels . modal _channelname ,
2021-01-29 17:59:14 +01:00
className : BDFDB . disCN . marginbottom20 ,
2020-09-19 20:49:33 +02:00
children : [
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . TextInput , {
value : data . name ,
placeholder : channel . name ,
2021-01-29 17:59:14 +01:00
autoFocus : true ,
2021-01-29 20:04:13 +01:00
onChange : value => { newData . name = value ; }
2020-09-19 20:49:33 +02:00
} ) ,
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . FormComponents . FormDivider , {
className : BDFDB . disCN . dividerdefault
} )
]
} ) ,
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . FormComponents . FormItem , {
2020-12-21 19:56:36 +01:00
title : this . labels . modal _colorpicker1 ,
2020-09-19 20:49:33 +02:00
className : BDFDB . disCN . marginbottom20 ,
children : [
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . ColorSwatches , {
color : data . color ,
2021-01-29 20:04:13 +01:00
onColorChange : value => { newData . color = value ; }
2020-09-19 20:49:33 +02:00
} )
]
} ) ,
2021-01-09 22:06:27 +01:00
! channel . isGroupDM ( ) && BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SettingsItem , {
2020-09-19 20:49:33 +02:00
type : "Switch" ,
2020-10-14 21:08:41 +02:00
margin : 20 ,
2020-12-21 19:56:36 +01:00
label : this . labels . modal _inheritcolor ,
2022-11-22 01:30:30 +01:00
tag : BDFDB . LibraryComponents . FormComponents . FormTags . H5 ,
2021-01-09 22:06:27 +01:00
value : channel . isCategory ( ) && data . inheritColor ,
2021-01-29 17:59:14 +01:00
disabled : ! channel . isCategory ( ) ,
2021-01-29 20:04:13 +01:00
onChange : value => { newData . inheritColor = value ; }
2021-01-09 22:06:27 +01:00
} ) ,
2021-01-10 14:34:13 +01:00
channel . isGroupDM ( ) && BDFDB . ReactUtils . createElement ( "div" , {
2021-01-09 22:06:27 +01:00
className : BDFDB . disCN . marginbottom20 ,
children : [
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . FormComponents . FormDivider , {
className : BDFDB . disCNS . dividerdefault + BDFDB . disCN . marginbottom20
} ) ,
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . Flex , {
className : BDFDB . disCN . marginbottom8 ,
align : BDFDB . LibraryComponents . Flex . Align . CENTER ,
direction : BDFDB . LibraryComponents . Flex . Direction . HORIZONTAL ,
children : [
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . FormComponents . FormTitle , {
className : BDFDB . disCN . marginreset ,
2022-11-22 01:30:30 +01:00
tag : BDFDB . LibraryComponents . FormComponents . FormTags . H5 ,
2021-01-09 22:06:27 +01:00
children : this . labels . modal _channelicon
} ) ,
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . SettingsItem , {
type : "Switch" ,
margin : 0 ,
grow : 0 ,
label : BDFDB . LanguageUtils . LanguageStrings . REMOVE ,
2022-11-22 01:30:30 +01:00
tag : BDFDB . LibraryComponents . FormComponents . FormTags . H5 ,
2021-01-09 22:06:27 +01:00
value : data . removeIcon ,
2021-01-29 19:48:09 +01:00
onChange : value => {
2021-01-29 17:59:14 +01:00
newData . removeIcon = value ;
if ( value ) {
delete iconInput . props . success ;
delete iconInput . props . errorMessage ;
iconInput . props . disabled = true ;
BDFDB . ReactUtils . forceUpdate ( iconInput ) ;
}
else {
iconInput . props . disabled = false ;
2022-11-29 18:50:17 +01:00
this . checkUrl ( iconInput . props . value , iconInput ) . then ( returnValue => newData . url = returnValue ) ;
2021-01-09 22:06:27 +01:00
}
}
} )
]
} ) ,
BDFDB . ReactUtils . createElement ( BDFDB . LibraryComponents . TextInput , {
success : ! data . removeIcon && data . url ,
maxLength : 100000000000000000000 ,
value : data . url ,
placeholder : BDFDB . DMUtils . getIcon ( channel . id ) ,
disabled : data . removeIcon ,
2021-01-29 17:59:14 +01:00
ref : instance => { if ( instance ) iconInput = instance ; } ,
2021-01-09 22:06:27 +01:00
onChange : ( value , instance ) => {
2022-11-29 18:50:17 +01:00
this . checkUrl ( value , instance ) . then ( returnValue => newData . url = returnValue ) ;
2021-01-09 22:06:27 +01:00
}
} )
]
2020-09-19 20:49:33 +02:00
} )
] ,
buttons : [ {
contents : BDFDB . LanguageUtils . LanguageStrings . SAVE ,
color : "BRAND" ,
close : true ,
2021-01-29 17:59:14 +01:00
onClick : _ => {
if ( newData . color != null && ! BDFDB . ObjectUtils . is ( newData . color ) ) {
if ( newData . color [ 0 ] < 30 && newData . color [ 1 ] < 30 && newData . color [ 2 ] < 30 ) newData . color = BDFDB . ColorUtils . change ( newData . color , 30 ) ;
else if ( newData . color [ 0 ] > 225 && newData . color [ 1 ] > 225 && newData . color [ 2 ] > 225 ) newData . color = BDFDB . ColorUtils . change ( newData . color , - 30 ) ;
2020-09-19 20:49:33 +02:00
}
2021-01-29 17:59:14 +01:00
newData . url = ! newData . removeIcon ? newData . url : "" ;
2020-09-19 20:49:33 +02:00
let changed = false ;
2021-01-29 17:59:14 +01:00
if ( Object . keys ( newData ) . every ( key => newData [ key ] == null || newData [ key ] == false ) && ( changed = true ) ) {
BDFDB . DataUtils . remove ( this , "channels" , channel . id ) ;
}
else if ( ! BDFDB . equals ( newData , data ) && ( changed = true ) ) {
BDFDB . DataUtils . save ( newData , this , "channels" , channel . id ) ;
}
2020-10-30 15:54:55 +01:00
if ( changed ) this . forceUpdateAll ( true ) ;
2020-02-04 08:20:40 +01:00
}
2020-09-19 20:49:33 +02:00
} ]
} ) ;
2020-02-04 08:20:40 +01:00
}
2021-01-09 22:06:27 +01:00
checkUrl ( url , instance ) {
2021-01-29 17:59:14 +01:00
return new Promise ( callback => {
BDFDB . TimeUtils . clear ( instance . checkTimeout ) ;
url = url && url . trim ( ) ;
if ( ! url || instance . props . disabled ) {
delete instance . props . success ;
delete instance . props . errorMessage ;
callback ( "" ) ;
BDFDB . ReactUtils . forceUpdate ( instance ) ;
}
2022-12-01 21:38:21 +01:00
else if ( url . indexOf ( "data:" ) == 0 ) {
instance . props . success = true ;
delete instance . props . errorMessage ;
callback ( url ) ;
}
2022-11-29 18:50:17 +01:00
else instance . checkTimeout = BDFDB . TimeUtils . timeout ( _ => BDFDB . LibraryRequires . request ( url , { agentOptions : { rejectUnauthorized : false } } , ( error , response , result ) => {
delete instance . checkTimeout ;
if ( instance . props . disabled ) {
delete instance . props . success ;
delete instance . props . errorMessage ;
callback ( "" ) ;
}
else if ( response && response . headers [ "content-type" ] && response . headers [ "content-type" ] . indexOf ( "image" ) != - 1 ) {
instance . props . success = true ;
delete instance . props . errorMessage ;
callback ( url ) ;
}
else {
delete instance . props . success ;
instance . props . errorMessage = this . labels . modal _invalidurl ;
callback ( "" ) ;
}
BDFDB . ReactUtils . forceUpdate ( instance ) ;
} ) , 1000 ) ;
2021-01-29 17:59:14 +01:00
} ) ;
2021-01-09 22:06:27 +01:00
}
2020-07-26 17:02:25 +02:00
2021-01-06 12:38:36 +01:00
setLabelsByLanguage ( ) {
2020-09-19 20:49:33 +02:00
switch ( BDFDB . LanguageUtils . getLanguage ( ) . id ) {
2020-12-21 19:56:36 +01:00
case "bg" : // Bulgarian
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Наистина ли искате да нулирате този канал?" ,
confirm _resetall : "Наистина ли искате да нулирате всички канали?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Настройки на местния канал" ,
modal _channelname : "Име на местния канал" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Икона" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Локален цвят на канала" ,
modal _header : "Настройки на местния канал" ,
2020-12-22 20:38:51 +01:00
modal _inheritcolor : "Наследете цвета на подканали" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Невалиден адрес" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Промяна на настройките" ,
submenu _resetsettings : "Нулиране на канала"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "da" : // Danish
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Er du sikker på, at du vil nulstille denne kanal?" ,
confirm _resetall : "Er du sikker på, at du vil nulstille alle kanaler?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Lokale kanalindstillinger" ,
modal _channelname : "Lokalt kanalnavn" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Ikon" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Lokal kanalfarve" ,
modal _header : "Lokale kanalindstillinger" ,
modal _inheritcolor : "Arv farve til underkanaler" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Ugyldig URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Ændre indstillinger" ,
submenu _resetsettings : "Nulstil kanal"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "de" : // German
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Möchtest du diesen Kanal wirklich zurücksetzen?" ,
confirm _resetall : "Möchtest du wirklich alle Kanäle zurücksetzen?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Lokale Kanaleinstellungen" ,
modal _channelname : "Lokaler Kanalname" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Symbol" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Lokale Kanalfarbe" ,
modal _header : "Lokale Kanaleinstellungen" ,
modal _inheritcolor : "Vererbung der Farbe an Unterkanäle" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Ungültige URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Einstellungen ändern" ,
submenu _resetsettings : "Kanal zurücksetzen"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "el" : // Greek
2020-09-19 20:49:33 +02:00
return {
2023-04-01 12:42:04 +02:00
confirm _reset : "Θέλετε την επαναφορά αυτού του καναλιού;" ,
confirm _resetall : "Θέλετε την επαναφορά όλων των καναλιών;" ,
context _localchannelsettings : "Ρυθμίσεις Τοπικού Καναλιού" ,
modal _channelname : "Ονομασία Τοπικού Καναλιού" ,
modal _channelicon : "Εικονίδιο" ,
modal _colorpicker1 : "Χρώμα Τοπικού Καναλιού" ,
modal _header : "Ρυθμίσεις Τοπικού Καναλιού" ,
modal _inheritcolor : "Εφαρμογή του χρώματος στα υπό-κανάλια" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Μη έγκυρη διεύθυνση URL" ,
2023-04-01 12:42:04 +02:00
submenu _channelsettings : "Αλλαγή Ρυθμίσεων" ,
2020-12-21 19:56:36 +01:00
submenu _resetsettings : "Επαναφορά καναλιού"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "es" : // Spanish
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "¿Estás seguro de que deseas restablecer este canal?" ,
confirm _resetall : "¿Está seguro de que desea restablecer todos los canales?" ,
context _localchannelsettings : "Configuración de canal local" ,
modal _channelname : "Nombre del canal local" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Icono" ,
2020-12-22 20:38:51 +01:00
modal _colorpicker1 : "Color del canal local" ,
modal _header : "Configuración de canal local" ,
2020-12-21 19:56:36 +01:00
modal _inheritcolor : "Heredar color a subcanales" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "URL invalida" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Cambiar ajustes" ,
submenu _resetsettings : "Restablecer canal"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "fi" : // Finnish
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Haluatko varmasti nollata tämän kanavan?" ,
confirm _resetall : "Haluatko varmasti nollata kaikki kanavat?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Paikallisen kanavan asetukset" ,
modal _channelname : "Paikallisen kanavan nimi" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Kuvake" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Paikallisen kanavan väri" ,
modal _header : "Paikallisen kanavan asetukset" ,
modal _inheritcolor : "Peri väri alikanaville" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Virheellinen URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Vaihda asetuksia" ,
submenu _resetsettings : "Nollaa kanava"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "fr" : // French
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Voulez-vous vraiment réinitialiser cette salon?" ,
confirm _resetall : "Voulez-vous vraiment réinitialiser toutes les salons?" ,
context _localchannelsettings : "Paramètres de la salon" ,
modal _channelname : "Nom local de la salon" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Icône" ,
2020-12-22 20:38:51 +01:00
modal _colorpicker1 : "Couleur locale de la salon" ,
modal _header : "Paramètres locaux de la salon" ,
modal _inheritcolor : "Hériter de la couleur aux sous-canaux" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "URL invalide" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Modifier les paramètres" ,
2020-12-22 20:38:51 +01:00
submenu _resetsettings : "Réinitialiser la salon"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "hr" : // Croatian
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Jeste li sigurni da želite resetirati ovaj kanal?" ,
confirm _resetall : "Jeste li sigurni da želite resetirati sve kanale?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Postavke lokalnog kanala" ,
modal _channelname : "Naziv lokalnog kanala" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Ikona" ,
2020-12-22 20:38:51 +01:00
modal _colorpicker1 : "Lokalna boja kanala" ,
2020-12-21 19:56:36 +01:00
modal _header : "Postavke lokalnog kanala" ,
modal _inheritcolor : "Naslijedi boju na podkanalima" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Neispravna poveznica" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Promijeniti postavke" ,
submenu _resetsettings : "Resetiraj kanal"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "hu" : // Hungarian
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Biztosan vissza akarja állítani ezt a csatornát?" ,
confirm _resetall : "Biztosan visszaállítja az összes csatornát?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Helyi csatorna beállításai" ,
modal _channelname : "Helyi csatorna neve" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Ikon" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Helyi csatorna színe" ,
modal _header : "Helyi csatorna beállításai" ,
modal _inheritcolor : "Örökli a színt az alcsatornákra" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Érvénytelen URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Beállítások megváltoztatása" ,
submenu _resetsettings : "Csatorna visszaállítása"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "it" : // Italian
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Sei sicuro di voler ripristinare questo canale?" ,
confirm _resetall : "Sei sicuro di voler ripristinare tutti i canali?" ,
context _localchannelsettings : "Impostazioni del canale locale" ,
modal _channelname : "Nome canale locale" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Icona" ,
2020-12-22 20:38:51 +01:00
modal _colorpicker1 : "Colore canale locale" ,
modal _header : "Impostazioni del canale locale" ,
2020-12-21 19:56:36 +01:00
modal _inheritcolor : "Eredita colore ai canali secondari" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "URL non valido" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Cambia impostazioni" ,
submenu _resetsettings : "Reimposta canale"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "ja" : // Japanese
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "このチャンネルをリセットしてもよろしいですか?" ,
confirm _resetall : "すべてのチャンネルをリセットしてもよろしいですか?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "ローカルチャンネル設定" ,
modal _channelname : "ローカルチャネル名" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "アイコン" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "ローカルチャンネルの色" ,
modal _header : "ローカルチャンネル設定" ,
modal _inheritcolor : "サブチャネルに色を継承する" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "無効なURL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "設定を変更する" ,
submenu _resetsettings : "チャネルをリセット"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "ko" : // Korean
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "이 채널을 재설정 하시겠습니까?" ,
confirm _resetall : "모든 채널을 재설정 하시겠습니까?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "로컬 채널 설정" ,
modal _channelname : "로컬 채널 이름" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "상" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "로컬 채널 색상" ,
modal _header : "로컬 채널 설정" ,
modal _inheritcolor : "하위 채널에 색상 상속" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "잘못된 URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "설정 변경" ,
submenu _resetsettings : "채널 재설정"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "lt" : // Lithuanian
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Ar tikrai norite iš naujo nustatyti šį kanalą?" ,
confirm _resetall : "Ar tikrai norite iš naujo nustatyti visus kanalus?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Vietinio kanalo nustatymai" ,
modal _channelname : "Vietinio kanalo pavadinimas" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Piktograma" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Vietinio kanalo spalva" ,
modal _header : "Vietinio kanalo nustatymai" ,
modal _inheritcolor : "Paveldėkite spalvas subkanalams" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Neteisingas URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Pakeisti nustatymus" ,
submenu _resetsettings : "Iš naujo nustatyti kanalą"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "nl" : // Dutch
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Weet u zeker dat u dit kanaal opnieuw wilt instellen?" ,
confirm _resetall : "Weet u zeker dat u alle kanalen opnieuw wilt instellen?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Lokale kanaalinstellingen" ,
modal _channelname : "Lokale kanaalnaam" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Icoon" ,
2020-12-22 20:38:51 +01:00
modal _colorpicker1 : "Lokale kanaalkleur" ,
2020-12-21 19:56:36 +01:00
modal _header : "Lokale kanaalinstellingen" ,
2020-12-22 20:38:51 +01:00
modal _inheritcolor : "Overerf kleur naar subkanalen" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Ongeldige URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Instellingen veranderen" ,
submenu _resetsettings : "Kanaal resetten"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "no" : // Norwegian
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Er du sikker på at du vil tilbakestille denne kanalen?" ,
confirm _resetall : "Er du sikker på at du vil tilbakestille alle kanaler?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Lokale kanalinnstillinger" ,
modal _channelname : "Lokalt kanalnavn" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Ikon" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Lokal kanalfarge" ,
modal _header : "Lokale kanalinnstillinger" ,
modal _inheritcolor : "Arv farge til underkanaler" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Ugyldig URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Endre innstillinger" ,
submenu _resetsettings : "Tilbakestill kanal"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "pl" : // Polish
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Czy na pewno chcesz zresetować ten kanał?" ,
confirm _resetall : "Czy na pewno chcesz zresetować wszystkie kanały?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Ustawienia kanału lokalnego" ,
modal _channelname : "Nazwa kanału lokalnego" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Ikona" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Kolor kanału lokalnego" ,
modal _header : "Ustawienia kanału lokalnego" ,
modal _inheritcolor : "Dziedzicz kolor do kanałów podrzędnych" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Nieprawidłowy URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Zmień ustawienia" ,
submenu _resetsettings : "Resetuj kanał"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "pt-BR" : // Portuguese (Brazil)
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Tem certeza que deseja redefinir este canal?" ,
confirm _resetall : "Tem certeza de que deseja redefinir todos os canais?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Configurações de canal local" ,
modal _channelname : "Nome do canal local" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Ícone" ,
2020-12-22 20:38:51 +01:00
modal _colorpicker1 : "Cor do Canal Local" ,
2020-12-21 19:56:36 +01:00
modal _header : "Configurações de canal local" ,
modal _inheritcolor : "Herdar cor para subcanais" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "URL inválida" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Mudar configurações" ,
submenu _resetsettings : "Reiniciar canal"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "ro" : // Romanian
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Sigur doriți să resetați acest canal?" ,
confirm _resetall : "Sigur doriți să resetați toate canalele?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Setări canale locale" ,
modal _channelname : "Numele canalului local" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Pictogramă" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Culoare canal local" ,
modal _header : "Setări canale locale" ,
modal _inheritcolor : "Moșteniți culoarea la sub-canale" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "URL invalid" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Schimbă setările" ,
submenu _resetsettings : "Resetați canalul"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "ru" : // Russian
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Вы уверены, что хотите сбросить этот канал?" ,
confirm _resetall : "Вы уверены, что хотите сбросить все каналы?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Настройки локального канала" ,
modal _channelname : "Имя локального канала" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Икона" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Цвет локального канала" ,
modal _header : "Настройки локального канала" ,
modal _inheritcolor : "Наследовать цвет для субканалов" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Неверная ссылка" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Изменить настройки" ,
submenu _resetsettings : "Сбросить канал"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "sv" : // Swedish
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Är du säker på att du vill återställa den här kanalen?" ,
confirm _resetall : "Är du säker på att du vill återställa alla kanaler?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Lokala kanalinställningar" ,
modal _channelname : "Lokalt kanalnamn" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Ikon" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Lokal kanalfärg" ,
modal _header : "Lokala kanalinställningar" ,
modal _inheritcolor : "Ärva färg till underkanaler" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Ogiltig URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Ändra inställningar" ,
submenu _resetsettings : "Återställ kanal"
2020-09-19 20:49:33 +02:00
} ;
2020-12-21 19:56:36 +01:00
case "th" : // Thai
2020-09-19 20:49:33 +02:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "แน่ใจไหมว่าต้องการรีเซ็ตช่องนี้" ,
confirm _resetall : "แน่ใจไหมว่าต้องการรีเซ็ตช่องทั้งหมด" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "การตั้งค่าช่องท้องถิ่น" ,
modal _channelname : "ชื่อช่องท้องถิ่น" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "ไอคอน" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "ช่องท้องถิ่นสี" ,
modal _header : "การตั้งค่าช่องท้องถิ่น" ,
modal _inheritcolor : "สืบทอดสีไปยังช่องย่อย" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "URL ไม่ถูกต้อง" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "เปลี่ยนการตั้งค่า" ,
submenu _resetsettings : "รีเซ็ตช่อง"
} ;
case "tr" : // Turkish
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Bu kanalı sı fı rlamak istediğinizden emin misiniz?" ,
confirm _resetall : "Tüm kanalları sı fı rlamak istediğinizden emin misiniz?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Yerel Kanal Ayarları " ,
modal _channelname : "Yerel Kanal Adı " ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Simge" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Yerel Kanal Rengi" ,
modal _header : "Yerel Kanal Ayarları " ,
modal _inheritcolor : "Renkleri Alt Kanallara Devral" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Geçersiz URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Ayarları değiştir" ,
submenu _resetsettings : "Kanalı Sı fı rla"
} ;
case "uk" : // Ukrainian
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Справді скинути цей канал?" ,
confirm _resetall : "Ви впевнені, що хочете скинути всі канали?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Налаштування локального каналу" ,
modal _channelname : "Назва місцевого каналу" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Піктограма" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Колір локального каналу" ,
modal _header : "Налаштування локального каналу" ,
modal _inheritcolor : "Успадковувати колір для підканалів" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Недійсна URL-адреса" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Змінити налаштування" ,
submenu _resetsettings : "Скинути канал"
} ;
case "vi" : // Vietnamese
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Bạn có chắc chắn muốn đặt lại kênh này không?" ,
confirm _resetall : "Bạn có chắc chắn muốn đặt lại tất cả các kênh không?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Cài đặt kênh cục bộ" ,
modal _channelname : "Tên kênh địa phương" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Biểu tượng" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Màu kênh địa phương" ,
modal _header : "Cài đặt kênh cục bộ" ,
modal _inheritcolor : "Kế thừa màu cho các kênh phụ" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "URL không hợp lệ" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Thay đổi cài đặt" ,
submenu _resetsettings : "Đặt lại kênh"
} ;
2021-01-15 17:54:22 +01:00
case "zh-CN" : // Chinese (China)
2020-12-21 19:56:36 +01:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "您确定要重置此频道吗?" ,
confirm _resetall : "您确定要重置所有频道吗?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "本地频道设置" ,
modal _channelname : "本地频道名称" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "图标" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "本地频道颜色" ,
modal _header : "本地频道设置" ,
modal _inheritcolor : "继承颜色到子通道" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "无效的网址" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "更改设置" ,
submenu _resetsettings : "重置频道"
} ;
2021-01-15 17:54:22 +01:00
case "zh-TW" : // Chinese (Taiwan)
2020-12-21 19:56:36 +01:00
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "您確定要重置此頻道嗎?" ,
confirm _resetall : "您確定要重置所有頻道嗎?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "本地頻道設置" ,
modal _channelname : "本地頻道名稱" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "圖標" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "本地頻道顏色" ,
modal _header : "本地頻道設置" ,
modal _inheritcolor : "繼承顏色到子通道" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "無效的網址" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "更改設置" ,
submenu _resetsettings : "重置頻道"
} ;
default : // English
return {
2020-12-22 20:38:51 +01:00
confirm _reset : "Are you sure you want to reset this Channel?" ,
confirm _resetall : "Are you sure you want to reset all Channels?" ,
2020-12-21 19:56:36 +01:00
context _localchannelsettings : "Local Channel Settings" ,
modal _channelname : "Local Channel Name" ,
2021-01-09 22:06:27 +01:00
modal _channelicon : "Icon" ,
2020-12-21 19:56:36 +01:00
modal _colorpicker1 : "Local Channel Color" ,
modal _header : "Local Channel Settings" ,
modal _inheritcolor : "Inherit Color to Sub-Channels" ,
2021-01-29 17:59:14 +01:00
modal _invalidurl : "Invalid URL" ,
2020-12-21 19:56:36 +01:00
submenu _channelsettings : "Change Settings" ,
submenu _resetsettings : "Reset Channel"
2020-09-19 20:49:33 +02:00
} ;
}
}
} ;
2022-09-01 14:40:11 +02:00
} ) ( window . BDFDB _Global . PluginUtils . buildPlugin ( changeLog ) ) ;
2020-12-15 17:45:31 +01:00
} ) ( ) ;