From dcff64e2e66732da9ad22a55ae6c292db17655ce Mon Sep 17 00:00:00 2001 From: Mirco Wittrien Date: Fri, 28 Oct 2022 13:04:56 +0200 Subject: [PATCH] stuff --- Library/_res/0BDFDB.data.json | 8 + .../BetterFriendList.plugin.js | 201 +++++++++--------- 2 files changed, 111 insertions(+), 98 deletions(-) diff --git a/Library/_res/0BDFDB.data.json b/Library/_res/0BDFDB.data.json index e20c03d8fb..99cc960d32 100644 --- a/Library/_res/0BDFDB.data.json +++ b/Library/_res/0BDFDB.data.json @@ -400,6 +400,13 @@ "NowPlayingItem": {"strings": [".wrapper", "padded:"]}, "PanelButton": {"strings": ["Masks.PANEL_BUTTON"]}, "ParticipantsForSelectedParticipant": {"strings": ["ACTIVITY", "maxVisibleUsers", "participantType"]}, + "PeopleList": {"strings": [".SECTION_NO_RESULTS", ".section", "SUGGESTIONS"]}, + "PeopleListItem": {"strings": ["height:new", "isFocused", "onOtherHover"]}, + "PeopleListItemBlocked": {"strings": [".listItemContents", "UNKNOWN", ".BLOCKED"]}, + "PeopleListItemFriend": {"strings": [".getMutablePrivateChannels", ".handleOpenPrivateChannel", "isActiveRow"]}, + "PeopleListItemPending": {"strings": ["PENDING_INCOMING", ".DENY", "addRelationship"]}, + "PeopleListSectionedLazy": {"strings": [".statusSections", ".peopleList", "id:\"people-list\""]}, + "PeopleListSectionedNonLazy": {"strings": [".statusSections", ".peopleList", "id:\"people\""]}, "PrivateChannel": {"strings": ["LEAVE_GROUP_DM_MANAGED_BODY", "handleCloseButtonMouseDown", "handleLeaveGroup"]}, "PrivateChannelRecipients": {"strings": [".membersWrap", "recipients"]}, "PrivateChannelsList": {"strings": ["privateChannelIds", "privateChannelRecipientsInviteButtonIcon"]}, @@ -419,6 +426,7 @@ "Spoiler": {"strings": ["revealSpoiler", ".onReveal"]}, "SpoilerWarning": {"strings": [".spoilerWarning", ".SPOILER"]}, "StandardSidebarView": {"strings": ["standardSidebarView", ".sidebarTheme", "mobileSidebarHeader"]}, + "TabBar": {"props": ["Types", "Looks", "Item", "Panel"]}, "TransitionGroup": {"protos": ["performAppear", "performEnter", "performLeave"]}, "UnreadDMs": {"strings": ["getMutablePrivateChannels", "selectedVoiceGuildId", ".selectedVoiceChannelId"]}, "UseCopyIdItem": {"strings": ["\"devmode-copy-id\""]}, diff --git a/Plugins/BetterFriendList/BetterFriendList.plugin.js b/Plugins/BetterFriendList/BetterFriendList.plugin.js index 523ab3c026..4319cb3d92 100644 --- a/Plugins/BetterFriendList/BetterFriendList.plugin.js +++ b/Plugins/BetterFriendList/BetterFriendList.plugin.js @@ -2,7 +2,7 @@ * @name BetterFriendList * @author DevilBro * @authorId 278543574059057154 - * @version 1.4.6 + * @version 1.4.7 * @description Adds extra Controls to the Friends Page, for example sort by Name/Status, Search and All/Request/Blocked Amount * @invite Jx3TjNS * @donate https://www.paypal.me/MircoWittrien @@ -87,22 +87,28 @@ module.exports = (_ => { } }; - this.patchedModules = { - before: { - TabBar: "render", - PeopleListSectionedLazy: "default", - PeopleListSectionedNonLazy: "default" - }, - after: { - TabBar: "render", - PeopleListSectionedLazy: "default", - PeopleListSectionedNonLazy: "default", - PeopleList: "default", - FriendRow: "render", - PendingRow: "default", - BlockedRow: "render", - PeopleListItem: ["render", "componentDidMount","componentWillUnmount"] - } + this.modulePatches = { + before: [ + "PeopleListSectionedLazy", + "PeopleListSectionedNonLazy", + "TabBar" + ], + after: [ + "PeopleList", + "PeopleListItem", + "PeopleListItemBlocked", + "PeopleListItemFriend", + "PeopleListItemPending", + "PeopleListSectionedLazy", + "PeopleListSectionedNonLazy", + "TabBar" + ], + componentDidMount: [ + "PeopleListItem" + ], + componentWillUnmount: [ + "PeopleListItem" + ] }; this.css = ` @@ -180,37 +186,37 @@ module.exports = (_ => { } onUserContextMenu (e) { - if (e.instance.props.user && e.subType == "useUserRelationshipItems" && BDFDB.LibraryStores.RelationshipStore.isFriend(e.instance.props.user.id)) { - let favorized = favorizedFriends.indexOf(e.instance.props.user.id) > -1; - let hidden = hiddenFriends.indexOf(e.instance.props.user.id) > -1; - e.returnvalue.push(this.settings.general.addFavorizedCategory && BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, { - label: favorized ? this.labels.context_unfavorizefriend : this.labels.context_favorizefriend, - id: BDFDB.ContextMenuUtils.createItemId(this.name, favorized ? "unfavorize-friend" : "favorize-friend"), - action: _ => { - if (favorized) BDFDB.ArrayUtils.remove(favorizedFriends, e.instance.props.user.id, true); - else { - favorizedFriends.push(e.instance.props.user.id); - BDFDB.ArrayUtils.remove(hiddenFriends, e.instance.props.user.id, true); - } - BDFDB.DataUtils.save(favorizedFriends, this, "favorizedFriends"); - BDFDB.DataUtils.save(hiddenFriends, this, "hiddenFriends"); - this.rerenderList(); + if (!e.instance.props.user || !BDFDB.LibraryStores.RelationshipStore.isFriend(e.instance.props.user.id)) return; + let favorized = favorizedFriends.indexOf(e.instance.props.user.id) > -1; + let hidden = hiddenFriends.indexOf(e.instance.props.user.id) > -1; + let [children, index] = BDFDB.ContextMenuUtils.findItem(e.returnvalue, {id: "remove-friend"}); + if (index > -1) children.splice(index + 1, 0, this.settings.general.addFavorizedCategory && BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, { + label: favorized ? this.labels.context_unfavorizefriend : this.labels.context_favorizefriend, + id: BDFDB.ContextMenuUtils.createItemId(this.name, favorized ? "unfavorize-friend" : "favorize-friend"), + action: _ => { + if (favorized) BDFDB.ArrayUtils.remove(favorizedFriends, e.instance.props.user.id, true); + else { + favorizedFriends.push(e.instance.props.user.id); + BDFDB.ArrayUtils.remove(hiddenFriends, e.instance.props.user.id, true); } - }), this.settings.general.addHiddenCategory && BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, { - label: hidden ? this.labels.context_unhidefriend : this.labels.context_hidefriend, - id: BDFDB.ContextMenuUtils.createItemId(this.name, hidden ? "unhide-friend" : "hide-friend"), - action: _ => { - if (hidden) BDFDB.ArrayUtils.remove(hiddenFriends, e.instance.props.user.id, true); - else { - BDFDB.ArrayUtils.remove(favorizedFriends, e.instance.props.user.id, true); - hiddenFriends.push(e.instance.props.user.id); - } - BDFDB.DataUtils.save(favorizedFriends, this, "favorizedFriends"); - BDFDB.DataUtils.save(hiddenFriends, this, "hiddenFriends"); - this.rerenderList(); + BDFDB.DataUtils.save(favorizedFriends, this, "favorizedFriends"); + BDFDB.DataUtils.save(hiddenFriends, this, "hiddenFriends"); + this.rerenderList(); + } + }), this.settings.general.addHiddenCategory && BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, { + label: hidden ? this.labels.context_unhidefriend : this.labels.context_hidefriend, + id: BDFDB.ContextMenuUtils.createItemId(this.name, hidden ? "unhide-friend" : "hide-friend"), + action: _ => { + if (hidden) BDFDB.ArrayUtils.remove(hiddenFriends, e.instance.props.user.id, true); + else { + BDFDB.ArrayUtils.remove(favorizedFriends, e.instance.props.user.id, true); + hiddenFriends.push(e.instance.props.user.id); } - })); - } + BDFDB.DataUtils.save(favorizedFriends, this, "favorizedFriends"); + BDFDB.DataUtils.save(hiddenFriends, this, "hiddenFriends"); + this.rerenderList(); + } + })); } processTabBar (e) { @@ -315,69 +321,68 @@ module.exports = (_ => { } processPeopleList (e) { - let [children, index] = BDFDB.ReactUtils.findParent(e.returnvalue, {name: "SectionTitle"}); - if (index > -1) { - let users = (BDFDB.ReactUtils.findChild(e.returnvalue, {props: ["statusSections"]}) || {props: {statusSections: []}}).props.statusSections.flat(10); - let filteredUsers = users; - if (this.settings.general.addFavorizedCategory) { - if (isFavoritesSelected) filteredUsers = filteredUsers.filter(n => n && n.user && favorizedFriends.indexOf(n.user.id) > -1); - } - if (this.settings.general.addHiddenCategory) { - if (isHiddenSelected) filteredUsers = filteredUsers.filter(n => n && n.user && hiddenFriends.indexOf(n.user.id) > -1); - else filteredUsers = filteredUsers.filter(n => n && n.user && hiddenFriends.indexOf(n.user.id) == -1); - } - children[index].props.title = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Flex, { - align: BDFDB.LibraryComponents.Flex.Align.CENTER, - children: [ - BDFDB.ReactUtils.createElement("div", { - className: BDFDB.disCN._betterfriendlisttitle, - children: this.settings.general.addFavorizedCategory && isFavoritesSelected ? `${this.labels.favorites} - ${filteredUsers.filter(u => u && u.key != placeHolderId).length}` : this.settings.general.addHiddenCategory && isHiddenSelected ? `${this.labels.hidden} - ${filteredUsers.filter(u => u && u.key != placeHolderId).length}` : children[index].props.title.replace(users.length, filteredUsers.filter(u => u && u.key != placeHolderId).length) + let [children, index] = BDFDB.ReactUtils.findParent(e.returnvalue, {filter: n => n && n.props && n.props.title && n.props.id}); + if (index == -1) return; + let users = (BDFDB.ReactUtils.findChild(e.returnvalue, {props: ["statusSections"]}) || {props: {statusSections: []}}).props.statusSections.flat(10); + let filteredUsers = users; + if (this.settings.general.addFavorizedCategory) { + if (isFavoritesSelected) filteredUsers = filteredUsers.filter(n => n && n.user && favorizedFriends.indexOf(n.user.id) > -1); + } + if (this.settings.general.addHiddenCategory) { + if (isHiddenSelected) filteredUsers = filteredUsers.filter(n => n && n.user && hiddenFriends.indexOf(n.user.id) > -1); + else filteredUsers = filteredUsers.filter(n => n && n.user && hiddenFriends.indexOf(n.user.id) == -1); + } + children[index].props.title = BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Flex, { + align: BDFDB.LibraryComponents.Flex.Align.CENTER, + children: [ + BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN._betterfriendlisttitle, + children: this.settings.general.addFavorizedCategory && isFavoritesSelected ? `${this.labels.favorites} - ${filteredUsers.filter(u => u && u.key != placeHolderId).length}` : this.settings.general.addHiddenCategory && isHiddenSelected ? `${this.labels.hidden} - ${filteredUsers.filter(u => u && u.key != placeHolderId).length}` : children[index].props.title.replace(users.length, filteredUsers.filter(u => u && u.key != placeHolderId).length) + }), + this.settings.general.addSortOptions && [ + {key: "usernameLower", label: BDFDB.LanguageUtils.LanguageStrings.USER_SETTINGS_LABEL_USERNAME}, + {key: "statusIndex", label: BDFDB.LanguageUtils.LibraryStrings.status} + ].filter(n => n).map(data => BDFDB.ReactUtils.createElement("div", { + className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tableheadercellwrapper, BDFDB.disCN.tableheadercell, BDFDB.disCN._betterfriendlistnamecell, sortKey == data.key && BDFDB.disCN.tableheadercellsorted, BDFDB.disCN.tableheadercellclickable), + children: BDFDB.ReactUtils.createElement("div", { + className: BDFDB.disCN.tableheadercellcontent, + children: [ + data.label, + sortKey == data.key && BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, { + className: BDFDB.disCN.tableheadersorticon, + name: BDFDB.LibraryComponents.SvgIcon.Names[sortReversed ? "ARROW_UP" : "ARROW_DOWN"] + }) + ].filter(n => n) }), - this.settings.general.addSortOptions && [ - {key: "usernameLower", label: BDFDB.LanguageUtils.LanguageStrings.USER_SETTINGS_LABEL_USERNAME}, - {key: "statusIndex", label: BDFDB.LanguageUtils.LibraryStrings.status} - ].filter(n => n).map(data => BDFDB.ReactUtils.createElement("div", { - className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.tableheadercellwrapper, BDFDB.disCN.tableheadercell, BDFDB.disCN._betterfriendlistnamecell, sortKey == data.key && BDFDB.disCN.tableheadercellsorted, BDFDB.disCN.tableheadercellclickable), - children: BDFDB.ReactUtils.createElement("div", { - className: BDFDB.disCN.tableheadercellcontent, - children: [ - data.label, - sortKey == data.key && BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, { - className: BDFDB.disCN.tableheadersorticon, - name: BDFDB.LibraryComponents.SvgIcon.Names[sortReversed ? "ARROW_UP" : "ARROW_DOWN"] - }) - ].filter(n => n) - }), - onClick: event => { - if (sortKey == data.key) { - if (!sortReversed) sortReversed = true; - else { - sortKey = null; - sortReversed = false; - } - } + onClick: event => { + if (sortKey == data.key) { + if (!sortReversed) sortReversed = true; else { - sortKey = data.key; + sortKey = null; sortReversed = false; } - this.rerenderList(); } - })) - ].flat(10).filter(n => n) - }); - } + else { + sortKey = data.key; + sortReversed = false; + } + this.rerenderList(); + } + })) + ].flat(10).filter(n => n) + }); } - processFriendRow (e) { + processPeopleListItemFriend (e) { e.returnvalue.props.mutualGuilds = e.instance.props.mutualGuilds; } - processPendingRow (e) { - this.processFriendRow(e); + processPeopleListItemPending (e) { + this.processPeopleListItemFriend(e); } - processBlockedRow (e) { - this.processFriendRow(e); + processPeopleListItemBlocked (e) { + this.processPeopleListItemFriend(e); } processPeopleListItem (e) { @@ -402,7 +407,7 @@ module.exports = (_ => { } injectMutualGuilds (returnvalue, mutualGuilds) { - let [children, index] = BDFDB.ReactUtils.findParent(returnvalue, {name: "UserInfo"}); + let [children, index] = BDFDB.ReactUtils.findParent(returnvalue, {filter: n => n && n.props && n.props.subText && n.props.user}); if (index > -1) children.splice(index + 1, 0, BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.GuildSummaryItem, { className: BDFDB.disCN._betterfriendlistmutualguilds, guilds: mutualGuilds,