phanpy/src/utils/relationships.js

39 lines
1 KiB
JavaScript
Raw Normal View History

2023-12-20 08:55:56 +03:00
import { api } from './api';
import { getCurrentAccountID } from './store-utils';
2023-12-20 08:55:56 +03:00
export async function fetchRelationships(accounts, relationshipsMap = {}) {
if (!accounts?.length) return;
const { masto } = api();
const currentAccount = getCurrentAccountID();
2023-12-20 08:55:56 +03:00
const uniqueAccountIds = accounts.reduce((acc, a) => {
// 1. Ignore duplicate accounts
// 2. Ignore accounts that are already inside relationshipsMap
// 3. Ignore currently logged in account
if (
!acc.includes(a.id) &&
!relationshipsMap[a.id] &&
a.id !== currentAccount
) {
acc.push(a.id);
}
return acc;
}, []);
if (!uniqueAccountIds.length) return null;
2023-12-20 08:55:56 +03:00
try {
const relationships = await masto.v1.accounts.relationships.fetch({
id: uniqueAccountIds,
});
const newRelationshipsMap = relationships.reduce((acc, r) => {
acc[r.id] = r;
return acc;
}, {});
return newRelationshipsMap;
} catch (e) {
console.error(e);
// It's okay to fail
return null;
}
}