0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2024-12-16 20:26:19 -05:00

Merge pull request #5949 from logto-io/gao-show-dev-features-status

feat(console): support localStorage override and show dev feature status
This commit is contained in:
Gao Sun 2024-05-31 11:32:29 +08:00 committed by GitHub
commit d6bb547f7b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 24 additions and 11 deletions

View file

@ -1,8 +1,13 @@
import { yes } from '@silverhand/essentials'; import { yes } from '@silverhand/essentials';
import { storageKeys } from './storage';
const isProduction = process.env.NODE_ENV === 'production'; const isProduction = process.env.NODE_ENV === 'production';
export const isCloud = yes(process.env.IS_CLOUD); export const isCloud = yes(process.env.IS_CLOUD);
export const adminEndpoint = process.env.ADMIN_ENDPOINT; export const adminEndpoint = process.env.ADMIN_ENDPOINT;
export const isDevFeaturesEnabled = export const isDevFeaturesEnabled =
!isProduction || yes(process.env.DEV_FEATURES_ENABLED) || yes(process.env.INTEGRATION_TEST); !isProduction ||
yes(process.env.DEV_FEATURES_ENABLED) ||
yes(process.env.INTEGRATION_TEST) ||
yes(localStorage.getItem(storageKeys.isDevFeaturesEnabled));

View file

@ -7,7 +7,8 @@ export type StorageType =
| 'linking_social_connector' | 'linking_social_connector'
| 'checkout_session' | 'checkout_session'
| 'redirect_after_sign_in' | 'redirect_after_sign_in'
| 'webhook_test_result'; | 'webhook_test_result'
| 'is_dev_features_enabled';
export const getStorageKey = <T extends StorageType>(forType: T) => export const getStorageKey = <T extends StorageType>(forType: T) =>
`logto:admin_console:${forType}` as const; `logto:admin_console:${forType}` as const;
@ -19,4 +20,6 @@ export const storageKeys = Object.freeze({
/** The react-router redirect location after sign in. The value should be a stringified Location object. */ /** The react-router redirect location after sign in. The value should be a stringified Location object. */
redirectAfterSignIn: getStorageKey('redirect_after_sign_in'), redirectAfterSignIn: getStorageKey('redirect_after_sign_in'),
webhookTestResult: getStorageKey('webhook_test_result'), webhookTestResult: getStorageKey('webhook_test_result'),
/** Whether the under-development features are enabled. */
isDevFeaturesEnabled: getStorageKey('is_dev_features_enabled'),
} satisfies Record<CamelCase<StorageType>, string>); } satisfies Record<CamelCase<StorageType>, string>);

View file

@ -1,16 +1,7 @@
@use '@/scss/underscore' as _; @use '@/scss/underscore' as _;
.sidebar { .sidebar {
display: flex;
flex-direction: column;
flex-grow: 0;
flex-shrink: 0;
width: 248px; width: 248px;
overflow-y: auto; overflow-y: auto;
margin-bottom: _.unit(6); margin-bottom: _.unit(6);
.spacer {
margin: 0;
flex: 1 1 0;
}
} }

View file

@ -24,3 +24,10 @@
@include _.main-content-width; @include _.main-content-width;
} }
} }
.devStatus {
color: var(--color-text-secondary);
position: absolute;
bottom: _.unit(3);
left: _.unit(4);
}

View file

@ -1,6 +1,8 @@
import { useOutletContext, useRoutes } from 'react-router-dom'; import { useOutletContext, useRoutes } from 'react-router-dom';
import { isDevFeaturesEnabled } from '@/consts/env';
import OverlayScrollbar from '@/ds-components/OverlayScrollbar'; import OverlayScrollbar from '@/ds-components/OverlayScrollbar';
import Tag from '@/ds-components/Tag';
import { useConsoleRoutes } from '@/hooks/use-console-routes'; import { useConsoleRoutes } from '@/hooks/use-console-routes';
import { usePlausiblePageview } from '@/hooks/use-plausible-pageview'; import { usePlausiblePageview } from '@/hooks/use-plausible-pageview';
@ -27,6 +29,11 @@ function ConsoleContent() {
{routes} {routes}
</div> </div>
</OverlayScrollbar> </OverlayScrollbar>
{isDevFeaturesEnabled && (
<Tag type="state" status="success" variant="plain" className={styles.devStatus}>
Dev features enabled
</Tag>
)}
</div> </div>
); );
} }