Compare commits

..

35 Commits

Author SHA1 Message Date
Hassan Ben Jobrane
172fd8dfed Merge pull request #2448 from nhost/changeset-release/main
chore: update versions
2024-01-05 15:30:30 +01:00
github-actions[bot]
a99ca90279 chore: update versions 2024-01-05 14:19:10 +00:00
Hassan Ben Jobrane
5892fd7f01 Merge pull request #2451 from nhost/fix/graphite/version-setting
fix: remove hardcoded ai settings version
2024-01-05 15:17:07 +01:00
Hassan Ben Jobrane
0344cc9a6d fix: update filterOptions logic in service version selector 2024-01-05 13:56:53 +01:00
Hassan Ben Jobrane
2697e28cf2 Merge pull request #2452 from nhost/fix/default-allowed-roles
chore: change `Allowed Roles` to `Default Allowed Roles`
2024-01-04 17:10:27 +01:00
Hassan Ben Jobrane
54231b119f fix: remove filtering in software version selector 2024-01-04 16:58:19 +01:00
Hassan Ben Jobrane
7c977e7143 chore: add changeset 2024-01-04 11:52:51 +01:00
Hassan Ben Jobrane
7c3019389e chore: change Allowed Roles to Default Allowed Roles 2024-01-04 11:50:14 +01:00
Hassan Ben Jobrane
46f028b9fd chore: add changeset 2024-01-04 11:00:59 +01:00
Hassan Ben Jobrane
683e85b89f fix: remove hardcoded ai settings version 2024-01-04 10:59:00 +01:00
Hassan Ben Jobrane
b0f27c908d Merge pull request #2444 from nhost/chore/fix-graphql-codegen
chore(dashboard): use env variables for graphql codegen
2024-01-03 21:47:28 +01:00
Hassan Ben Jobrane
5f2618e183 chore: run pnpm codegen 2024-01-03 16:59:28 +01:00
Hassan Ben Jobrane
29037147f2 Merge pull request #2447 from nhost/fix/vue-sdk/constructor-params
fix(vue-sdk): include `ServiceUrls` in `NhostVueClientConstructorParams`
2024-01-03 16:09:57 +01:00
Hassan Ben Jobrane
95b630a621 chore: fix pnpm-lock.yaml 2024-01-03 15:54:31 +01:00
Hassan Ben Jobrane
0fdfd8ad81 chore: run pnpm codegen 2024-01-03 15:54:31 +01:00
Hassan Ben Jobrane
174b4165b3 chore: add changeset 2024-01-03 15:54:31 +01:00
Hassan Ben Jobrane
04257bc09c chore: use env variables when running graphql codegen 2024-01-03 15:54:31 +01:00
Hassan Ben Jobrane
184c341f05 chore: add changeset 2024-01-03 15:53:20 +01:00
Hassan Ben Jobrane
52fdce291f fix(vue-sdk): include ServiceUrls in NhostVueClientConstructorParams interface 2024-01-03 15:51:29 +01:00
Hassan Ben Jobrane
c43ff40e1f Merge pull request #2445 from nhost/changeset-release/main
chore: update versions
2024-01-03 14:20:46 +01:00
github-actions[bot]
4ec2f8f186 chore: update versions 2024-01-03 13:19:13 +00:00
Hassan Ben Jobrane
7ece80a39e Merge pull request #2442 from nhost/chore/remove-update-providers-notice
chore: remove backendUrl deprecation notice and update providers alert
2024-01-03 14:17:09 +01:00
Hassan Ben Jobrane
1327351e1b fix: increase ci e2e timeout 2024-01-03 12:48:41 +01:00
Hassan Ben Jobrane
1fbdf630a5 chore: run pnpm codegen 2024-01-03 11:58:54 +01:00
Hassan Ben Jobrane
cef11677f4 Merge pull request #2437 from nhost/fix/sveltekit-quickstart
fix(quickstarts): fix auth issue and too many redirects error
2024-01-02 21:40:08 +01:00
Hassan Ben Jobrane
af33c21d10 chore: add changeset 2024-01-02 15:19:46 +01:00
Hassan Ben Jobrane
1b01d56e82 chore: remove all references to providersUpdated 2024-01-02 15:17:57 +01:00
Hassan Ben Jobrane
229acb1d60 chore: remove backendUrl deprication notice and update providers alert 2024-01-02 14:56:58 +01:00
Hassan Ben Jobrane
b4dccd4496 chore: add changeset 2024-01-01 11:23:39 +01:00
Hassan Ben Jobrane
31683fa926 fix(quickstarts): fix auth issue and too many redirects error 2024-01-01 11:17:33 +01:00
Hassan Ben Jobrane
e9d5d0a53e Merge pull request #2429 from nhost/changeset-release/main
chore: update versions
2023-12-22 22:53:18 +01:00
github-actions[bot]
4e0b132d20 chore: update versions 2023-12-22 21:35:18 +00:00
Hassan Ben Jobrane
425476759f Merge pull request #2428 from nhost/fix/dashboard-graphite-version
bug: dashboard: fix graphite default version
2023-12-22 22:33:11 +01:00
Nuno Pato
04784d880b asd 2023-12-22 20:08:09 -01:00
Nuno Pato
130131c488 fix graphite default version 2023-12-22 20:05:24 -01:00
44 changed files with 224 additions and 343 deletions

View File

@@ -146,7 +146,7 @@ jobs:
run: echo "NHOST_TEST_DASHBOARD_URL=https://${{ steps.fetch-dashboard-preview-url.outputs.preview_url }}" >> $GITHUB_ENV
# * Run the `ci` script of the current package of the matrix. Dependencies build is cached by Turborepo
- name: Run e2e tests
timeout-minutes: 15
timeout-minutes: 20
run: pnpm --filter="${{ matrix.package.name }}" run e2e
- id: file-name
if: ${{ failure() }}

View File

@@ -16,3 +16,6 @@ NEXT_PUBLIC_STRIPE_PK=<nhost_stripe_public_key>
NEXT_PUBLIC_GITHUB_APP_INSTALL_URL=<github_app_install_url>
NEXT_PUBLIC_ANALYTICS_WRITE_KEY=<analytics_write_key>
NEXT_PUBLIC_NHOST_BRAGI_WEBSOCKET=<nhost_bragi_websocket>
CODEGEN_GRAPHQL_URL=https://local.graphql.nhost.run/v1
CODEGEN_HASURA_ADMIN_SECRET=nhost-admin-secret

View File

@@ -1,5 +1,25 @@
# @nhost/dashboard
## 1.3.2
### Patch Changes
- 174b4165b: chore: use env variables when running graphql codegen
- 7c977e714: chore: change `Allowed Roles` to `Default Allowed Roles`
- 46f028b9f: fix: remove hardcoded ai version setting
## 1.3.1
### Patch Changes
- af33c21d1: chore: remove backendUrl deprecation notice and remove all references to `providersUpdated`
## 1.3.0
### Minor Changes
- 04784d880: Fix graphite's default version
## 1.2.0
### Minor Changes

View File

@@ -1,7 +1,7 @@
schema:
- https://local.graphql.nhost.run/v1:
- ${CODEGEN_GRAPHQL_URL}:
headers:
x-hasura-admin-secret: nhost-admin-secret
x-hasura-admin-secret: ${CODEGEN_HASURA_ADMIN_SECRET}
generates:
src/utils/__generated__/graphql.ts:
documents:

View File

@@ -1,6 +1,6 @@
{
"name": "@nhost/dashboard",
"version": "1.2.0",
"version": "1.3.2",
"private": true,
"scripts": {
"preinstall": "npx only-allow pnpm",
@@ -10,7 +10,7 @@
"start": "next start",
"lint": "next lint --max-warnings 0",
"test": "vitest",
"codegen": "graphql-codegen --config graphql.config.yaml --errors-only",
"codegen": "DOTENV_CONFIG_PATH=./.env.local graphql-codegen -r dotenv/config --config graphql.config.yaml --errors-only",
"codegen-graphite": "graphql-codegen --config graphite.graphql.config.yaml --errors-only",
"format": "prettier --write \"src/**/*.{js,ts,tsx,jsx,json,md}\" --plugin-search-dir=.",
"storybook": "start-storybook -p 6006 -s public",

View File

@@ -1,28 +0,0 @@
import { Alert } from '@/components/ui/v2/Alert';
import { Text } from '@/components/ui/v2/Text';
import { useCurrentWorkspaceAndProject } from '@/features/projects/common/hooks/useCurrentWorkspaceAndProject';
export default function DepricationNotice() {
const { currentProject } = useCurrentWorkspaceAndProject();
return (
!currentProject?.providersUpdated && (
<Alert severity="warning" className="grid place-content-center">
<Text color="warning" className="max-w-3xl text-sm">
On December 1st the old backend domain will cease to work. You need to
make sure your client is instantiated using the subdomain and region
and update your oauth2 settings. You can find more information{' '}
<a
target="_blank"
rel="noopener noreferrer"
className="underline"
href="https://github.com/nhost/nhost/discussions/2303"
>
here
</a>
.
</Text>
</Alert>
)
);
}

View File

@@ -1 +0,0 @@
export { default as ContactUs } from './DepricationNotice';

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import type { ProjectLayoutProps } from '@/components/layout/ProjectLayout';
import { ProjectLayout } from '@/components/layout/ProjectLayout';
import type { SettingsSidebarProps } from '@/components/layout/SettingsSidebar';
@@ -50,7 +49,6 @@ export default function SettingsLayout({
>
<RetryableErrorBoundary>
<div className="flex flex-col space-y-2">
<DepricationNotice />
{hasGitRepo && (
<Alert
severity="warning"

View File

@@ -1,100 +0,0 @@
import { useDialog } from '@/components/common/DialogProvider';
import { Alert } from '@/components/ui/v2/Alert';
import { Button } from '@/components/ui/v2/Button';
import { ArrowSquareOutIcon } from '@/components/ui/v2/icons/ArrowSquareOutIcon';
import { Link } from '@/components/ui/v2/Link';
import { Text } from '@/components/ui/v2/Text';
import { useCurrentWorkspaceAndProject } from '@/features/projects/common/hooks/useCurrentWorkspaceAndProject';
import { getToastStyleProps } from '@/utils/constants/settings';
import { useConfirmProvidersUpdatedMutation } from '@/utils/__generated__/graphql';
import { useTheme } from '@mui/material';
import { useState } from 'react';
import toast from 'react-hot-toast';
export default function ProvidersUpdatedAlert() {
const theme = useTheme();
const { openAlertDialog } = useDialog();
const [confirmed, setConfirmed] = useState(true);
const { currentProject } = useCurrentWorkspaceAndProject();
const [confirmProvidersUpdated] = useConfirmProvidersUpdatedMutation({
variables: { id: currentProject?.id },
});
async function handleSubmitConfirmation() {
const confirmProvidersUpdatedPromise = confirmProvidersUpdated();
await toast.promise(
confirmProvidersUpdatedPromise,
{
loading: 'Confirming...',
success: 'Your settings have been updated successfully.',
error: 'An error occurred while trying to confirm the message.',
},
getToastStyleProps(),
);
setConfirmed(false);
}
function handleOpenConfirmationDialog() {
openAlertDialog({
title: 'Confirm all providers updated?',
payload: (
<Text variant="subtitle1" component="span">
Please make sure to update all providers before continuing. Your
sign-in flows might break if you don&apos;t.
</Text>
),
props: {
onPrimaryAction: handleSubmitConfirmation,
},
});
}
if (!confirmed) {
return null;
}
return (
<Alert
severity="warning"
className="grid items-center grid-flow-row gap-2 p-4 place-items-center lg:grid-flow-col lg:place-content-between"
>
<div className="grid grid-flow-row gap-1 text-left">
<Text className="font-semibold">
Please update the Redirect URL for all providers being used
</Text>
<Text className="text-sm+">
We are deprecating your project&apos;s old DNS name in favor of
individual DNS names for each service. Please make sure to update your
providers to use the new auth specific URL under <b>Redirect URL</b>{' '}
before the 1st of February 2023.{' '}
<Link
href="https://github.com/nhost/nhost/discussions/1319"
target="_blank"
rel="noopener noreferrer"
underline="hover"
className="font-medium"
>
Read the discussion here.
<ArrowSquareOutIcon className="w-4 h-4 ml-1" />
</Link>
</Text>
</div>
<Button
variant="borderless"
className={
theme.palette.mode === 'dark'
? 'text-white hover:bg-brown'
: 'text-black hover:bg-orange-300'
}
onClick={handleOpenConfirmationDialog}
>
I have updated all Redirect URLs
</Button>
</Alert>
);
}

View File

@@ -1 +0,0 @@
export { default as ProvidersUpdatedAlert } from './ProvidersUpdatedAlert';

View File

@@ -5,7 +5,6 @@ import { Form } from '@/components/form/Form';
import { SettingsContainer } from '@/components/layout/SettingsContainer';
import { ActivityIndicator } from '@/components/ui/v2/ActivityIndicator';
import { Alert } from '@/components/ui/v2/Alert';
import { filterOptions } from '@/components/ui/v2/Autocomplete';
import { Box } from '@/components/ui/v2/Box';
import { InfoIcon } from '@/components/ui/v2/icons/InfoIcon';
import { Input } from '@/components/ui/v2/Input';
@@ -95,8 +94,8 @@ export default function AISettings() {
reValidateMode: 'onSubmit',
defaultValues: {
version: {
label: '0.1.0-beta4',
value: '0.1.0-beta4',
label: ai?.version ?? availableVersions?.at(0)?.label,
value: ai?.version ?? availableVersions?.at(0)?.value,
},
webhookSecret: '',
organization: '',
@@ -110,12 +109,17 @@ export default function AISettings() {
resolver: yupResolver(validationSchema),
});
const { register, formState, reset, watch } = form;
const { register, formState, reset, watch, setValue } = form;
const aiSettingsFormValues = watch();
useEffect(() => {
if (ai) {
reset({
version: { label: ai?.version, value: ai?.version },
version: {
label: ai?.version,
value: ai?.version,
},
webhookSecret: ai?.webhookSecret,
synchPeriodMinutes: ai?.autoEmbeddings?.synchPeriodMinutes,
apiKey: ai?.openai?.apiKey,
@@ -130,10 +134,27 @@ export default function AISettings() {
setAIServiceEnabled(!!ai);
}, [ai, reset]);
useEffect(() => {
if (
!loadingGraphiteVersionsData &&
availableVersions.length > 0 &&
!ai &&
!aiSettingsFormValues.version.value
) {
setValue('version', availableVersions?.at(0));
}
}, [
ai,
setValue,
availableVersions,
aiSettingsFormValues,
loadingGraphiteVersionsData,
]);
const toggleAIService = async (enabled: boolean) => {
setAIServiceEnabled(enabled);
if (!enabled) {
if (!enabled && ai) {
openDialog({
title: 'Confirm Disabling the AI service',
component: (
@@ -203,8 +224,6 @@ export default function AISettings() {
}
}
const aiSettingsFormValues = watch();
const getAIResourcesCost = () => {
const vCPUs = `${
aiSettingsFormValues.compute.cpu / RESOURCE_VCPU_MULTIPLIER
@@ -240,37 +259,54 @@ export default function AISettings() {
className="flex flex-col"
>
<Box className="space-y-4">
<Box className="space-y-2">
<Box className="flex flex-row items-center space-x-2">
<Text className="text-lg font-semibold">Version</Text>
<Tooltip title="Version of the service to use.">
<InfoIcon
aria-label="Info"
className="h-4 w-4"
color="primary"
/>
</Tooltip>
</Box>
<ControlledAutocomplete
id="version"
name="version"
filterOptions={(options, state) => {
if (state.inputValue === ai?.version) {
return options;
{availableVersions.length > 0 && (
<Box className="space-y-2">
<Box className="flex flex-row items-center space-x-2">
<Text className="text-lg font-semibold">Version</Text>
<Tooltip title="Version of the service to use.">
<InfoIcon
aria-label="Info"
className="h-4 w-4"
color="primary"
/>
</Tooltip>
</Box>
<ControlledAutocomplete
id="version"
name="version"
autoHighlight
isOptionEqualToValue={() => false}
filterOptions={(options, { inputValue }) => {
const inputValueLower = inputValue.toLowerCase();
const matched = [];
const otherOptions = [];
options.forEach((option) => {
const optionLabelLower = option.label.toLowerCase();
if (optionLabelLower.startsWith(inputValueLower)) {
matched.push(option);
} else {
otherOptions.push(option);
}
});
const result = [...matched, ...otherOptions];
return result;
}}
fullWidth
className="col-span-4"
options={availableVersions}
error={!!formState.errors?.version?.message}
helperText={formState.errors?.version?.message}
showCustomOption="auto"
customOptionLabel={(value) =>
`Use custom value: "${value}"`
}
return filterOptions(options, state);
}}
fullWidth
className="col-span-4"
options={availableVersions}
error={!!formState.errors?.version?.message}
helperText={formState.errors?.version?.message}
showCustomOption="auto"
customOptionLabel={(value) =>
`Use custom value: "${value}"`
}
/>
</Box>
/>
</Box>
)}
<Box className="space-y-2">
<Box className="flex flex-row items-center space-x-2">

View File

@@ -3,7 +3,6 @@ import { ControlledAutocomplete } from '@/components/form/ControlledAutocomplete
import { Form } from '@/components/form/Form';
import { SettingsContainer } from '@/components/layout/SettingsContainer';
import { ActivityIndicator } from '@/components/ui/v2/ActivityIndicator';
import { filterOptions } from '@/components/ui/v2/Autocomplete';
import { useCurrentWorkspaceAndProject } from '@/features/projects/common/hooks/useCurrentWorkspaceAndProject';
import {
GetAuthenticationSettingsDocument,
@@ -134,12 +133,26 @@ export default function AuthServiceVersionSettings() {
<ControlledAutocomplete
id="version"
name="version"
filterOptions={(options, state) => {
if (state.inputValue === version) {
return options;
}
autoHighlight
isOptionEqualToValue={() => false}
filterOptions={(options, { inputValue }) => {
const inputValueLower = inputValue.toLowerCase();
const matched = [];
const otherOptions = [];
return filterOptions(options, state);
options.forEach((option) => {
const optionLabelLower = option.label.toLowerCase();
if (optionLabelLower.startsWith(inputValueLower)) {
matched.push(option);
} else {
otherOptions.push(option);
}
});
const result = [...matched, ...otherOptions];
return result;
}}
fullWidth
className="lg:col-span-2"

View File

@@ -3,7 +3,6 @@ import { ControlledAutocomplete } from '@/components/form/ControlledAutocomplete
import { Form } from '@/components/form/Form';
import { SettingsContainer } from '@/components/layout/SettingsContainer';
import { ActivityIndicator } from '@/components/ui/v2/ActivityIndicator';
import { filterOptions } from '@/components/ui/v2/Autocomplete';
import { useCurrentWorkspaceAndProject } from '@/features/projects/common/hooks/useCurrentWorkspaceAndProject';
import {
GetPostgresSettingsDocument,
@@ -136,12 +135,26 @@ export default function DatabaseServiceVersionSettings() {
<ControlledAutocomplete
id="version"
name="version"
filterOptions={(options, state) => {
if (state.inputValue === version) {
return options;
}
autoHighlight
isOptionEqualToValue={() => false}
filterOptions={(options, { inputValue }) => {
const inputValueLower = inputValue.toLowerCase();
const matched = [];
const otherOptions = [];
return filterOptions(options, state);
options.forEach((option) => {
const optionLabelLower = option.label.toLowerCase();
if (optionLabelLower.startsWith(inputValueLower)) {
matched.push(option);
} else {
otherOptions.push(option);
}
});
const result = [...matched, ...otherOptions];
return result;
}}
fullWidth
className="lg:col-span-2"

View File

@@ -3,7 +3,6 @@ import { ControlledAutocomplete } from '@/components/form/ControlledAutocomplete
import { Form } from '@/components/form/Form';
import { SettingsContainer } from '@/components/layout/SettingsContainer';
import { ActivityIndicator } from '@/components/ui/v2/ActivityIndicator';
import { filterOptions } from '@/components/ui/v2/Autocomplete';
import { useCurrentWorkspaceAndProject } from '@/features/projects/common/hooks/useCurrentWorkspaceAndProject';
import {
GetHasuraSettingsDocument,
@@ -136,12 +135,26 @@ export default function HasuraServiceVersionSettings() {
<ControlledAutocomplete
id="version"
name="version"
filterOptions={(options, state) => {
if (state.inputValue === version) {
return options;
}
autoHighlight
isOptionEqualToValue={() => false}
filterOptions={(options, { inputValue }) => {
const inputValueLower = inputValue.toLowerCase();
const matched = [];
const otherOptions = [];
return filterOptions(options, state);
options.forEach((option) => {
const optionLabelLower = option.label.toLowerCase();
if (optionLabelLower.startsWith(inputValueLower)) {
matched.push(option);
} else {
otherOptions.push(option);
}
});
const result = [...matched, ...otherOptions];
return result;
}}
fullWidth
className="lg:col-span-2"

View File

@@ -114,7 +114,6 @@ export default function useCurrentWorkspaceAndProject(): UseCurrentWorkspaceAndP
createdAt: new Date().toISOString(),
desiredState: ApplicationStatus.Live,
featureFlags: [],
providersUpdated: true,
repositoryProductionBranch: null,
nhostBaseFolder: null,
plan: null,

View File

@@ -36,7 +36,7 @@ export interface RoleSettingsFormValues {
*/
authUserDefaultRole: string;
/**
* Allowed roles for the project.
* Default Allowed roles for the project.
*/
authUserDefaultAllowedRoles: Role[];
}
@@ -169,8 +169,8 @@ export default function RoleSettings() {
return (
<SettingsContainer
title="Allowed Roles"
description="Allowed roles are roles users get automatically when they sign up."
title="Default Allowed Roles"
description="Default Allowed Roles are roles users get automatically when they sign up."
docsLink="https://docs.nhost.io/authentication/users#allowed-roles"
rootClassName="gap-0"
className={twMerge(

View File

@@ -3,7 +3,6 @@ import { ControlledAutocomplete } from '@/components/form/ControlledAutocomplete
import { Form } from '@/components/form/Form';
import { SettingsContainer } from '@/components/layout/SettingsContainer';
import { ActivityIndicator } from '@/components/ui/v2/ActivityIndicator';
import { filterOptions } from '@/components/ui/v2/Autocomplete';
import { useCurrentWorkspaceAndProject } from '@/features/projects/common/hooks/useCurrentWorkspaceAndProject';
import {
GetStorageSettingsDocument,
@@ -136,12 +135,26 @@ export default function StorageServiceVersionSettings() {
<ControlledAutocomplete
id="version"
name="version"
filterOptions={(options, state) => {
if (state.inputValue === version) {
return options;
}
autoHighlight
isOptionEqualToValue={() => false}
filterOptions={(options, { inputValue }) => {
const inputValueLower = inputValue.toLowerCase();
const matched = [];
const otherOptions = [];
return filterOptions(options, state);
options.forEach((option) => {
const optionLabelLower = option.label.toLowerCase();
if (optionLabelLower.startsWith(inputValueLower)) {
matched.push(option);
} else {
otherOptions.push(option);
}
});
const result = [...matched, ...otherOptions];
return result;
}}
fullWidth
className="lg:col-span-2"

View File

@@ -7,7 +7,6 @@ fragment Project on apps {
createdAt
desiredState
nhostBaseFolder
providersUpdated
config(resolve: true) {
observability {
grafana {

View File

@@ -1,5 +0,0 @@
mutation confirmProvidersUpdated($id: uuid!) {
updateApp(pk_columns: { id: $id }, _set: { providersUpdated: true }) {
id
}
}

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { Container } from '@/components/layout/Container';
import { ProjectLayout } from '@/components/layout/ProjectLayout';
import { RetryableErrorBoundary } from '@/components/presentational/RetryableErrorBoundary';
@@ -68,10 +67,5 @@ export default function BackupsPage() {
}
BackupsPage.getLayout = function getLayout(page: ReactElement) {
return (
<ProjectLayout>
<DepricationNotice />
{page}
</ProjectLayout>
);
return <ProjectLayout>{page}</ProjectLayout>;
};

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { InlineCode } from '@/components/presentational/InlineCode';
import { DataBrowserEmptyState } from '@/features/database/dataGrid/components/DataBrowserEmptyState';
import { DataBrowserLayout } from '@/features/database/dataGrid/components/DataBrowserLayout';
@@ -38,7 +37,6 @@ DataBrowserDatabaseDetailsPage.getLayout = function getLayout(
) {
return (
<DataBrowserLayout>
<DepricationNotice />
{page}
</DataBrowserLayout>
);

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { Container } from '@/components/layout/Container';
import { ProjectLayout } from '@/components/layout/ProjectLayout';
import type { DeploymentStatus } from '@/components/presentational/StatusCircle';
@@ -153,10 +152,5 @@ export default function DeploymentDetailsPage() {
}
DeploymentDetailsPage.getLayout = function getLayout(page: ReactElement) {
return (
<ProjectLayout>
<DepricationNotice />
{page}
</ProjectLayout>
);
return <ProjectLayout>{page}</ProjectLayout>;
};

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { useUI } from '@/components/common/UIProvider';
import { Container } from '@/components/layout/Container';
import { ProjectLayout } from '@/components/layout/ProjectLayout';
@@ -68,10 +67,5 @@ export default function DeploymentsPage() {
}
DeploymentsPage.getLayout = function getLayout(page: ReactElement) {
return (
<ProjectLayout>
<DepricationNotice />
{page}
</ProjectLayout>
);
return <ProjectLayout>{page}</ProjectLayout>;
};

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { ProjectLayout } from '@/components/layout/ProjectLayout';
import { LoadingScreen } from '@/components/presentational/LoadingScreen';
import { RetryableErrorBoundary } from '@/components/presentational/RetryableErrorBoundary';
@@ -352,7 +351,6 @@ GraphQLPage.getLayout = function getLayout(page: ReactElement) {
},
}}
>
<DepricationNotice />
{page}
</ProjectLayout>
);

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { Container } from '@/components/layout/Container';
import { ProjectLayout } from '@/components/layout/ProjectLayout';
import { LoadingScreen } from '@/components/presentational/LoadingScreen';
@@ -113,10 +112,5 @@ export default function HasuraPage() {
}
HasuraPage.getLayout = function getLayout(page: ReactElement) {
return (
<ProjectLayout>
<DepricationNotice />
{page}
</ProjectLayout>
);
return <ProjectLayout>{page}</ProjectLayout>;
};

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { ProjectLayout } from '@/components/layout/ProjectLayout';
import { ApplicationErrored } from '@/features/projects/common/components/ApplicationErrored';
import { ApplicationLive } from '@/features/projects/common/components/ApplicationLive';
@@ -50,10 +49,5 @@ export default function AppIndexPage() {
}
AppIndexPage.getLayout = function getLayout(page: ReactElement) {
return (
<ProjectLayout>
<DepricationNotice />
{page}
</ProjectLayout>
);
return <ProjectLayout>{page}</ProjectLayout>;
};

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { ProjectLayout } from '@/components/layout/ProjectLayout';
import { RetryableErrorBoundary } from '@/components/presentational/RetryableErrorBoundary';
import { useCurrentWorkspaceAndProject } from '@/features/projects/common/hooks/useCurrentWorkspaceAndProject';
@@ -135,10 +134,5 @@ export default function LogsPage() {
}
LogsPage.getLayout = function getLayout(page: ReactElement) {
return (
<ProjectLayout>
<DepricationNotice />
{page}
</ProjectLayout>
);
return <ProjectLayout>{page}</ProjectLayout>;
};

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { Container } from '@/components/layout/Container';
import { ProjectLayout } from '@/components/layout/ProjectLayout';
import { ActivityIndicator } from '@/components/ui/v2/ActivityIndicator';
@@ -127,10 +126,5 @@ export default function MetricsPage() {
}
MetricsPage.getLayout = function getLayout(page: ReactElement) {
return (
<ProjectLayout>
<DepricationNotice />
{page}
</ProjectLayout>
);
return <ProjectLayout>{page}</ProjectLayout>;
};

View File

@@ -12,7 +12,6 @@ import { useCurrentWorkspaceAndProject } from '@/features/projects/common/hooks/
import type { GetRunServicesQuery } from '@/utils/__generated__/graphql';
import { useGetRunServicesQuery } from '@/utils/__generated__/graphql';
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { UpgradeNotification } from '@/features/projects/common/components/UpgradeNotification';
import {
ServiceForm,
@@ -259,10 +258,5 @@ export default function ServicesPage() {
}
ServicesPage.getLayout = function getLayout(page: ReactElement) {
return (
<ProjectLayout>
<DepricationNotice />
{page}
</ProjectLayout>
);
return <ProjectLayout>{page}</ProjectLayout>;
};

View File

@@ -1,6 +1,5 @@
import { Container } from '@/components/layout/Container';
import { SettingsLayout } from '@/components/layout/SettingsLayout';
import { ProvidersUpdatedAlert } from '@/components/settings';
import { ActivityIndicator } from '@/components/ui/v2/ActivityIndicator';
import { AnonymousSignInSettings } from '@/features/authentication/settings/components/AnonymousSignInSettings';
import { AppleProviderSettings } from '@/features/authentication/settings/components/AppleProviderSettings';
@@ -55,7 +54,6 @@ export default function SettingsSignInMethodsPage() {
<WebAuthnSettings />
<AnonymousSignInSettings />
<SMSSettings />
{!currentProject.providersUpdated && <ProvidersUpdatedAlert />}
<AppleProviderSettings />
<AzureADProviderSettings />
<DiscordProviderSettings />

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { ProjectLayout } from '@/components/layout/ProjectLayout';
import { LoadingScreen } from '@/components/presentational/LoadingScreen';
import { RetryableErrorBoundary } from '@/components/presentational/RetryableErrorBoundary';
@@ -45,7 +44,6 @@ StoragePage.getLayout = function getLayout(page: ReactElement) {
<ProjectLayout
mainContainerProps={{ sx: { backgroundColor: 'background.default' } }}
>
<DepricationNotice />
{page}
</ProjectLayout>
);

View File

@@ -1,4 +1,3 @@
import DepricationNotice from '@/components/common/DepricationNotice/DepricationNotice';
import { useDialog } from '@/components/common/DialogProvider';
import { Pagination } from '@/components/common/Pagination';
import { Container } from '@/components/layout/Container';
@@ -391,7 +390,6 @@ export default function UsersPage() {
UsersPage.getLayout = function getLayout(page: ReactElement) {
return (
<ProjectLayout contentContainerProps={{ className: 'h-full' }}>
<DepricationNotice />
{page}
</ProjectLayout>
);

View File

@@ -59,7 +59,6 @@ export const mockApplication: Project = {
deployments: [],
desiredState: ApplicationStatus.Live,
featureFlags: [],
providersUpdated: true,
githubRepository: { fullName: 'test/git-project' },
repositoryProductionBranch: null,
nhostBaseFolder: null,

View File

@@ -3362,7 +3362,6 @@ export type Apps = {
/** An object relationship */
plan: Plans;
planId: Scalars['uuid'];
providersUpdated?: Maybe<Scalars['Boolean']>;
/** An object relationship */
region: Regions;
regionId: Scalars['uuid'];
@@ -3626,7 +3625,6 @@ export type Apps_Bool_Exp = {
nhostBaseFolder?: InputMaybe<String_Comparison_Exp>;
plan?: InputMaybe<Plans_Bool_Exp>;
planId?: InputMaybe<Uuid_Comparison_Exp>;
providersUpdated?: InputMaybe<Boolean_Comparison_Exp>;
region?: InputMaybe<Regions_Bool_Exp>;
regionId?: InputMaybe<Uuid_Comparison_Exp>;
repositoryProductionBranch?: InputMaybe<String_Comparison_Exp>;
@@ -3700,7 +3698,6 @@ export type Apps_Insert_Input = {
nhostBaseFolder?: InputMaybe<Scalars['String']>;
plan?: InputMaybe<Plans_Obj_Rel_Insert_Input>;
planId?: InputMaybe<Scalars['uuid']>;
providersUpdated?: InputMaybe<Scalars['Boolean']>;
region?: InputMaybe<Regions_Obj_Rel_Insert_Input>;
regionId?: InputMaybe<Scalars['uuid']>;
repositoryProductionBranch?: InputMaybe<Scalars['String']>;
@@ -3862,7 +3859,6 @@ export type Apps_Order_By = {
nhostBaseFolder?: InputMaybe<Order_By>;
plan?: InputMaybe<Plans_Order_By>;
planId?: InputMaybe<Order_By>;
providersUpdated?: InputMaybe<Order_By>;
region?: InputMaybe<Regions_Order_By>;
regionId?: InputMaybe<Order_By>;
repositoryProductionBranch?: InputMaybe<Order_By>;
@@ -3919,8 +3915,6 @@ export enum Apps_Select_Column {
/** column name */
PlanId = 'planId',
/** column name */
ProvidersUpdated = 'providersUpdated',
/** column name */
RegionId = 'regionId',
/** column name */
RepositoryProductionBranch = 'repositoryProductionBranch',
@@ -3943,8 +3937,6 @@ export enum Apps_Select_Column_Apps_Aggregate_Bool_Exp_Bool_And_Arguments_Column
/** column name */
IsLocked = 'isLocked',
/** column name */
ProvidersUpdated = 'providersUpdated',
/** column name */
StateMatch = 'stateMatch'
}
@@ -3953,8 +3945,6 @@ export enum Apps_Select_Column_Apps_Aggregate_Bool_Exp_Bool_Or_Arguments_Columns
/** column name */
IsLocked = 'isLocked',
/** column name */
ProvidersUpdated = 'providersUpdated',
/** column name */
StateMatch = 'stateMatch'
}
@@ -3975,7 +3965,6 @@ export type Apps_Set_Input = {
name?: InputMaybe<Scalars['String']>;
nhostBaseFolder?: InputMaybe<Scalars['String']>;
planId?: InputMaybe<Scalars['uuid']>;
providersUpdated?: InputMaybe<Scalars['Boolean']>;
regionId?: InputMaybe<Scalars['uuid']>;
repositoryProductionBranch?: InputMaybe<Scalars['String']>;
slug?: InputMaybe<Scalars['String']>;
@@ -4049,7 +4038,6 @@ export type Apps_Stream_Cursor_Value_Input = {
name?: InputMaybe<Scalars['String']>;
nhostBaseFolder?: InputMaybe<Scalars['String']>;
planId?: InputMaybe<Scalars['uuid']>;
providersUpdated?: InputMaybe<Scalars['Boolean']>;
regionId?: InputMaybe<Scalars['uuid']>;
repositoryProductionBranch?: InputMaybe<Scalars['String']>;
slug?: InputMaybe<Scalars['String']>;
@@ -4106,8 +4094,6 @@ export enum Apps_Update_Column {
/** column name */
PlanId = 'planId',
/** column name */
ProvidersUpdated = 'providersUpdated',
/** column name */
RegionId = 'regionId',
/** column name */
RepositoryProductionBranch = 'repositoryProductionBranch',
@@ -22490,7 +22476,7 @@ export type DeleteApplicationMutation = { __typename?: 'mutation_root', deleteAp
export type GetAllWorkspacesAndProjectsQueryVariables = Exact<{ [key: string]: never; }>;
export type GetAllWorkspacesAndProjectsQuery = { __typename?: 'query_root', workspaces: Array<{ __typename?: 'workspaces', id: any, name: string, slug: string, creatorUserId?: any | null, workspaceMembers: Array<{ __typename?: 'workspaceMembers', id: any, type: string, user: { __typename?: 'users', id: any, email?: any | null, displayName: string } }>, projects: Array<{ __typename?: 'apps', id: any, slug: string, name: string, repositoryProductionBranch: string, subdomain: string, createdAt: any, desiredState: number, nhostBaseFolder: string, providersUpdated?: boolean | null, config?: { __typename?: 'ConfigConfig', observability: { __typename?: 'ConfigObservability', grafana: { __typename?: 'ConfigGrafana', adminPassword: string } }, hasura: { __typename?: 'ConfigHasura', adminSecret: string, settings?: { __typename?: 'ConfigHasuraSettings', enableConsole?: boolean | null } | null }, ai?: { __typename?: 'ConfigAI', version?: string | null } | null } | null, featureFlags: Array<{ __typename?: 'featureFlags', description: string, id: any, name: string, value: string }>, appStates: Array<{ __typename?: 'appStateHistory', id: any, appId: any, message?: string | null, stateId: number, createdAt: any }>, region: { __typename?: 'regions', id: any, countryCode: string, awsName: string, domain: string, city: string }, plan: { __typename?: 'plans', id: any, name: string, price: number, isFree: boolean, featureMaxDbSize: number }, githubRepository?: { __typename?: 'githubRepositories', fullName: string } | null, deployments: Array<{ __typename?: 'deployments', id: any, commitSHA: string, commitMessage?: string | null, commitUserName?: string | null, deploymentStartedAt?: any | null, deploymentEndedAt?: any | null, commitUserAvatarUrl?: string | null, deploymentStatus?: string | null }>, creator?: { __typename?: 'users', id: any, email?: any | null, displayName: string } | null }> }> };
export type GetAllWorkspacesAndProjectsQuery = { __typename?: 'query_root', workspaces: Array<{ __typename?: 'workspaces', id: any, name: string, slug: string, creatorUserId?: any | null, workspaceMembers: Array<{ __typename?: 'workspaceMembers', id: any, type: string, user: { __typename?: 'users', id: any, email?: any | null, displayName: string } }>, projects: Array<{ __typename?: 'apps', id: any, slug: string, name: string, repositoryProductionBranch: string, subdomain: string, createdAt: any, desiredState: number, nhostBaseFolder: string, config?: { __typename?: 'ConfigConfig', observability: { __typename?: 'ConfigObservability', grafana: { __typename?: 'ConfigGrafana', adminPassword: string } }, hasura: { __typename?: 'ConfigHasura', adminSecret: string, settings?: { __typename?: 'ConfigHasuraSettings', enableConsole?: boolean | null } | null }, ai?: { __typename?: 'ConfigAI', version?: string | null } | null } | null, featureFlags: Array<{ __typename?: 'featureFlags', description: string, id: any, name: string, value: string }>, appStates: Array<{ __typename?: 'appStateHistory', id: any, appId: any, message?: string | null, stateId: number, createdAt: any }>, region: { __typename?: 'regions', id: any, countryCode: string, awsName: string, domain: string, city: string }, plan: { __typename?: 'plans', id: any, name: string, price: number, isFree: boolean, featureMaxDbSize: number }, githubRepository?: { __typename?: 'githubRepositories', fullName: string } | null, deployments: Array<{ __typename?: 'deployments', id: any, commitSHA: string, commitMessage?: string | null, commitUserName?: string | null, deploymentStartedAt?: any | null, deploymentEndedAt?: any | null, commitUserAvatarUrl?: string | null, deploymentStatus?: string | null }>, creator?: { __typename?: 'users', id: any, email?: any | null, displayName: string } | null }> }> };
export type GetAppPlanAndGlobalPlansAppFragment = { __typename?: 'apps', id: any, subdomain: string, workspace: { __typename?: 'workspaces', id: any, paymentMethods: Array<{ __typename?: 'paymentMethods', id: any }> }, plan: { __typename?: 'plans', id: any, name: string } };
@@ -22547,7 +22533,7 @@ export type GetWorkspaceAndProjectQueryVariables = Exact<{
}>;
export type GetWorkspaceAndProjectQuery = { __typename?: 'query_root', workspaces: Array<{ __typename?: 'workspaces', id: any, name: string, slug: string, creatorUserId?: any | null, workspaceMembers: Array<{ __typename?: 'workspaceMembers', id: any, type: string, user: { __typename?: 'users', id: any, email?: any | null, displayName: string } }>, projects: Array<{ __typename?: 'apps', id: any, slug: string, name: string, repositoryProductionBranch: string, subdomain: string, createdAt: any, desiredState: number, nhostBaseFolder: string, providersUpdated?: boolean | null, config?: { __typename?: 'ConfigConfig', observability: { __typename?: 'ConfigObservability', grafana: { __typename?: 'ConfigGrafana', adminPassword: string } }, hasura: { __typename?: 'ConfigHasura', adminSecret: string, settings?: { __typename?: 'ConfigHasuraSettings', enableConsole?: boolean | null } | null }, ai?: { __typename?: 'ConfigAI', version?: string | null } | null } | null, featureFlags: Array<{ __typename?: 'featureFlags', description: string, id: any, name: string, value: string }>, appStates: Array<{ __typename?: 'appStateHistory', id: any, appId: any, message?: string | null, stateId: number, createdAt: any }>, region: { __typename?: 'regions', id: any, countryCode: string, awsName: string, domain: string, city: string }, plan: { __typename?: 'plans', id: any, name: string, price: number, isFree: boolean, featureMaxDbSize: number }, githubRepository?: { __typename?: 'githubRepositories', fullName: string } | null, deployments: Array<{ __typename?: 'deployments', id: any, commitSHA: string, commitMessage?: string | null, commitUserName?: string | null, deploymentStartedAt?: any | null, deploymentEndedAt?: any | null, commitUserAvatarUrl?: string | null, deploymentStatus?: string | null }>, creator?: { __typename?: 'users', id: any, email?: any | null, displayName: string } | null }> }> };
export type GetWorkspaceAndProjectQuery = { __typename?: 'query_root', workspaces: Array<{ __typename?: 'workspaces', id: any, name: string, slug: string, creatorUserId?: any | null, workspaceMembers: Array<{ __typename?: 'workspaceMembers', id: any, type: string, user: { __typename?: 'users', id: any, email?: any | null, displayName: string } }>, projects: Array<{ __typename?: 'apps', id: any, slug: string, name: string, repositoryProductionBranch: string, subdomain: string, createdAt: any, desiredState: number, nhostBaseFolder: string, config?: { __typename?: 'ConfigConfig', observability: { __typename?: 'ConfigObservability', grafana: { __typename?: 'ConfigGrafana', adminPassword: string } }, hasura: { __typename?: 'ConfigHasura', adminSecret: string, settings?: { __typename?: 'ConfigHasuraSettings', enableConsole?: boolean | null } | null }, ai?: { __typename?: 'ConfigAI', version?: string | null } | null } | null, featureFlags: Array<{ __typename?: 'featureFlags', description: string, id: any, name: string, value: string }>, appStates: Array<{ __typename?: 'appStateHistory', id: any, appId: any, message?: string | null, stateId: number, createdAt: any }>, region: { __typename?: 'regions', id: any, countryCode: string, awsName: string, domain: string, city: string }, plan: { __typename?: 'plans', id: any, name: string, price: number, isFree: boolean, featureMaxDbSize: number }, githubRepository?: { __typename?: 'githubRepositories', fullName: string } | null, deployments: Array<{ __typename?: 'deployments', id: any, commitSHA: string, commitMessage?: string | null, commitUserName?: string | null, deploymentStartedAt?: any | null, deploymentEndedAt?: any | null, commitUserAvatarUrl?: string | null, deploymentStatus?: string | null }>, creator?: { __typename?: 'users', id: any, email?: any | null, displayName: string } | null }> }> };
export type InsertApplicationMutationVariables = Exact<{
app: Apps_Insert_Input;
@@ -22739,9 +22725,9 @@ export type GetFilesAggregateQuery = { __typename?: 'query_root', filesAggregate
export type AppStateHistoryFragment = { __typename?: 'appStateHistory', id: any, appId: any, message?: string | null, stateId: number, createdAt: any };
export type ProjectFragment = { __typename?: 'apps', id: any, slug: string, name: string, repositoryProductionBranch: string, subdomain: string, createdAt: any, desiredState: number, nhostBaseFolder: string, providersUpdated?: boolean | null, config?: { __typename?: 'ConfigConfig', observability: { __typename?: 'ConfigObservability', grafana: { __typename?: 'ConfigGrafana', adminPassword: string } }, hasura: { __typename?: 'ConfigHasura', adminSecret: string, settings?: { __typename?: 'ConfigHasuraSettings', enableConsole?: boolean | null } | null }, ai?: { __typename?: 'ConfigAI', version?: string | null } | null } | null, featureFlags: Array<{ __typename?: 'featureFlags', description: string, id: any, name: string, value: string }>, appStates: Array<{ __typename?: 'appStateHistory', id: any, appId: any, message?: string | null, stateId: number, createdAt: any }>, region: { __typename?: 'regions', id: any, countryCode: string, awsName: string, domain: string, city: string }, plan: { __typename?: 'plans', id: any, name: string, price: number, isFree: boolean, featureMaxDbSize: number }, githubRepository?: { __typename?: 'githubRepositories', fullName: string } | null, deployments: Array<{ __typename?: 'deployments', id: any, commitSHA: string, commitMessage?: string | null, commitUserName?: string | null, deploymentStartedAt?: any | null, deploymentEndedAt?: any | null, commitUserAvatarUrl?: string | null, deploymentStatus?: string | null }>, creator?: { __typename?: 'users', id: any, email?: any | null, displayName: string } | null };
export type ProjectFragment = { __typename?: 'apps', id: any, slug: string, name: string, repositoryProductionBranch: string, subdomain: string, createdAt: any, desiredState: number, nhostBaseFolder: string, config?: { __typename?: 'ConfigConfig', observability: { __typename?: 'ConfigObservability', grafana: { __typename?: 'ConfigGrafana', adminPassword: string } }, hasura: { __typename?: 'ConfigHasura', adminSecret: string, settings?: { __typename?: 'ConfigHasuraSettings', enableConsole?: boolean | null } | null }, ai?: { __typename?: 'ConfigAI', version?: string | null } | null } | null, featureFlags: Array<{ __typename?: 'featureFlags', description: string, id: any, name: string, value: string }>, appStates: Array<{ __typename?: 'appStateHistory', id: any, appId: any, message?: string | null, stateId: number, createdAt: any }>, region: { __typename?: 'regions', id: any, countryCode: string, awsName: string, domain: string, city: string }, plan: { __typename?: 'plans', id: any, name: string, price: number, isFree: boolean, featureMaxDbSize: number }, githubRepository?: { __typename?: 'githubRepositories', fullName: string } | null, deployments: Array<{ __typename?: 'deployments', id: any, commitSHA: string, commitMessage?: string | null, commitUserName?: string | null, deploymentStartedAt?: any | null, deploymentEndedAt?: any | null, commitUserAvatarUrl?: string | null, deploymentStatus?: string | null }>, creator?: { __typename?: 'users', id: any, email?: any | null, displayName: string } | null };
export type WorkspaceFragment = { __typename?: 'workspaces', id: any, name: string, slug: string, creatorUserId?: any | null, workspaceMembers: Array<{ __typename?: 'workspaceMembers', id: any, type: string, user: { __typename?: 'users', id: any, email?: any | null, displayName: string } }>, projects: Array<{ __typename?: 'apps', id: any, slug: string, name: string, repositoryProductionBranch: string, subdomain: string, createdAt: any, desiredState: number, nhostBaseFolder: string, providersUpdated?: boolean | null, config?: { __typename?: 'ConfigConfig', observability: { __typename?: 'ConfigObservability', grafana: { __typename?: 'ConfigGrafana', adminPassword: string } }, hasura: { __typename?: 'ConfigHasura', adminSecret: string, settings?: { __typename?: 'ConfigHasuraSettings', enableConsole?: boolean | null } | null }, ai?: { __typename?: 'ConfigAI', version?: string | null } | null } | null, featureFlags: Array<{ __typename?: 'featureFlags', description: string, id: any, name: string, value: string }>, appStates: Array<{ __typename?: 'appStateHistory', id: any, appId: any, message?: string | null, stateId: number, createdAt: any }>, region: { __typename?: 'regions', id: any, countryCode: string, awsName: string, domain: string, city: string }, plan: { __typename?: 'plans', id: any, name: string, price: number, isFree: boolean, featureMaxDbSize: number }, githubRepository?: { __typename?: 'githubRepositories', fullName: string } | null, deployments: Array<{ __typename?: 'deployments', id: any, commitSHA: string, commitMessage?: string | null, commitUserName?: string | null, deploymentStartedAt?: any | null, deploymentEndedAt?: any | null, commitUserAvatarUrl?: string | null, deploymentStatus?: string | null }>, creator?: { __typename?: 'users', id: any, email?: any | null, displayName: string } | null }> };
export type WorkspaceFragment = { __typename?: 'workspaces', id: any, name: string, slug: string, creatorUserId?: any | null, workspaceMembers: Array<{ __typename?: 'workspaceMembers', id: any, type: string, user: { __typename?: 'users', id: any, email?: any | null, displayName: string } }>, projects: Array<{ __typename?: 'apps', id: any, slug: string, name: string, repositoryProductionBranch: string, subdomain: string, createdAt: any, desiredState: number, nhostBaseFolder: string, config?: { __typename?: 'ConfigConfig', observability: { __typename?: 'ConfigObservability', grafana: { __typename?: 'ConfigGrafana', adminPassword: string } }, hasura: { __typename?: 'ConfigHasura', adminSecret: string, settings?: { __typename?: 'ConfigHasuraSettings', enableConsole?: boolean | null } | null }, ai?: { __typename?: 'ConfigAI', version?: string | null } | null } | null, featureFlags: Array<{ __typename?: 'featureFlags', description: string, id: any, name: string, value: string }>, appStates: Array<{ __typename?: 'appStateHistory', id: any, appId: any, message?: string | null, stateId: number, createdAt: any }>, region: { __typename?: 'regions', id: any, countryCode: string, awsName: string, domain: string, city: string }, plan: { __typename?: 'plans', id: any, name: string, price: number, isFree: boolean, featureMaxDbSize: number }, githubRepository?: { __typename?: 'githubRepositories', fullName: string } | null, deployments: Array<{ __typename?: 'deployments', id: any, commitSHA: string, commitMessage?: string | null, commitUserName?: string | null, deploymentStartedAt?: any | null, deploymentEndedAt?: any | null, commitUserAvatarUrl?: string | null, deploymentStatus?: string | null }>, creator?: { __typename?: 'users', id: any, email?: any | null, displayName: string } | null }> };
export type GithubRepositoryFragment = { __typename?: 'githubRepositories', id: any, name: string, fullName: string, private: boolean, githubAppInstallation: { __typename?: 'githubAppInstallations', id: any, accountLogin?: string | null, accountType?: string | null, accountAvatarUrl?: string | null } };
@@ -22979,13 +22965,6 @@ export type UpdateRunServiceConfigMutationVariables = Exact<{
export type UpdateRunServiceConfigMutation = { __typename?: 'mutation_root', updateRunServiceConfig: { __typename?: 'ConfigRunServiceConfig', name: any } };
export type ConfirmProvidersUpdatedMutationVariables = Exact<{
id: Scalars['uuid'];
}>;
export type ConfirmProvidersUpdatedMutation = { __typename?: 'mutation_root', updateApp?: { __typename?: 'apps', id: any } | null };
export type GetFreeAndActiveProjectsQueryVariables = Exact<{
userId: Scalars['uuid'];
}>;
@@ -23240,7 +23219,6 @@ export const ProjectFragmentDoc = gql`
createdAt
desiredState
nhostBaseFolder
providersUpdated
config(resolve: true) {
observability {
grafana {
@@ -26751,39 +26729,6 @@ export function useUpdateRunServiceConfigMutation(baseOptions?: Apollo.MutationH
export type UpdateRunServiceConfigMutationHookResult = ReturnType<typeof useUpdateRunServiceConfigMutation>;
export type UpdateRunServiceConfigMutationResult = Apollo.MutationResult<UpdateRunServiceConfigMutation>;
export type UpdateRunServiceConfigMutationOptions = Apollo.BaseMutationOptions<UpdateRunServiceConfigMutation, UpdateRunServiceConfigMutationVariables>;
export const ConfirmProvidersUpdatedDocument = gql`
mutation confirmProvidersUpdated($id: uuid!) {
updateApp(pk_columns: {id: $id}, _set: {providersUpdated: true}) {
id
}
}
`;
export type ConfirmProvidersUpdatedMutationFn = Apollo.MutationFunction<ConfirmProvidersUpdatedMutation, ConfirmProvidersUpdatedMutationVariables>;
/**
* __useConfirmProvidersUpdatedMutation__
*
* To run a mutation, you first call `useConfirmProvidersUpdatedMutation` within a React component and pass it any options that fit your needs.
* When your component renders, `useConfirmProvidersUpdatedMutation` returns a tuple that includes:
* - A mutate function that you can call at any time to execute the mutation
* - An object with fields that represent the current status of the mutation's execution
*
* @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;
*
* @example
* const [confirmProvidersUpdatedMutation, { data, loading, error }] = useConfirmProvidersUpdatedMutation({
* variables: {
* id: // value for 'id'
* },
* });
*/
export function useConfirmProvidersUpdatedMutation(baseOptions?: Apollo.MutationHookOptions<ConfirmProvidersUpdatedMutation, ConfirmProvidersUpdatedMutationVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useMutation<ConfirmProvidersUpdatedMutation, ConfirmProvidersUpdatedMutationVariables>(ConfirmProvidersUpdatedDocument, options);
}
export type ConfirmProvidersUpdatedMutationHookResult = ReturnType<typeof useConfirmProvidersUpdatedMutation>;
export type ConfirmProvidersUpdatedMutationResult = Apollo.MutationResult<ConfirmProvidersUpdatedMutation>;
export type ConfirmProvidersUpdatedMutationOptions = Apollo.BaseMutationOptions<ConfirmProvidersUpdatedMutation, ConfirmProvidersUpdatedMutationVariables>;
export const GetFreeAndActiveProjectsDocument = gql`
query GetFreeAndActiveProjects($userId: uuid!) {
freeAndActiveProjects: apps(

View File

@@ -1,5 +1,11 @@
# @nhost/docs
## 0.7.5
### Patch Changes
- 7c977e714: chore: change `Allowed Roles` to `Default Allowed Roles`
## 0.7.4
### Patch Changes

View File

@@ -34,9 +34,9 @@ The default role is used when no role is specified in the request. By default, u
You can change what the default role for new users should be at **Settings -> Roles and Permissions**.
### Allowed Roles
### Default Allowed Roles
Allowed roles are roles the user is allowed to use when making a request. Usually, you would change the role from `user` (the default role) to some other role because you want to use a different role to resolve permissions for a particular request.
Default Allowed roles are roles the user is allowed to use when making a request. Usually, you would change the role from `user` (the default role) to some other role because you want to use a different role to resolve permissions for a particular request.
By default, users have two allowed roles:

View File

@@ -1,6 +1,6 @@
{
"name": "@nhost/docs",
"version": "0.7.4",
"version": "0.7.5",
"private": true,
"scripts": {
"docusaurus": "docusaurus",

View File

@@ -1,5 +1,10 @@
---
## 0.2.1
### Patch Changes
- b4dccd449: fix: resolve auth issue and too many redirects error
## 0.2.0
### Minor Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@nhost-examples/sveltekit",
"version": "0.2.0",
"version": "0.2.1",
"private": true,
"scripts": {
"dev": "vite dev",

View File

@@ -8,9 +8,11 @@ export const NHOST_SESSION_KEY = 'nhostSession';
/** @param {import('@sveltejs/kit').Cookies} cookies */
export const getNhost = async (cookies) => {
/** @type {import('@nhost/nhost-js').NhostClient} */
const nhost = new NhostClient({
subdomain: env.PUBLIC_NHOST_SUBDOMAIN || 'local',
region: env.PUBLIC_NHOST_REGION,
region: env.PUBLIC_NHOST_REGION,
clientStorageType: 'cookie',
start: false
})
@@ -18,7 +20,7 @@ export const getNhost = async (cookies) => {
/** @type {import('@nhost/nhost-js').NhostSession} */
const initialSession = JSON.parse(atob(sessionCookieValue) || 'null')
nhost.auth.client.start({ initialSession })
/** @type {import('@nhost/nhost-js').NhostSession} */
@@ -50,6 +52,8 @@ export const manageAuthSession = async (
const { session: newSession, error } = await nhost.auth.refreshSession(refreshToken)
if (error) {
// delete session cookie when the refreshToken has expired
event.cookies.delete(NHOST_SESSION_KEY, { path: '/' })
return onError?.(error)
}

View File

@@ -1,5 +1,11 @@
# @nhost/vue
## 2.0.2
### Patch Changes
- 184c341f0: fix: include `ServiceUrls` in `NhostVueClientConstructorParams` interface
## 2.0.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@nhost/vue",
"version": "2.0.1",
"version": "2.0.2",
"description": "Nhost Vue library",
"license": "MIT",
"keywords": [

View File

@@ -2,6 +2,7 @@ import {
NhostAuthConstructorParams,
NhostClient as VanillaClient,
removeParameterFromWindow,
ServiceUrls,
Subdomain
} from '@nhost/nhost-js'
import { App, warn } from 'vue'
@@ -11,6 +12,7 @@ export type { ErrorPayload, NhostSession, Subdomain, User } from '@nhost/nhost-j
export interface NhostVueClientConstructorParams
extends Partial<Subdomain>,
Partial<ServiceUrls>,
Omit<NhostAuthConstructorParams, 'url' | 'start' | 'client'> {}
export class NhostClient extends VanillaClient {

2
pnpm-lock.yaml generated
View File

@@ -36442,4 +36442,4 @@ packages:
/zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
dev: false
dev: false