UNPKG

chayns-components

Version:

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

127 lines (124 loc) 4.14 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.setFriend = exports.fetchUacPersons = exports.fetchSites = exports.fetchPersons = exports.fetchKnownPersons = exports.fetchFriends = void 0; require("abortcontroller-polyfill/dist/polyfill-patch-fetch"); var _uacServiceClient = _interopRequireDefault(require("../../../../utils/uacServiceClient")); /* eslint-disable no-console */ const RELATIONS_SERVER_URL = 'https://relations.chayns.net/relations/'; const SITE_SERVER_URL = 'https://relations.chayns.net/relations/location/'; const FRIENDS_SERVER_URL = 'https://webapi.tobit.com/AccountService/v1.0/chayns/friends'; const requestTracker = {}; const fetchHelper = (key, requestData) => { if (requestTracker[key] instanceof AbortController) { requestTracker[key].abort(); } const controller = new AbortController(); const { signal } = controller; requestTracker[key] = controller; return fetch(requestData.url, { ...requestData.config, signal }); }; const fetchFriends = async () => { let result = []; const response = await fetch(FRIENDS_SERVER_URL, { method: 'GET', headers: { Authorization: `bearer ${chayns.env.user.tobitAccessToken}`, Accept: 'application/json' } }); if (response.ok) { result = response.status !== 204 ? await response.json() : []; } else { console.error('[chayns components] Personfinder: failed to fetch friends', response.status); } return result; }; exports.fetchFriends = fetchFriends; const setFriend = async function (personId, friendship) { if (friendship === void 0) { friendship = true; } const response = await fetch(`${FRIENDS_SERVER_URL}?friend=${personId}`, { method: friendship ? 'POST' : 'DELETE', headers: { Authorization: `Bearer ${chayns.env.user.tobitAccessToken}` } }); return response.status === 200; }; exports.setFriend = setFriend; const fetchPersons = async (value, skip, take) => { if (!chayns.env.user.isAuthenticated) { chayns.login(); return Promise.reject(new Error('Not authenticated')); } let result = []; let url = `${RELATIONS_SERVER_URL}v2/person`; if (value.match(/^[A-NP-Z0-9]{3}-[A-NP-Z0-9]{5}$/)) { url += `?personId=${value}`; } else { url += `?skip=${skip}&take=${take}&query=${value}`; } const response = await fetchHelper('persons', { url, config: { method: 'GET', headers: { Accept: 'application/json', Authorization: `bearer ${chayns.env.user.tobitAccessToken}` } } }); if (response.ok) { result = response.status !== 204 ? (await response.json()).list : []; } else { console.error('[chayns components] Personfinder: failed to fetch persons', response.status); } return result; }; exports.fetchPersons = fetchPersons; const fetchUacPersons = uacId => async (value, skip, take) => { if (!chayns.env.user.isAuthenticated) { chayns.login(); return Promise.reject(new Error('Not authenticated')); } return _uacServiceClient.default.searchMembers({ userGroupIds: [uacId], searchTerm: value, skip, take }).catch(error => { console.error('[chayns components] Personfinder: uacServiceClient.searchMembers failed', error); return []; }); }; exports.fetchUacPersons = fetchUacPersons; const fetchSites = async (value, skip, take) => { let result = []; const response = await fetchHelper('sites', { url: `${SITE_SERVER_URL}?query=${value}&skip=${skip}&take=${take}`, config: { method: 'GET', headers: { Accept: 'application/json', Authorization: `bearer ${chayns.env.user.tobitAccessToken}` } } }); if (response.ok) { result = response.status !== 204 ? (await response.json()).list : []; } else { console.error('[chayns components] Personfinder: failed to fetch sites', response.status); } return result; }; exports.fetchSites = fetchSites; const fetchKnownPersons = fetchUacPersons(-1); exports.fetchKnownPersons = fetchKnownPersons; //# sourceMappingURL=PersonsApi.js.map