mirror of
https://github.com/cheeaun/phanpy.git
synced 2024-12-25 11:48:14 +03:00
38 lines
979 B
JavaScript
38 lines
979 B
JavaScript
|
import { api } from './api';
|
||
|
import store from './store';
|
||
|
|
||
|
export async function fetchRelationships(accounts, relationshipsMap = {}) {
|
||
|
if (!accounts?.length) return;
|
||
|
const { masto } = api();
|
||
|
|
||
|
const currentAccount = store.session.get('currentAccount');
|
||
|
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;
|
||
|
}, []);
|
||
|
|
||
|
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;
|
||
|
}
|
||
|
}
|