Frontend usage of API.

This commit is contained in:
mike12345567 2025-02-03 14:14:08 +00:00
parent be301df399
commit b214019dbe
5 changed files with 21 additions and 10 deletions

View File

@ -2,12 +2,14 @@ import {
DeleteScreenResponse, DeleteScreenResponse,
SaveScreenRequest, SaveScreenRequest,
SaveScreenResponse, SaveScreenResponse,
UsageOfScreensResponse,
} from "@budibase/types" } from "@budibase/types"
import { BaseAPIClient } from "./types" import { BaseAPIClient } from "./types"
export interface ScreenEndpoints { export interface ScreenEndpoints {
saveScreen: (screen: SaveScreenRequest) => Promise<SaveScreenResponse> saveScreen: (screen: SaveScreenRequest) => Promise<SaveScreenResponse>
deleteScreen: (id: string, rev: string) => Promise<DeleteScreenResponse> deleteScreen: (id: string, rev: string) => Promise<DeleteScreenResponse>
usageOfScreens: (sourceId: string) => Promise<UsageOfScreensResponse>
} }
export const buildScreenEndpoints = (API: BaseAPIClient): ScreenEndpoints => ({ export const buildScreenEndpoints = (API: BaseAPIClient): ScreenEndpoints => ({
@ -32,4 +34,10 @@ export const buildScreenEndpoints = (API: BaseAPIClient): ScreenEndpoints => ({
url: `/api/screens/${id}/${rev}`, url: `/api/screens/${id}/${rev}`,
}) })
}, },
usageOfScreens: async sourceId => {
return await API.post({
url: `/api/screens/usage/${sourceId}`,
})
},
}) })

View File

@ -16,7 +16,7 @@ import {
SaveScreenRequest, SaveScreenRequest,
SaveScreenResponse, SaveScreenResponse,
DeleteScreenResponse, DeleteScreenResponse,
UsageScreenResponse, UsageOfScreensResponse,
ScreenUsage, ScreenUsage,
} from "@budibase/types" } from "@budibase/types"
import { builderSocket } from "../../websockets" import { builderSocket } from "../../websockets"
@ -137,7 +137,7 @@ function findPlugins(component: ScreenProps, foundPlugins: string[]) {
component._children.forEach(child => findPlugins(child, foundPlugins)) component._children.forEach(child => findPlugins(child, foundPlugins))
} }
export async function usage(ctx: UserCtx<void, UsageScreenResponse>) { export async function usage(ctx: UserCtx<void, UsageOfScreensResponse>) {
const sourceId = ctx.params.sourceId const sourceId = ctx.params.sourceId
const sourceType = sdk.common.getSourceType(sourceId) const sourceType = sdk.common.getSourceType(sourceId)
const allScreens = await sdk.screens.fetch() const allScreens = await sdk.screens.fetch()

View File

@ -6,7 +6,7 @@ import {
Role, Role,
BuiltinPermissionID, BuiltinPermissionID,
SourceType, SourceType,
UsageScreenResponse, UsageOfScreensResponse,
} from "@budibase/types" } from "@budibase/types"
const { const {
@ -210,7 +210,7 @@ describe("/screens", () => {
}) })
}) })
function confirmScreen(usage: UsageScreenResponse, screen: Screen) { function confirmScreen(usage: UsageOfScreensResponse, screen: Screen) {
expect(usage.screens.length).toEqual(1) expect(usage.screens.length).toEqual(1)
expect(usage.screens[0].url).toEqual(screen.routing.route) expect(usage.screens[0].url).toEqual(screen.routing.route)
expect(usage.screens[0]._id).toEqual(screen._id!) expect(usage.screens[0]._id).toEqual(screen._id!)

View File

@ -1,4 +1,4 @@
import { Screen, UsageScreenResponse } from "@budibase/types" import { Screen, UsageOfScreensResponse } from "@budibase/types"
import { Expectations, TestAPI } from "./base" import { Expectations, TestAPI } from "./base"
export class ScreenAPI extends TestAPI { export class ScreenAPI extends TestAPI {
@ -32,9 +32,12 @@ export class ScreenAPI extends TestAPI {
usage = async ( usage = async (
sourceId: string, sourceId: string,
expectations?: Expectations expectations?: Expectations
): Promise<UsageScreenResponse> => { ): Promise<UsageOfScreensResponse> => {
return this._post<UsageScreenResponse>(`/api/screens/usage/${sourceId}`, { return this._post<UsageOfScreensResponse>(
expectations, `/api/screens/usage/${sourceId}`,
}) {
expectations,
}
)
} }
} }

View File

@ -21,7 +21,7 @@ export interface ScreenUsage {
_id: string _id: string
} }
export interface UsageScreenResponse { export interface UsageOfScreensResponse {
sourceType: SourceType sourceType: SourceType
screens: ScreenUsage[] screens: ScreenUsage[]
} }