mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 21:15:32 +09:00
Co-authored-by: Hampus <[email protected]>
This commit is contained in:
1 parent
e03be40531
commit
99eedf6d1e
5 files changed
+125
-3
No files matched your search
@@ -29,6 +29,7 @@ import * as UserCommands from '@app/features/user/commands/UserCommands';
|
||||
import styles from '@app/features/user/components/modals/FluxerTagChangeModal.module.css';
|
||||
import type {User} from '@app/features/user/models/User';
|
||||
import {getFormattedDateTime} from '@app/features/user/utils/DateFormatting';
|
||||
import {isVisionaryDiscriminator0000Blocked} from '@app/features/user/utils/FluxerTagDiscriminatorUtils';
|
||||
import {UserPremiumTypes} from '@fluxer/constants/src/UserConstants';
|
||||
import {msg} from '@lingui/core/macro';
|
||||
import {Trans, useLingui} from '@lingui/react/macro';
|
||||
@@ -315,7 +316,11 @@ export const FluxerTagChangeModal = observer(({user}: FluxerTagChangeModalProps)
|
||||
data-flx="user.fluxer-tag-change-modal.input.set-value.text--3"
|
||||
{...form.register('discriminator', {
|
||||
validate: (value) =>
|
||||
!isVisionary && value === '0000'
|
||||
isVisionaryDiscriminator0000Blocked({
|
||||
showPremium,
|
||||
isVisionary,
|
||||
discriminator: value,
|
||||
})
|
||||
? i18n._(THE_0000_TAG_IS_RESERVED_FOR_VISIONARY_SUBSCRIBERS_DESCRIPTOR)
|
||||
: true,
|
||||
})}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import {describe, expect, it} from 'vitest';
|
||||
import {isVisionaryDiscriminator0000Blocked} from './FluxerTagDiscriminatorUtils';
|
||||
|
||||
describe('isVisionaryDiscriminator0000Blocked', () => {
|
||||
it('allows #0000 on self-hosted instances', () => {
|
||||
expect(
|
||||
isVisionaryDiscriminator0000Blocked({
|
||||
showPremium: false,
|
||||
isVisionary: false,
|
||||
discriminator: '0000',
|
||||
}),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it('blocks #0000 for non-visionary users on the main instance', () => {
|
||||
expect(
|
||||
isVisionaryDiscriminator0000Blocked({
|
||||
showPremium: true,
|
||||
isVisionary: false,
|
||||
discriminator: '0000',
|
||||
}),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('allows #0000 for visionary users on the main instance', () => {
|
||||
expect(
|
||||
isVisionaryDiscriminator0000Blocked({
|
||||
showPremium: true,
|
||||
isVisionary: true,
|
||||
discriminator: '0000',
|
||||
}),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it('allows other discriminators on the main instance', () => {
|
||||
expect(
|
||||
isVisionaryDiscriminator0000Blocked({
|
||||
showPremium: true,
|
||||
isVisionary: false,
|
||||
discriminator: '1337',
|
||||
}),
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,10 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
export function isVisionaryDiscriminator0000Blocked(options: {
|
||||
showPremium: boolean;
|
||||
isVisionary: boolean;
|
||||
discriminator: string;
|
||||
}): boolean {
|
||||
const {showPremium, isVisionary, discriminator} = options;
|
||||
return showPremium && !isVisionary && discriminator === '0000';
|
||||
}
|
||||
Reference in new issue
Block a user