fleet/frontend/services/entities/activities.ts
Gabriel Hernandez 62954b1c83
Add UI for self service activities (#19305)
relates to #18847

This adds the global and host activities for self service activities.

This also updates the Upcoming host activities to follow the same
pattern as the Host Past activities.


- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Added/updated tests
- [x] Manual QA for all new/changed functionality
2024-05-29 11:50:39 +01:00

98 lines
2.2 KiB
TypeScript

import endpoints from "utilities/endpoints";
import {
IActivity,
IHostPastActivity,
IHostUpcomingActivity,
} from "interfaces/activity";
import sendRequest from "services";
import { buildQueryStringFromParams } from "utilities/url";
const DEFAULT_PAGE = 0;
const DEFAULT_PAGE_SIZE = 8;
const ORDER_KEY = "created_at";
const ORDER_DIRECTION = "desc";
export interface IActivitiesResponse {
activities: IActivity[] | null;
meta: {
has_next_results: boolean;
has_previous_results: boolean;
};
}
export interface IHostPastActivitiesResponse {
activities: IHostPastActivity[] | null;
meta: {
has_next_results: boolean;
has_previous_results: boolean;
};
}
export interface IHostUpcomingActivitiesResponse {
count: number;
activities: IHostUpcomingActivity[] | null;
meta: {
has_next_results: boolean;
has_previous_results: boolean;
};
}
export default {
loadNext: (
page = DEFAULT_PAGE,
perPage = DEFAULT_PAGE_SIZE
): Promise<IActivitiesResponse> => {
const { ACTIVITIES } = endpoints;
const queryParams = {
page,
per_page: perPage,
order_key: ORDER_KEY,
order_direction: ORDER_DIRECTION,
};
const queryString = buildQueryStringFromParams(queryParams);
const path = `${ACTIVITIES}?${queryString}`;
return sendRequest("GET", path);
},
getHostPastActivities: (
id: number,
page = DEFAULT_PAGE,
perPage = DEFAULT_PAGE_SIZE
): Promise<IHostPastActivitiesResponse> => {
const { HOST_PAST_ACTIVITIES } = endpoints;
const queryParams = {
page,
per_page: perPage,
};
const queryString = buildQueryStringFromParams(queryParams);
const path = `${HOST_PAST_ACTIVITIES(id)}?${queryString}`;
return sendRequest("GET", path);
},
getHostUpcomingActivities: (
id: number,
page = DEFAULT_PAGE,
perPage = DEFAULT_PAGE_SIZE
): Promise<IHostUpcomingActivitiesResponse> => {
const { HOST_UPCOMING_ACTIVITIES } = endpoints;
const queryParams = {
page,
per_page: perPage,
};
const queryString = buildQueryStringFromParams(queryParams);
const path = `${HOST_UPCOMING_ACTIVITIES(id)}?${queryString}`;
return sendRequest("GET", path);
},
};