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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user