mirror of
https://github.com/docmost/docmost.git
synced 2026-09-12 08:21:32 +08:00
feat: workspace default edit preference (#2319)
This commit is contained in:
@@ -3,8 +3,10 @@ import { CreateWorkspaceDto } from './create-workspace.dto';
|
||||
import {
|
||||
IsArray,
|
||||
IsBoolean,
|
||||
IsIn,
|
||||
IsInt,
|
||||
IsOptional,
|
||||
IsString,
|
||||
Min,
|
||||
} from 'class-validator';
|
||||
|
||||
@@ -61,4 +63,9 @@ export class UpdateWorkspaceDto extends PartialType(CreateWorkspaceDto) {
|
||||
@IsOptional()
|
||||
@IsBoolean()
|
||||
allowPersonalSpaces: boolean;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@IsIn(['read', 'edit'])
|
||||
defaultPageEditMode: string;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,10 @@ import {
|
||||
AUDIT_SERVICE,
|
||||
IAuditService,
|
||||
} from '../../../integrations/audit/audit.service';
|
||||
import { isAdminActingOnOwner } from '../workspace.util';
|
||||
import {
|
||||
getWorkspaceDefaultPageEditMode,
|
||||
isAdminActingOnOwner,
|
||||
} from '../workspace.util';
|
||||
|
||||
@Injectable()
|
||||
export class WorkspaceInvitationService {
|
||||
@@ -257,6 +260,7 @@ export class WorkspaceInvitationService {
|
||||
workspaceId: workspace.id,
|
||||
},
|
||||
trx,
|
||||
{ pageEditMode: getWorkspaceDefaultPageEditMode(workspace) },
|
||||
);
|
||||
|
||||
// add user to default group
|
||||
|
||||
@@ -527,6 +527,20 @@ export class WorkspaceService {
|
||||
);
|
||||
}
|
||||
|
||||
if (typeof updateWorkspaceDto.defaultPageEditMode !== 'undefined') {
|
||||
const prev = settingsBefore?.defaultPageEditMode ?? null;
|
||||
const next = updateWorkspaceDto.defaultPageEditMode.toLowerCase();
|
||||
if (prev !== next) {
|
||||
before.defaultPageEditMode = prev;
|
||||
after.defaultPageEditMode = next;
|
||||
}
|
||||
await this.workspaceRepo.updateDefaultPageEditMode(
|
||||
workspaceId,
|
||||
next,
|
||||
trx,
|
||||
);
|
||||
}
|
||||
|
||||
delete updateWorkspaceDto.restrictApiToAdmins;
|
||||
delete updateWorkspaceDto.aiSearch;
|
||||
delete updateWorkspaceDto.generativeAi;
|
||||
@@ -535,6 +549,7 @@ export class WorkspaceService {
|
||||
delete updateWorkspaceDto.allowMemberTemplates;
|
||||
delete updateWorkspaceDto.aiChat;
|
||||
delete updateWorkspaceDto.allowPersonalSpaces;
|
||||
delete updateWorkspaceDto.defaultPageEditMode;
|
||||
|
||||
await this.workspaceRepo.updateWorkspace(
|
||||
updateWorkspaceDto,
|
||||
|
||||
@@ -6,3 +6,18 @@ export function isAdminActingOnOwner(
|
||||
): boolean {
|
||||
return authUserRole === UserRole.ADMIN && targetRole === UserRole.OWNER;
|
||||
}
|
||||
|
||||
export type PageEditMode = 'read' | 'edit';
|
||||
|
||||
export function getWorkspaceDefaultPageEditMode(
|
||||
workspace: { settings?: unknown } | null | undefined,
|
||||
): PageEditMode | undefined {
|
||||
const settings = (workspace?.settings ?? {}) as {
|
||||
defaultPageEditMode?: unknown;
|
||||
};
|
||||
const mode = settings.defaultPageEditMode;
|
||||
if (mode === 'read' || mode === 'edit') {
|
||||
return mode;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user