This commit is contained in:
Philipinho
2024-05-19 09:06:06 +01:00
parent 9c7c2f1163
commit 6287f41ef6
6 changed files with 22 additions and 20 deletions

View File

@ -1,10 +1,10 @@
import { Text, Group, Stack, UnstyledButton, Divider } from "@mantine/core";
import { format } from "date-fns";
import classes from "./home.module.css";
import { Link } from "react-router-dom";
import PageListSkeleton from "@/features/home/components/page-list-skeleton";
import { useRecentChangesQuery } from "@/features/page/queries/page-query";
import { buildPageSlug } from "@/features/page/page.utils.ts";
import { formattedDate } from "@/lib/time.ts";
function RecentChanges() {
const { data, isLoading, isError } = useRecentChangesQuery();
@ -35,7 +35,7 @@ function RecentChanges() {
</Stack>
<Text c="dimmed" size="xs" fw={500}>
{format(new Date(page.updatedAt), "PP")}
{formattedDate(page.updatedAt)}
</Text>
</Group>
</UnstyledButton>

View File

@ -1,6 +1,6 @@
import { Text, Group, UnstyledButton } from "@mantine/core";
import { UserAvatar } from "@/components/ui/user-avatar";
import { formatDate } from "@/lib/time";
import { formattedDate } from "@/lib/time";
import classes from "./history.module.css";
import clsx from "clsx";
@ -19,7 +19,9 @@ function HistoryItem({ historyItem, onSelect, isActive }: HistoryItemProps) {
>
<Group wrap="nowrap">
<div>
<Text size="sm">{formatDate(new Date(historyItem.createdAt))}</Text>
<Text size="sm">
{formattedDate(new Date(historyItem.createdAt))}
</Text>
<div style={{ flex: 1 }}>
<Group gap={4} wrap="nowrap">

View File

@ -1,16 +1,16 @@
import { formatDistanceStrict } from 'date-fns';
import { format, isToday, isYesterday } from 'date-fns';
import { formatDistanceStrict } from "date-fns";
import { format, isToday, isYesterday } from "date-fns";
export function timeAgo(date: Date) {
return formatDistanceStrict(new Date(date), new Date(), { addSuffix: true });
}
export function formatDate(date: Date) {
export function formattedDate(date: Date) {
if (isToday(date)) {
return `Today, ${format(date, 'h:mma')}`;
return `Today, ${format(date, "h:mma")}`;
} else if (isYesterday(date)) {
return `Yesterday, ${format(date, 'h:mma')}`;
return `Yesterday, ${format(date, "h:mma")}`;
} else {
return format(date, 'MMM dd, yyyy, h:mma');
return format(date, "MMM dd, yyyy, h:mma");
}
}

View File

@ -10,7 +10,8 @@ export class CreateSpaceDto {
@IsString()
description?: string;
@IsOptional()
@MinLength(4)
@MaxLength(64)
@IsString()
slug?: string;
slug: string;
}

View File

@ -10,8 +10,6 @@ import { KyselyTransaction } from '@docmost/db/types/kysely.types';
import { Space } from '@docmost/db/types/entity.types';
import { PaginationResult } from '@docmost/db/pagination/pagination';
import { UpdateSpaceDto } from '../dto/update-space.dto';
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { slugify } = require('fix-esm').require('@sindresorhus/slugify');
@Injectable()
export class SpaceService {
@ -23,14 +21,14 @@ export class SpaceService {
createSpaceDto: CreateSpaceDto,
trx?: KyselyTransaction,
): Promise<Space> {
const slug = slugify(
createSpaceDto?.slug?.toLowerCase() ?? createSpaceDto.name.toLowerCase(),
const slugExists = await this.spaceRepo.slugExists(
createSpaceDto.slug,
workspaceId,
trx,
);
const slugExists = await this.spaceRepo.slugExists(slug, workspaceId, trx);
if (slugExists) {
throw new BadRequestException(
'Slug exist. Please use a unique space slug',
'Slug exists. Please use a unique space slug',
);
}
@ -40,7 +38,7 @@ export class SpaceService {
description: createSpaceDto.description ?? '',
creatorId: userId,
workspaceId: workspaceId,
slug: slug,
slug: createSpaceDto.slug,
},
trx,
);

View File

@ -104,6 +104,7 @@ export class WorkspaceService {
// create default space
const spaceInfo: CreateSpaceDto = {
name: 'General',
slug: 'general',
};
const createdSpace = await this.spaceService.create(