diff --git a/packages/builder/src/components/backend/modals/DeleteDataConfirmationModal.svelte b/packages/builder/src/components/backend/modals/DeleteDataConfirmationModal.svelte index 7c572a5af3..7590db2dee 100644 --- a/packages/builder/src/components/backend/modals/DeleteDataConfirmationModal.svelte +++ b/packages/builder/src/components/backend/modals/DeleteDataConfirmationModal.svelte @@ -156,27 +156,17 @@
-

- Are you sure you wish to delete the {sourceType} - - - - {source?.name} - ? - -

- -

+

All {sourceType} data will be deleted{viewsMessage}.

-

This action cannot be undone.

+

This action cannot be undone.

{#if affectedScreens.length > 0}
@@ -210,17 +200,6 @@ max-width: 320px; } - .firstWarning { - margin: 0 0 12px; - max-width: 100%; - } - - .sourceNameLine { - display: inline-flex; - max-width: 100%; - vertical-align: bottom; - } - .sourceName { flex-grow: 1; white-space: nowrap; @@ -229,12 +208,12 @@ cursor: pointer; } - .secondWarning { + .dataWarning { margin: 0; max-width: 100%; } - .thirdWarning { + .undoneWarning { margin: 0 0 12px; max-width: 100%; } diff --git a/packages/server/src/api/controllers/screen.ts b/packages/server/src/api/controllers/screen.ts index 1bf800691c..a70eb023c1 100644 --- a/packages/server/src/api/controllers/screen.ts +++ b/packages/server/src/api/controllers/screen.ts @@ -1,27 +1,29 @@ -import { generateScreenID, DocumentType } from "../../db/utils" +import { DocumentType, generateScreenID } from "../../db/utils" import { - events, context, - tenancy, db as dbCore, + events, roles, + tenancy, } from "@budibase/backend-core" import { updateAppPackage } from "./application" import { - Plugin, - ScreenProps, - Screen, - UserCtx, + DeleteScreenResponse, FetchScreenResponse, + Plugin, SaveScreenRequest, SaveScreenResponse, - DeleteScreenResponse, - UsageOfScreensResponse, + Screen, + ScreenProps, ScreenUsage, + SourceType, + UsageOfScreensResponse, + UserCtx, } from "@budibase/types" import { builderSocket } from "../../websockets" import sdk from "../../sdk" import { sdk as sharedSdk } from "@budibase/shared-core" +import { isInternal } from "../../sdk/app/tables/utils" export async function fetch(ctx: UserCtx) { const screens = await sdk.screens.fetch() @@ -151,8 +153,14 @@ export async function usage(ctx: UserCtx) { }) } } + const isInternalTable = + sourceType === SourceType.TABLE && + sdk.tables.isInternal({ tableId: sourceId }) + const isInternalView = + sourceType === SourceType.VIEW && sdk.views.isInternal(sourceId) ctx.body = { sourceType, + internal: isInternalTable || isInternalView, screens: response, } } diff --git a/packages/server/src/sdk/app/tables/utils.ts b/packages/server/src/sdk/app/tables/utils.ts index 96499db00a..96372648c5 100644 --- a/packages/server/src/sdk/app/tables/utils.ts +++ b/packages/server/src/sdk/app/tables/utils.ts @@ -11,6 +11,10 @@ export function isExternal(opts: { table?: Table; tableId?: string }): boolean { return false } +export function isInternal(opts: { table?: Table; tableId?: string }): boolean { + return !isExternal(opts) +} + export function isTable(table: any): table is Table { return table._id && docIds.isTableId(table._id) } diff --git a/packages/server/src/sdk/app/views/index.ts b/packages/server/src/sdk/app/views/index.ts index 157e741acd..b3edc92e17 100644 --- a/packages/server/src/sdk/app/views/index.ts +++ b/packages/server/src/sdk/app/views/index.ts @@ -81,6 +81,14 @@ export function isView(view: any): view is ViewV2 { return view.id && docIds.isViewId(view.id) && view.version === 2 } +export function isInternal(viewId: string) { + if (!docIds.isViewId(viewId)) { + return false + } + const { tableId } = utils.extractViewInfoFromID(viewId) + return !isExternalTableID(tableId) +} + function guardDuplicateCalculationFields(view: Omit) { const seen: Record> = {} const calculationFields = helpers.views.calculationFields(view) diff --git a/packages/types/src/api/web/app/screen.ts b/packages/types/src/api/web/app/screen.ts index 0550c5206a..9fc201d651 100644 --- a/packages/types/src/api/web/app/screen.ts +++ b/packages/types/src/api/web/app/screen.ts @@ -23,5 +23,6 @@ export interface ScreenUsage { export interface UsageOfScreensResponse { sourceType: SourceType + internal: boolean screens: ScreenUsage[] }