Mirror of https://github.com/roostorg/osprey github.com/roostorg/osprey
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 83 lines 2.3 kB view raw
1import invariant from 'invariant'; 2import { sum } from 'lodash'; 3 4import useEntityStore from '../stores/EntityStore'; 5import { KeyedLabels, Label, LabelMutation, LabelMutationResult } from '../types/LabelTypes'; 6import { BaseQueryRequest, EventCountsByFeatureForEntityQuery } from '../types/QueryTypes'; 7import HTTPUtils, { HTTPResponse } from '../utils/HTTPUtils'; 8import { getBaseRequest } from './EventActions'; 9 10function transformLabels(labels: KeyedLabels): Label[] { 11 return Object.keys(labels).map((labelName) => ({ ...labels[labelName], name: labelName })); 12} 13 14export async function getLabelsForEntity(entityId: string, entityType: string): Promise<Label[]> { 15 const response: HTTPResponse = await HTTPUtils.get(`entities/labels`, { 16 params: { 17 entity_id: entityId, 18 entity_type: entityType, 19 }, 20 }); 21 22 if (response.ok && response.data != null) { 23 return transformLabels(response.data.labels); 24 } 25 26 return []; 27} 28 29export async function getEventCountsByFeatureForEntityQuery( 30 query: BaseQueryRequest, 31 aggregationDimensions: string[] 32): Promise<EventCountsByFeatureForEntityQuery> { 33 const { entity, ...requestData } = getBaseRequest(query); 34 invariant(entity != null, 'Event counts can only be fetched for entities'); 35 36 const response: HTTPResponse = await HTTPUtils.post( 37 `entities/event-count-by-feature`, 38 { 39 ...requestData, 40 granularity: 'all', 41 aggregation_dimensions: aggregationDimensions /* eslint-disable-line */, 42 entity, 43 }, 44 { 45 params: { 46 entity_id: entity.id, 47 entity_type: entity.type, 48 }, 49 } 50 ); 51 52 if (!response.ok) { 53 return {}; 54 } 55 56 useEntityStore.setState({ eventCountByFeature: response.data, totalEventCount: sum(Object.values(response.data)) }); 57 return response.data; 58} 59 60export async function updateLabelsForEntity( 61 entityId: string, 62 entityType: string, 63 labels: LabelMutation[] 64): Promise<LabelMutationResult> { 65 const response: HTTPResponse = await HTTPUtils.post( 66 `entities/labels`, 67 { 68 mutations: labels, 69 }, 70 { 71 params: { 72 entity_id: entityId, 73 entity_type: entityType, 74 }, 75 } 76 ); 77 78 if (!response.ok) { 79 throw new Error('Label update request failed'); 80 } 81 82 return { ...response.data, labels: transformLabels(response.data.labels) }; 83}