From 09a78ef4564588057b30f5ec75a35d4d84072e51 Mon Sep 17 00:00:00 2001 From: JimmFly <447268514@qq.com> Date: Fri, 10 May 2024 16:11:58 +0800 Subject: [PATCH] feat(core): tag groups sorted alphabetically --- .../src/components/page-list/group-definitions.tsx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/frontend/core/src/components/page-list/group-definitions.tsx b/packages/frontend/core/src/components/page-list/group-definitions.tsx index d33e2d56c633..6d30fdb69808 100644 --- a/packages/frontend/core/src/components/page-list/group-definitions.tsx +++ b/packages/frontend/core/src/components/page-list/group-definitions.tsx @@ -4,7 +4,7 @@ import { TagService } from '@affine/core/modules/tag'; import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { FavoritedIcon, FavoriteIcon } from '@blocksuite/icons'; import type { DocMeta } from '@blocksuite/store'; -import { useLiveData, useService } from '@toeverything/infra'; +import { LiveData, useLiveData, useService } from '@toeverything/infra'; import { type ReactNode, useMemo } from 'react'; import * as styles from './group-definitions.css'; @@ -128,7 +128,17 @@ const GroupTagLabel = ({ tag, count }: { tag: Tag; count: number }) => { }; export const useTagGroupDefinitions = (): ItemGroupDefinition[] => { const tagList = useService(TagService).tagList; - const tags = useLiveData(tagList.tags$); + const sortedTagsLiveData$ = useMemo( + () => + LiveData.computed(get => + get(tagList.tags$).sort((a, b) => + get(a.value$).localeCompare(get(b.value$)) + ) + ), + [tagList.tags$] + ); + const tags = useLiveData(sortedTagsLiveData$); + const t = useAFFiNEI18N(); const untagged = useMemo(