Remove account.donor as a concept, use 'badge:donor' custom tag instead

This commit is contained in:
Alex Gleason 2022-09-11 20:44:49 -05:00
parent 2fc9b215a9
commit 1f0b4d01b5
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
5 changed files with 6 additions and 39 deletions

View File

@ -442,14 +442,6 @@ const unverifyUser = (accountId: string) =>
(dispatch: AppDispatch) =>
dispatch(untagUsers([accountId], ['verified']));
const setDonor = (accountId: string) =>
(dispatch: AppDispatch) =>
dispatch(tagUsers([accountId], ['donor']));
const removeDonor = (accountId: string) =>
(dispatch: AppDispatch) =>
dispatch(untagUsers([accountId], ['donor']));
const addPermission = (accountIds: string[], permissionGroup: string) =>
(dispatch: AppDispatch, getState: () => RootState) => {
const nicknames = nicknamesFromIds(getState, accountIds);
@ -604,8 +596,6 @@ export {
setBadges,
verifyUser,
unverifyUser,
setDonor,
removeDonor,
addPermission,
removePermission,
promoteToAdmin,

View File

@ -7,14 +7,14 @@ interface IBadge {
}
/** Badge to display on a user's profile. */
const Badge: React.FC<IBadge> = ({ title, slug }) => {
const fallback = !['patron', 'admin', 'moderator', 'opaque', 'donor', 'badge:donor'].includes(slug);
const fallback = !['patron', 'admin', 'moderator', 'opaque', 'badge:donor'].includes(slug);
return (
<span
data-testid='badge'
className={classNames('inline-flex items-center px-2 py-0.5 rounded text-xs font-medium', {
'bg-fuchsia-700 text-white': slug === 'patron',
'bg-yellow-500 text-white': ['donor', 'badge:donor'].includes(slug),
'bg-emerald-800 text-white': slug === 'badge:donor',
'bg-black text-white': slug === 'admin',
'bg-cyan-600 text-white': slug === 'moderator',
'bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-gray-100': fallback,

View File

@ -37,10 +37,6 @@ const getBadges = (account: Account): JSX.Element[] => {
badges.push(<Badge key='patron' slug='patron' title='Patron' />);
}
if (account.donor) {
badges.push(<Badge key='donor' slug='donor' title='Donor' />);
}
return badges;
};

View File

@ -4,8 +4,6 @@ import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
import {
verifyUser,
unverifyUser,
setDonor,
removeDonor,
suggestUsers,
unsuggestUsers,
setBadges as saveBadges,
@ -80,17 +78,6 @@ const AccountModerationModal: React.FC<IAccountModerationModal> = ({ onClose, ac
.catch(() => {});
};
const handleDonorChange: ChangeEventHandler<HTMLInputElement> = (e) => {
const { checked } = e.target;
const message = checked ? messages.setDonorSuccess : messages.removeDonorSuccess;
const action = checked ? setDonor : removeDonor;
dispatch(action(account.id))
.then(() => dispatch(snackbar.success(intl.formatMessage(message, { acct: account.acct }))))
.catch(() => {});
};
const handleSuggestedChange: ChangeEventHandler<HTMLInputElement> = (e) => {
const { checked } = e.target;
@ -147,13 +134,6 @@ const AccountModerationModal: React.FC<IAccountModerationModal> = ({ onClose, ac
/>
</ListItem>
<ListItem label={<FormattedMessage id='account_moderation_modal.fields.donor' defaultMessage='Donor' />}>
<Toggle
checked={account.donor}
onChange={handleDonorChange}
/>
</ListItem>
{features.suggestionsV2 && (
<ListItem label={<FormattedMessage id='account_moderation_modal.fields.suggested' defaultMessage='Suggested in people to follow' />}>
<Toggle

View File

@ -56,7 +56,6 @@ export const AccountRecord = ImmutableRecord({
admin: false,
display_name_html: '',
domain: '',
donor: false,
moderator: false,
note_emojified: '',
note_plain: '',
@ -155,9 +154,11 @@ const normalizeVerified = (account: ImmutableMap<string, any>) => {
});
};
/** Get donor status from tags. */
/** Upgrade legacy donor tag to a badge. */
const normalizeDonor = (account: ImmutableMap<string, any>) => {
return account.set('donor', getTags(account).includes('donor'));
const tags = getTags(account);
const updated = tags.includes('donor') ? tags.push('badge:donor') : tags;
return account.setIn(['pleroma', 'tags'], updated);
};
/** Normalize Fedibird/Truth Social/Pleroma location */