mirror of
https://github.com/docmost/docmost.git
synced 2026-05-07 14:43:06 +08:00
d1dc6977ab
* lock/unlock pages * remove using isLocked column - add default page edit state preference * * Move state management to editors (avoids flickers on edit mode switch) * Rename variables * Add strings to translation file * Memoize components in page component * Fix title editor sending update request on editable state change * fixed errors merging main * Fix embed view in read-only mode * remove unused line * sync * fix responsiveness on mobile --------- Co-authored-by: Philipinho <16838612+Philipinho@users.noreply.github.com>
68 lines
1.7 KiB
TypeScript
68 lines
1.7 KiB
TypeScript
import { UserRepo } from '@docmost/db/repos/user/user.repo';
|
|
import {
|
|
BadRequestException,
|
|
Injectable,
|
|
NotFoundException,
|
|
} from '@nestjs/common';
|
|
import { UpdateUserDto } from './dto/update-user.dto';
|
|
|
|
@Injectable()
|
|
export class UserService {
|
|
constructor(private userRepo: UserRepo) {}
|
|
|
|
async findById(userId: string, workspaceId: string) {
|
|
return this.userRepo.findById(userId, workspaceId);
|
|
}
|
|
|
|
async update(
|
|
updateUserDto: UpdateUserDto,
|
|
userId: string,
|
|
workspaceId: string,
|
|
) {
|
|
const user = await this.userRepo.findById(userId, workspaceId);
|
|
|
|
if (!user) {
|
|
throw new NotFoundException('User not found');
|
|
}
|
|
|
|
// preference update
|
|
if (typeof updateUserDto.fullPageWidth !== 'undefined') {
|
|
return this.userRepo.updatePreference(
|
|
userId,
|
|
'fullPageWidth',
|
|
updateUserDto.fullPageWidth,
|
|
);
|
|
}
|
|
|
|
if (typeof updateUserDto.pageEditMode !== 'undefined') {
|
|
return this.userRepo.updatePreference(
|
|
userId,
|
|
'pageEditMode',
|
|
updateUserDto.pageEditMode.toLowerCase(),
|
|
);
|
|
}
|
|
|
|
if (updateUserDto.name) {
|
|
user.name = updateUserDto.name;
|
|
}
|
|
|
|
if (updateUserDto.email && user.email != updateUserDto.email) {
|
|
if (await this.userRepo.findByEmail(updateUserDto.email, workspaceId)) {
|
|
throw new BadRequestException('A user with this email already exists');
|
|
}
|
|
user.email = updateUserDto.email;
|
|
}
|
|
|
|
if (updateUserDto.avatarUrl) {
|
|
user.avatarUrl = updateUserDto.avatarUrl;
|
|
}
|
|
|
|
if (updateUserDto.locale) {
|
|
user.locale = updateUserDto.locale;
|
|
}
|
|
|
|
await this.userRepo.updateUser(updateUserDto, userId, workspaceId);
|
|
return user;
|
|
}
|
|
}
|