Compare commits

...

6 commits

Author SHA1 Message Date
Lillith
205a16984f
Merge f9dec90f34 into b875ebf92d 2024-09-19 12:14:22 +00:00
Nuckyz
b875ebf92d
UserVoiceShow: Fix setting name
Some checks are pending
Sync to Codeberg / codeberg (push) Waiting to run
test / test (push) Waiting to run
2024-09-19 08:48:56 -03:00
vee
f9dec90f34
Discard changes to src/plugins/_core/noTrack.ts 2024-07-05 18:49:14 +02:00
Lillith
cd8729700e fix: accidentally used tsx extension 2024-06-28 18:02:54 -04:00
Lillith
f969d80dc3 feat(plugin): DefaultStatusForever 2024-06-28 17:57:28 -04:00
Nuckyz
748a456cfb
Delete patching properties after used 2024-06-28 18:54:37 -03:00
5 changed files with 65 additions and 7 deletions

View file

@ -0,0 +1,5 @@
# DefaultStatusForever
Makes the custom status screen default to "Don't Clear" as the duration
![The custom status screen, with "Don't Clear" selected and as the first option](https://github.com/Vendicated/Vencord/assets/44179559/e8cf0ca1-589c-43ef-9a6d-4fa3ed03a1f9)

View file

@ -0,0 +1,48 @@
/*
* Vencord, a Discord client mod
* Copyright (c) 2024 Vendicated and contributors
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import { Devs } from "@utils/constants";
import definePlugin from "@utils/types";
interface Choice {
key: number;
value: any;
label: string;
}
export default definePlugin({
name: "DefaultStatusForever",
description: "Make statuses default to last forever",
authors: [Devs.ImLvna],
patches: [
{
// hardcode default status duration to null
find: "this.clearAfterOptions",
replacement: {
match: /(?<=value:)\i(?=,options:this.clearAfterOptions)/,
replace: "null"
}
},
{
// reorder the list to put "Dont't Clear" at the top
find: "get clearAfterOptions",
replacement: {
match: /(?<=get clearAfterOptions\(\){return).*?}]/,
replace: " $self.patchChoices($&)"
}
}
],
patchChoices(choices: Choice[]) {
const nullChoice = choices.find(choice => choice.value === null);
if (nullChoice) {
choices.splice(choices.indexOf(nullChoice), 1);
choices.unshift(nullChoice);
}
return choices;
}
});

View file

@ -103,7 +103,7 @@ function VoiceChannelTooltip({ channel }: VoiceChannelTooltipProps) {
<UserSummaryItem
users={users}
renderIcon={false}
max={7}
max={14}
size={18}
/>
</div>
@ -159,6 +159,7 @@ export const VoiceChannelIndicator = ErrorBoundary.wrap(({ userId }: VoiceChanne
<Tooltip
text={<VoiceChannelTooltip channel={channel} />}
tooltipClassName={cl("tooltip-container")}
tooltipContentClassName={cl("tooltip-content")}
>
{props =>
isLocked ?

View file

@ -32,7 +32,7 @@ const settings = definePluginSettings({
default: true,
restartNeeded: true
},
showInVoiceMemberList: {
showInMemberList: {
type: OptionType.BOOLEAN,
description: "Show a user's Voice Channel indicator in the member and DMs list",
default: true,
@ -82,12 +82,12 @@ export default definePlugin({
match: /\.subtext,children:.+?}\)\]}\)(?=])/,
replace: "$&,$self.VoiceChannelIndicator({userId:arguments[0]?.user?.id})"
},
predicate: () => settings.store.showInVoiceMemberList
predicate: () => settings.store.showInMemberList
}
],
start() {
if (settings.store.showInVoiceMemberList) {
if (settings.store.showInMemberList) {
addDecorator("UserVoiceShow", ({ user }) => user == null ? null : <VoiceChannelIndicator userId={user.id} />);
}
},

View file

@ -15,7 +15,13 @@
}
.vc-uvs-tooltip-container {
max-width: 200px;
max-width: 300px;
}
.vc-uvs-tooltip-content {
display: flex;
flex-direction: column;
gap: 6px;
}
.vc-uvs-guild-name {
@ -31,7 +37,5 @@
.vc-uvs-vc-members {
display: flex;
margin: 8px 0;
flex-direction: row;
gap: 6px;
}