chayns-components
Version:
A set of beautiful React components for developing chayns® applications.
100 lines (98 loc) • 5.11 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _classPrivateFieldLooseBase2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase"));
var _classPrivateFieldLooseKey2 = _interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey"));
var _EventEmitter = _interopRequireDefault(require("../../../../utils/events/EventEmitter"));
var _isServer = require("../../../../utils/isServer");
var _PersonsApi = require("./PersonsApi");
var _friends = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("friends");
var _friendsObject = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("friendsObject");
var _eventEmitter = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("eventEmitter");
var _initialized = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("initialized");
var _loading = /*#__PURE__*/(0, _classPrivateFieldLooseKey2.default)("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.default()
});
Object.defineProperty(FriendsHelper, _initialized, {
writable: true,
value: false
});
Object.defineProperty(FriendsHelper, _loading, {
writable: true,
value: false
});
FriendsHelper.init = async () => {
if (!(0, _isServer.isServer)() && !(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _initialized)[_initialized] && !(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _loading)[_loading]) {
try {
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _loading)[_loading] = true;
await window.chayns.ready;
if (window.chayns.env.user && window.chayns.env.user.isAuthenticated) {
const raw = await (0, _PersonsApi.fetchFriends)().catch(() => []);
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friends)[_friends] = raw.map(FriendsHelper.convertFriend);
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friends)[_friends].forEach(e => {
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friendsObject)[_friendsObject][e.personId] = e;
});
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _eventEmitter)[_eventEmitter].emit('update', (0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friends)[_friends]);
}
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _initialized)[_initialized] = true;
} finally {
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _loading)[_loading] = false;
}
}
};
FriendsHelper.isFriend = personId => !!((0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friendsObject)[_friendsObject][personId] || false);
FriendsHelper.getFriendsList = () => (0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friends)[_friends];
FriendsHelper.setFriend = async function (personId, userId, fullName, friendship) {
if (friendship === void 0) {
friendship = true;
}
const success = await (0, _PersonsApi.setFriend)(personId, friendship);
if (!success) return;
if (friendship) {
const friend = FriendsHelper.convertFriend({
personId,
userId,
fullName
});
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friends)[_friends].push(friend);
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friendsObject)[_friendsObject][personId] = friend;
} else {
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friends)[_friends].splice((0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friends)[_friends].findIndex(person => person.personId === personId), 1);
delete (0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friendsObject)[_friendsObject][personId];
}
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _eventEmitter)[_eventEmitter].emit('update', (0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _friends)[_friends]);
};
FriendsHelper.addUpdateListener = listener => {
(0, _classPrivateFieldLooseBase2.default)(FriendsHelper, _eventEmitter)[_eventEmitter].on('update', listener);
};
FriendsHelper.removeUpdateListener = listener => {
(0, _classPrivateFieldLooseBase2.default)(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
});
var _default = FriendsHelper;
exports.default = _default;
//# sourceMappingURL=FriendsHelper.js.map