mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-13 12:55:00 +00:00
fix(server): use new LocalWorkspace ServerFeature instead (#13091)
keep compatibility close AF-2720 #### PR Dependency Tree * **PR #13091** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit * **New Features** * Added a new `LocalWorkspace` feature flag to server configuration, enabling more flexible feature management. * **Deprecations** * The `allowGuestDemoWorkspace` flag is now deprecated and will be removed in version 0.25.0. Please use the `features` array for feature checks instead. * **Bug Fixes** * Updated UI and logic throughout the app to rely on the new `LocalWorkspace` feature flag rather than the deprecated boolean flag. * **Chores** * Removed references to `allowGuestDemoWorkspace` from configuration, queries, and type definitions for improved consistency. <!-- end of auto-generated comment: release notes by coderabbit.ai --> #### PR Dependency Tree * **PR #13091** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal)
This commit is contained in:
@@ -21,3 +21,13 @@ e2e('should comment feature enabled by default', async t => {
|
||||
JSON.stringify(serverConfig, null, 2)
|
||||
);
|
||||
});
|
||||
|
||||
e2e('should enable local workspace feature by default', async t => {
|
||||
const { serverConfig } = await app.gql({ query: serverConfigQuery });
|
||||
|
||||
t.is(
|
||||
serverConfig.features.includes(ServerFeature.LocalWorkspace),
|
||||
true,
|
||||
JSON.stringify(serverConfig, null, 2)
|
||||
);
|
||||
});
|
||||
|
||||
@@ -85,6 +85,7 @@ export class ServerConfigResolver {
|
||||
baseUrl: this.url.requestBaseUrl,
|
||||
type: env.DEPLOYMENT_TYPE,
|
||||
features: this.server.features,
|
||||
// TODO(@fengmk2): remove this field after the feature 0.25.0 is released
|
||||
allowGuestDemoWorkspace: this.config.flags.allowGuestDemoWorkspace,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -110,6 +110,13 @@ export class ServerService implements OnApplicationBootstrap {
|
||||
this.event.emit('config.changed', event);
|
||||
}
|
||||
|
||||
@OnEvent('config.changed')
|
||||
onConfigChanged(event: Events['config.changed']) {
|
||||
if ('flags' in event.updates) {
|
||||
this.onFlagsChanged();
|
||||
}
|
||||
}
|
||||
|
||||
async revalidateConfig() {
|
||||
const overrides = await this.loadDbOverrides();
|
||||
this.configFactory.override(overrides);
|
||||
@@ -122,6 +129,7 @@ export class ServerService implements OnApplicationBootstrap {
|
||||
await this.event.emitAsync('config.init', {
|
||||
config: this.configFactory.config,
|
||||
});
|
||||
this.onFlagsChanged();
|
||||
}
|
||||
|
||||
private async loadDbOverrides() {
|
||||
@@ -134,4 +142,13 @@ export class ServerService implements OnApplicationBootstrap {
|
||||
|
||||
return overrides;
|
||||
}
|
||||
|
||||
private onFlagsChanged() {
|
||||
const flags = this.configFactory.config.flags;
|
||||
if (flags.allowGuestDemoWorkspace) {
|
||||
this.enableFeature(ServerFeature.LocalWorkspace);
|
||||
} else {
|
||||
this.disableFeature(ServerFeature.LocalWorkspace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ export enum ServerFeature {
|
||||
OAuth = 'oauth',
|
||||
Indexer = 'indexer',
|
||||
Comment = 'comment',
|
||||
LocalWorkspace = 'local_workspace',
|
||||
}
|
||||
|
||||
registerEnumType(ServerFeature, {
|
||||
@@ -42,6 +43,8 @@ export class ServerConfigType {
|
||||
|
||||
@Field(() => Boolean, {
|
||||
description: 'Whether allow guest users to create demo workspaces.',
|
||||
deprecationReason:
|
||||
'This field is deprecated, please use `features` instead. Will be removed in 0.25.0',
|
||||
})
|
||||
allowGuestDemoWorkspace!: boolean;
|
||||
}
|
||||
|
||||
@@ -1760,7 +1760,7 @@ enum SearchTable {
|
||||
|
||||
type ServerConfigType {
|
||||
"""Whether allow guest users to create demo workspaces."""
|
||||
allowGuestDemoWorkspace: Boolean!
|
||||
allowGuestDemoWorkspace: Boolean! @deprecated(reason: "This field is deprecated, please use `features` instead. Will be removed in 0.25.0")
|
||||
|
||||
"""fetch latest available upgradable release of server"""
|
||||
availableUpgrade: ReleaseVersionType
|
||||
@@ -1802,6 +1802,7 @@ enum ServerFeature {
|
||||
Copilot
|
||||
CopilotEmbedding
|
||||
Indexer
|
||||
LocalWorkspace
|
||||
OAuth
|
||||
Payment
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user