kopia lustrzana https://gitlab.com/soapbox-pub/soapbox
Account normalizer: convert to Typescript, add type
rodzic
38fbd703e4
commit
894bf1e880
|
@ -2,6 +2,44 @@ import { Map as ImmutableMap, List as ImmutableList, Record } from 'immutable';
|
||||||
|
|
||||||
import { mergeDefined } from 'soapbox/utils/normalizers';
|
import { mergeDefined } from 'soapbox/utils/normalizers';
|
||||||
|
|
||||||
|
interface Account {
|
||||||
|
acct: string;
|
||||||
|
avatar: string;
|
||||||
|
avatar_static: string;
|
||||||
|
birthday: Date | undefined;
|
||||||
|
bot: boolean;
|
||||||
|
created_at: Date;
|
||||||
|
display_name: string;
|
||||||
|
emojis: ImmutableList<any>;
|
||||||
|
fields: ImmutableList<any>;
|
||||||
|
followers_count: number;
|
||||||
|
following_count: number;
|
||||||
|
fqn: string;
|
||||||
|
header: string;
|
||||||
|
header_static: string;
|
||||||
|
id: string;
|
||||||
|
last_status_at: Date;
|
||||||
|
location: string;
|
||||||
|
locked: boolean;
|
||||||
|
moved: null;
|
||||||
|
note: string;
|
||||||
|
pleroma: ImmutableMap<any, any>;
|
||||||
|
source: ImmutableMap<any, any>;
|
||||||
|
statuses_count: number;
|
||||||
|
uri: string;
|
||||||
|
url: string;
|
||||||
|
username: string;
|
||||||
|
verified: boolean;
|
||||||
|
|
||||||
|
// Internal fields
|
||||||
|
display_name_html: string;
|
||||||
|
note_emojified: string;
|
||||||
|
note_plain: string;
|
||||||
|
patron: ImmutableMap<any, any>;
|
||||||
|
relationship: ImmutableList<any>;
|
||||||
|
should_refetch: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
const AccountRecord = Record({
|
const AccountRecord = Record({
|
||||||
acct: '',
|
acct: '',
|
||||||
avatar: '',
|
avatar: '',
|
||||||
|
@ -41,8 +79,8 @@ const AccountRecord = Record({
|
||||||
});
|
});
|
||||||
|
|
||||||
// https://gitlab.com/soapbox-pub/soapbox-fe/-/issues/549
|
// https://gitlab.com/soapbox-pub/soapbox-fe/-/issues/549
|
||||||
const normalizePleromaLegacyFields = account => {
|
const normalizePleromaLegacyFields = (account: ImmutableMap<string, any>) => {
|
||||||
return account.update('pleroma', ImmutableMap(), pleroma => {
|
return account.update('pleroma', ImmutableMap(), (pleroma: ImmutableMap<string, any>) => {
|
||||||
return pleroma.withMutations(pleroma => {
|
return pleroma.withMutations(pleroma => {
|
||||||
const legacy = ImmutableMap({
|
const legacy = ImmutableMap({
|
||||||
is_active: !pleroma.get('deactivated'),
|
is_active: !pleroma.get('deactivated'),
|
||||||
|
@ -57,7 +95,7 @@ const normalizePleromaLegacyFields = account => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Normalize Pleroma/Fedibird birthday
|
// Normalize Pleroma/Fedibird birthday
|
||||||
const normalizeBirthday = account => {
|
const normalizeBirthday = (account: ImmutableMap<string, any>) => {
|
||||||
const birthday = [
|
const birthday = [
|
||||||
account.getIn(['pleroma', 'birthday']),
|
account.getIn(['pleroma', 'birthday']),
|
||||||
account.getIn(['other_settings', 'birthday']),
|
account.getIn(['other_settings', 'birthday']),
|
||||||
|
@ -66,18 +104,24 @@ const normalizeBirthday = account => {
|
||||||
return account.set('birthday', birthday);
|
return account.set('birthday', birthday);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Get Pleroma tags
|
||||||
|
const getTags = (account: ImmutableMap<string, any>): ImmutableList<any> => {
|
||||||
|
const tags = account.getIn(['pleroma', 'tags']);
|
||||||
|
return ImmutableList(ImmutableList.isList(tags) ? tags : []);
|
||||||
|
};
|
||||||
|
|
||||||
// Normalize Truth Social/Pleroma verified
|
// Normalize Truth Social/Pleroma verified
|
||||||
const normalizeVerified = account => {
|
const normalizeVerified = (account: ImmutableMap<string, any>) => {
|
||||||
return account.update('verified', verified => {
|
return account.update('verified', verified => {
|
||||||
return [
|
return [
|
||||||
verified === true,
|
verified === true,
|
||||||
account.getIn(['pleroma', 'tags'], ImmutableList()).includes('verified'),
|
getTags(account).includes('verified'),
|
||||||
].some(Boolean);
|
].some(Boolean);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// Normalize Fedibird/Truth Social location
|
// Normalize Fedibird/Truth Social location
|
||||||
const normalizeLocation = account => {
|
const normalizeLocation = (account: ImmutableMap<string, any>) => {
|
||||||
return account.update('location', location => {
|
return account.update('location', location => {
|
||||||
return [
|
return [
|
||||||
location,
|
location,
|
||||||
|
@ -86,7 +130,7 @@ const normalizeLocation = account => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export const normalizeAccount = account => {
|
export const normalizeAccount = (account: ImmutableMap<string, any>): Account => {
|
||||||
return AccountRecord(
|
return AccountRecord(
|
||||||
account.withMutations(account => {
|
account.withMutations(account => {
|
||||||
normalizePleromaLegacyFields(account);
|
normalizePleromaLegacyFields(account);
|
Ładowanie…
Reference in New Issue