chayns-components
Version:
A set of beautiful React components for developing chayns® applications.
94 lines (93 loc) • 4.43 kB
JavaScript
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