soapbox/app/gabsocial/utils/accounts.js

38 lines
1.1 KiB
JavaScript
Raw Normal View History

2020-04-21 19:00:31 +00:00
import { Map as ImmutableMap } from 'immutable';
import { List as ImmutableList } from 'immutable';
2020-04-21 19:00:31 +00:00
2020-04-18 19:18:04 +00:00
export const getDomain = account => {
2020-03-28 18:07:36 +00:00
let re = /https?:\/\/(.*?)\//i;
return re.exec(account.get('url'))[1];
2020-04-14 18:44:40 +00:00
};
2020-03-28 18:07:36 +00:00
// user@domain even for local users
export const acctFull = account => {
let [user, domain] = account.get('acct').split('@');
try {
if (!domain) domain = getDomain(account);
} catch(e) {
2020-03-28 20:10:35 +00:00
console.warning('Could not get domain for acctFull. Falling back to acct.');
2020-03-28 18:07:36 +00:00
return account.get('acct');
}
return [user, domain].join('@');
2020-04-14 18:44:40 +00:00
};
2020-04-18 20:09:54 +00:00
2020-04-27 20:05:07 +00:00
export const isStaff = (account = ImmutableMap()) => (
[isAdmin, isModerator].some(f => f(account) === true)
);
export const isAdmin = account => (
account.getIn(['pleroma', 'is_admin']) === true
);
export const isModerator = account => (
account.getIn(['pleroma', 'is_moderator']) === true
);
2020-05-28 00:36:23 +00:00
export const getFollowDifference = (state, accountId, type) => {
const listSize = state.getIn(['user_lists', type, accountId, 'items'], ImmutableList()).size;
const counter = state.getIn(['accounts_counters', accountId, `${type}_count`], 0);
return counter - listSize;
};