Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

functions.web.ts 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { IReduxState } from '../app/types';
  2. import { isVpaasMeeting } from '../jaas/functions';
  3. import logger from './logger';
  4. /**
  5. * Sends feedback metadata to JaaS endpoints.
  6. *
  7. * @param {string|undefined} url - The JaaS metadata endpoint URL.
  8. * @param {Object} feedbackData - The feedback data object.
  9. * @returns {Promise}
  10. */
  11. export async function sendFeedbackToJaaSRequest(url: string | undefined, feedbackData: {
  12. jwt?: string; meetingFqn: string; message?: string; score?: number;
  13. sessionId: string; tenant?: string; userId?: string;
  14. }) {
  15. if (!url) {
  16. throw new TypeError('Trying to send jaas feedback request to an undefined URL!');
  17. }
  18. const {
  19. jwt,
  20. sessionId,
  21. meetingFqn,
  22. score,
  23. message,
  24. userId,
  25. tenant
  26. } = feedbackData;
  27. const headers = {
  28. 'Authorization': `Bearer ${jwt}`,
  29. 'Content-Type': 'application/json'
  30. };
  31. const data = {
  32. sessionId,
  33. meetingFqn,
  34. userId,
  35. tenant,
  36. submitted: new Date().getTime(),
  37. rating: score,
  38. comments: message
  39. };
  40. try {
  41. const res = await fetch(url, {
  42. method: 'POST',
  43. headers,
  44. body: JSON.stringify(data)
  45. });
  46. if (!res.ok) {
  47. logger.error('Status error:', res.status);
  48. }
  49. } catch (err) {
  50. logger.error('Could not send request', err);
  51. }
  52. }
  53. /**
  54. * Returns whether jaas feedback metadata should be send or not.
  55. *
  56. * @param {IReduxState} state - The redux state.
  57. * @returns {boolean} - True if jaas feedback metadata should be send and false otherwise.
  58. */
  59. export function shouldSendJaaSFeedbackMetadata(state: IReduxState) {
  60. const { jaasFeedbackMetadataURL } = state['features/base/config'];
  61. return Boolean(isVpaasMeeting(state) && jaasFeedbackMetadataURL);
  62. }