Open continue

This commit is contained in:
Adria Navarro 2023-05-31 11:24:06 +02:00
parent 3a6a3eb8a5
commit d4ba73f331
3 changed files with 51 additions and 23 deletions

View File

@ -88,7 +88,7 @@ export async function postAuth(
}
)
ctx.redirect(`${baseUrl}/new?type=google&action=continue&id=${id}`)
ctx.redirect(`${baseUrl}/new?action=google_continue&id=${id}`)
}
)(ctx, next)
}

View File

@ -1,43 +1,55 @@
<script>
import { ModalContent, Body, Layout, Link } from "@budibase/bbui"
import { IntegrationNames } from "constants/backend"
import cloneDeep from "lodash/cloneDeepWith"
import { IntegrationNames, IntegrationTypes } from "constants/backend"
import GoogleButton from "../_components/GoogleButton.svelte"
import { organisation } from "stores/portal"
import { onMount } from "svelte"
export let integration
export let continueSetup = false
// kill the reference so the input isn't saved
let datasource = cloneDeep(integration)
$: isGoogleConfigured = !!$organisation.googleDatasourceConfigured
onMount(async () => {
await organisation.init()
})
const integrationName = IntegrationNames[IntegrationTypes.GOOGLE_SHEETS]
export const GoogleDatasouceConfigStep = {
AUTH: "Auth",
SET_URL: "Set_url",
}
let step = continueSetup
? GoogleDatasouceConfigStep.SET_URL
: GoogleDatasouceConfigStep.AUTH
</script>
<ModalContent
title={`Connect to ${IntegrationNames[datasource.type]}`}
title={`Connect to ${integrationName}`}
cancelText="Back"
size="L"
showConfirmButton={false}
>
<!-- check true and false directly, don't render until flag is set -->
{#if isGoogleConfigured === true}
<Layout noPadding>
{#if step === GoogleDatasouceConfigStep.AUTH}
<!-- check true and false directly, don't render until flag is set -->
{#if isGoogleConfigured === true}
<Layout noPadding>
<Body size="S"
>Authenticate with your google account to use the {integrationName} integration.</Body
>
</Layout>
<GoogleButton samePage />
{:else if isGoogleConfigured === false}
<Body size="S"
>Authenticate with your google account to use the {IntegrationNames[
datasource.type
]} integration.</Body
>Google authentication is not enabled, please complete Google SSO
configuration.</Body
>
<Link href="/builder/portal/settings/auth">Configure Google SSO</Link>
{/if}
{/if}
{#if step === GoogleDatasouceConfigStep.SET_URL}
<Layout noPadding>
<Body size="S">Add the URL of the sheet you want to connect</Body>
</Layout>
<GoogleButton samePage />
{:else if isGoogleConfigured === false}
<Body size="S"
>Google authentication is not enabled, please complete Google SSO
configuration.</Body
>
<Link href="/builder/portal/settings/auth">Configure Google SSO</Link>
{/if}
</ModalContent>

View File

@ -17,6 +17,7 @@
import IntegrationIcon from "components/backend/DatasourceNavigator/IntegrationIcon.svelte"
import ICONS from "components/backend/DatasourceNavigator/icons/index.js"
import FontAwesomeIcon from "components/common/FontAwesomeIcon.svelte"
import { onMount } from "svelte"
let internalTableModal
let externalDatasourceModal
@ -24,6 +25,7 @@
let integration = null
let disabled = false
let promptUpload = false
let continueGoogleSetup
$: hasData = $datasources.list.length > 1 || $tables.list.length > 1
$: hasDefaultData =
@ -135,15 +137,29 @@
}
$: fetchIntegrations()
onMount(() => {
const urlParams = new URLSearchParams(window.location.search)
const action = urlParams.get("action")
if (action === "google_continue") {
continueGoogleSetup = true
externalDatasourceModal.show()
}
})
</script>
<Modal bind:this={internalTableModal}>
<CreateTableModal {promptUpload} afterSave={handleInternalTableSave} />
</Modal>
<Modal bind:this={externalDatasourceModal}>
{#if integration?.auth?.type === "google"}
<GoogleDatasourceConfigModal {integration} />
<Modal
bind:this={externalDatasourceModal}
on:hide={() => {
continueGoogleSetup = false
}}
>
{#if integration?.auth?.type === "google" || continueGoogleSetup}
<GoogleDatasourceConfigModal continueSetup={continueGoogleSetup} />
{:else}
<DatasourceConfigModal {integration} />
{/if}