feat: add feature flag for peek view (#7122)

This commit is contained in:
pengx17
2024-05-31 12:01:27 +00:00
parent c96fb46751
commit 03be1d66f9
5 changed files with 16 additions and 3 deletions

View File

@@ -24,6 +24,7 @@ export const runtimeFlagsSchema = z.object({
enablePayment: z.boolean(), enablePayment: z.boolean(),
enablePageHistory: z.boolean(), enablePageHistory: z.boolean(),
enableExperimentalFeature: z.boolean(), enableExperimentalFeature: z.boolean(),
enablePeekView: z.boolean(),
allowLocalWorkspace: z.boolean(), allowLocalWorkspace: z.boolean(),
// this is for the electron app // this is for the electron app
serverUrlPrefix: z.string(), serverUrlPrefix: z.string(),

View File

@@ -86,7 +86,7 @@ const usePatchSpecs = (page: Doc, specs: BlockSpec[]) => {
patchReferenceRenderer(patched, reactToLit, referenceRenderer), patchReferenceRenderer(patched, reactToLit, referenceRenderer),
confirmModal confirmModal
); );
if (!page.readonly) { if (!page.readonly && runtimeConfig.enablePeekView) {
patched = patchPeekViewService(patched, peekViewService); patched = patchPeekViewService(patched, peekViewService);
} }
return patched; return patched;

View File

@@ -124,13 +124,18 @@ export class PeekViewEntity extends Entity {
.map(show => show && this._active$.value !== null) .map(show => show && this._active$.value !== null)
.distinctUntilChanged(); .distinctUntilChanged();
// return true if the peek view will be handled
open = (target: ActivePeekView['target']) => { open = (target: ActivePeekView['target']) => {
if (!runtimeConfig.enablePeekView) {
return false;
}
const resolvedInfo = resolvePeekInfoFromPeekTarget(target); const resolvedInfo = resolvePeekInfoFromPeekTarget(target);
if (!resolvedInfo) { if (!resolvedInfo) {
return; return false;
} }
this._active$.next({ target, info: resolvedInfo }); this._active$.next({ target, info: resolvedInfo });
this._show$.next(true); this._show$.next(true);
return true;
}; };
close = () => { close = () => {

View File

@@ -219,7 +219,7 @@ export function CurrentWorkspaceModals() {
<CloudQuotaModal /> <CloudQuotaModal />
)} )}
<AiLoginRequiredModal /> <AiLoginRequiredModal />
<PeekViewManagerModal /> {runtimeConfig.enablePeekView && <PeekViewManagerModal />}
{environment.isDesktop && <FindInPageModal />} {environment.isDesktop && <FindInPageModal />}
</> </>
); );

View File

@@ -23,6 +23,7 @@ export function getRuntimeConfig(buildFlags: BuildFlags): RuntimeConfig {
enablePayment: true, enablePayment: true,
enablePageHistory: true, enablePageHistory: true,
enableExperimentalFeature: false, enableExperimentalFeature: false,
enablePeekView: false,
allowLocalWorkspace: buildFlags.distribution === 'desktop' ? true : false, allowLocalWorkspace: buildFlags.distribution === 'desktop' ? true : false,
serverUrlPrefix: 'https://app.affine.pro', serverUrlPrefix: 'https://app.affine.pro',
appVersion: packageJson.version, appVersion: packageJson.version,
@@ -63,6 +64,7 @@ export function getRuntimeConfig(buildFlags: BuildFlags): RuntimeConfig {
enablePayment: true, enablePayment: true,
enablePageHistory: true, enablePageHistory: true,
enableExperimentalFeature: true, enableExperimentalFeature: true,
enablePeekView: true,
allowLocalWorkspace: buildFlags.distribution === 'desktop' ? true : false, allowLocalWorkspace: buildFlags.distribution === 'desktop' ? true : false,
serverUrlPrefix: 'https://affine.fail', serverUrlPrefix: 'https://affine.fail',
appVersion: packageJson.version, appVersion: packageJson.version,
@@ -117,6 +119,11 @@ export function getRuntimeConfig(buildFlags: BuildFlags): RuntimeConfig {
: buildFlags.mode === 'development' : buildFlags.mode === 'development'
? true ? true
: currentBuildPreset.enablePageHistory, : currentBuildPreset.enablePageHistory,
enablePeekView: process.env.ENABLE_PEEK_VIEW
? process.env.ENABLE_PEEK_VIEW === 'true'
: buildFlags.mode === 'development'
? true
: currentBuildPreset.enablePeekView,
allowLocalWorkspace: process.env.ALLOW_LOCAL_WORKSPACE allowLocalWorkspace: process.env.ALLOW_LOCAL_WORKSPACE
? process.env.ALLOW_LOCAL_WORKSPACE === 'true' ? process.env.ALLOW_LOCAL_WORKSPACE === 'true'
: buildFlags.mode === 'development' : buildFlags.mode === 'development'