58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
|
|
|
|
import { mergeDefined } from 'soapbox/utils/normalizers';
|
|
|
|
// https://gitlab.com/soapbox-pub/soapbox-fe/-/issues/549
|
|
const normalizePleromaLegacyFields = account => {
|
|
return account.update('pleroma', ImmutableMap(), pleroma => {
|
|
return pleroma.withMutations(pleroma => {
|
|
const legacy = ImmutableMap({
|
|
is_active: !pleroma.get('deactivated'),
|
|
is_confirmed: !pleroma.get('confirmation_pending'),
|
|
is_approved: !pleroma.get('approval_pending'),
|
|
});
|
|
|
|
pleroma.mergeWith(mergeDefined, legacy);
|
|
pleroma.deleteAll(['deactivated', 'confirmation_pending', 'approval_pending']);
|
|
});
|
|
});
|
|
};
|
|
|
|
// Normalize Pleroma/Fedibird birthday
|
|
const normalizeBirthday = account => {
|
|
const birthday = [
|
|
account.getIn(['pleroma', 'birthday']),
|
|
account.getIn(['other_settings', 'birthday']),
|
|
].find(Boolean);
|
|
|
|
return account.set('birthday', birthday);
|
|
};
|
|
|
|
// Normalize Truth Social/Pleroma verified
|
|
const normalizeVerified = account => {
|
|
return account.update('verified', verified => {
|
|
return [
|
|
verified === true,
|
|
account.getIn(['pleroma', 'tags'], ImmutableList()).includes('verified'),
|
|
].some(Boolean);
|
|
});
|
|
};
|
|
|
|
// Normalize Fedibird/Truth Social location
|
|
const normalizeLocation = account => {
|
|
return account.update('location', location => {
|
|
return [
|
|
location,
|
|
account.getIn(['other_settings', 'location']),
|
|
].find(Boolean);
|
|
});
|
|
};
|
|
|
|
export const normalizeAccount = account => {
|
|
return account.withMutations(account => {
|
|
normalizePleromaLegacyFields(account);
|
|
normalizeVerified(account);
|
|
normalizeBirthday(account);
|
|
normalizeLocation(account);
|
|
});
|
|
};
|