feature/advancedPermissions: update card rendering (#1240)

* refactor(advancedPermissions): update card rendering and remove unused CSS

* [autofix.ci] apply automated fixes

* feat(advancedPermissions): implement better card rendering

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
Basti 2026-07-11 01:56:10 +02:00 • committed by GitHub
parent 93371a1863
commit a9e077fc3a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 28 additions and 28 deletions

View file

@ -4,8 +4,6 @@
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import "./style.css";
import { definePluginSettings } from "@api/Settings";
import { BaseText } from "@components/BaseText";
import ErrorBoundary from "@components/ErrorBoundary";
@ -60,6 +58,19 @@ const CollapsibleCard = ErrorBoundary.wrap(
{ noop: true },
);
let savedCard: ReactNode = null;
const SimplifiedCard = ErrorBoundary.wrap(() => {
switch (settings.store.simplifiedCard) {
case "hide":
return null;
case "collapse":
return <CollapsibleCard>{savedCard}</CollapsibleCard>;
default:
return <>{savedCard}</>;
}
}, { noop: true });
const settings = definePluginSettings({
simplifiedCard: {
type: OptionType.SELECT,
@ -90,19 +101,19 @@ export default definePlugin({
find: 'id:"PrivateChannelSettingCard"',
replacement: [
{
// simplified card renderer
match: /(?<=permissionUpdates:\i\}\):null,).{0,100}roles:\i,members:\i\}\)/,
replace: "$self.renderCard($&)",
// render the card below the subtitle
match: /(?<=children:\i\.subtitle\}\),)/,
replace: "$self.renderCard(),",
},
{
// hide divider when card hidden, else tighten it
// grab, store and hide the original card
match: /(?<=permissionUpdates:\i\}\):null,).{0,100}?roles:\i,members:\i\}\)/,
replace: "$self.saveCard($&)",
},
{
// always hide the divider
match: /(?<=advancedMode\);.{0,30}children:\[)/,
replace: "$self.cardHidden()?null:",
},
{
// hide divider when card hidden, else tighten it
match: /className:\i\.\i(?=.{0,50}onExpandedChange)/,
replace: '$&+" vc-iamadvanced-divider"',
replace: "null&&",
},
{
// always force advanced open
@ -118,18 +129,12 @@ export default definePlugin({
},
],
cardHidden() {
return settings.store.simplifiedCard === "hide";
renderCard() {
return <SimplifiedCard />;
},
renderCard(card: ReactNode) {
switch (settings.store.simplifiedCard) {
case "hide":
return null;
case "collapse":
return <CollapsibleCard>{card}</CollapsibleCard>;
default:
return card;
}
saveCard(card: ReactNode) {
savedCard = card;
return null;
},
});

View file

@ -1,5 +0,0 @@
.vc-iamadvanced-divider {
/* override advancedModeDivider's large margins */
margin-top: 8px !important;
margin-bottom: 8px !important;
}