UNPKG

chayns-components

Version:

A set of beautiful React components for developing chayns® applications.

94 lines (93 loc) 4.43 kB
import _classPrivateFieldLooseBase from "@babel/runtime/helpers/classPrivateFieldLooseBase"; import _classPrivateFieldLooseKey from "@babel/runtime/helpers/classPrivateFieldLooseKey"; import EventEmitter from '../../../../utils/events/EventEmitter'; import { isServer } from '../../../../utils/isServer'; import { fetchFriends, setFriend } from './PersonsApi'; var _friends = /*#__PURE__*/_classPrivateFieldLooseKey("friends"); var _friendsObject = /*#__PURE__*/_classPrivateFieldLooseKey("friendsObject"); var _eventEmitter = /*#__PURE__*/_classPrivateFieldLooseKey("eventEmitter"); var _initialized = /*#__PURE__*/_classPrivateFieldLooseKey("initialized"); var _loading = /*#__PURE__*/_classPrivateFieldLooseKey("loading"); class FriendsHelper {} Object.defineProperty(FriendsHelper, _friends, { writable: true, value: [] }); Object.defineProperty(FriendsHelper, _friendsObject, { writable: true, value: {} }); Object.defineProperty(FriendsHelper, _eventEmitter, { writable: true, value: new EventEmitter() }); Object.defineProperty(FriendsHelper, _initialized, { writable: true, value: false }); Object.defineProperty(FriendsHelper, _loading, { writable: true, value: false }); FriendsHelper.init = async () => { if (!isServer() && !_classPrivateFieldLooseBase(FriendsHelper, _initialized)[_initialized] && !_classPrivateFieldLooseBase(FriendsHelper, _loading)[_loading]) { try { _classPrivateFieldLooseBase(FriendsHelper, _loading)[_loading] = true; await window.chayns.ready; if (window.chayns.env.user && window.chayns.env.user.isAuthenticated) { const raw = await fetchFriends().catch(() => []); _classPrivateFieldLooseBase(FriendsHelper, _friends)[_friends] = raw.map(FriendsHelper.convertFriend); _classPrivateFieldLooseBase(FriendsHelper, _friends)[_friends].forEach(e => { _classPrivateFieldLooseBase(FriendsHelper, _friendsObject)[_friendsObject][e.personId] = e; }); _classPrivateFieldLooseBase(FriendsHelper, _eventEmitter)[_eventEmitter].emit('update', _classPrivateFieldLooseBase(FriendsHelper, _friends)[_friends]); } _classPrivateFieldLooseBase(FriendsHelper, _initialized)[_initialized] = true; } finally { _classPrivateFieldLooseBase(FriendsHelper, _loading)[_loading] = false; } } }; FriendsHelper.isFriend = personId => !!(_classPrivateFieldLooseBase(FriendsHelper, _friendsObject)[_friendsObject][personId] || false); FriendsHelper.getFriendsList = () => _classPrivateFieldLooseBase(FriendsHelper, _friends)[_friends]; FriendsHelper.setFriend = async function (personId, userId, fullName, friendship) { if (friendship === void 0) { friendship = true; } const success = await setFriend(personId, friendship); if (!success) return; if (friendship) { const friend = FriendsHelper.convertFriend({ personId, userId, fullName }); _classPrivateFieldLooseBase(FriendsHelper, _friends)[_friends].push(friend); _classPrivateFieldLooseBase(FriendsHelper, _friendsObject)[_friendsObject][personId] = friend; } else { _classPrivateFieldLooseBase(FriendsHelper, _friends)[_friends].splice(_classPrivateFieldLooseBase(FriendsHelper, _friends)[_friends].findIndex(person => person.personId === personId), 1); delete _classPrivateFieldLooseBase(FriendsHelper, _friendsObject)[_friendsObject][personId]; } _classPrivateFieldLooseBase(FriendsHelper, _eventEmitter)[_eventEmitter].emit('update', _classPrivateFieldLooseBase(FriendsHelper, _friends)[_friends]); }; FriendsHelper.addUpdateListener = listener => { _classPrivateFieldLooseBase(FriendsHelper, _eventEmitter)[_eventEmitter].on('update', listener); }; FriendsHelper.removeUpdateListener = listener => { _classPrivateFieldLooseBase(FriendsHelper, _eventEmitter)[_eventEmitter].off('update', listener); }; FriendsHelper.convertFriend = friend => ({ type: 'PERSON', id: friend.personId, name: friend.fullName || [friend.firstName, friend.lastName].join(' ').trim(), userId: friend.userId, fullName: friend.fullName || [friend.firstName, friend.lastName].join(' ').trim(), firstName: friend.firstName, lastName: friend.lastName, personId: friend.personId, imageUrl: `https://sub60.tobit.com/u/${friend.personId}?size=100`, isFriend: true, verificationState: !!friend.verificationState }); export default FriendsHelper; //# sourceMappingURL=FriendsHelper.js.map