このコミットが含まれているのは:
2026-09-24 07:01:36 +09:00
コミット 1de00191ea
11個のファイルの変更108行の追加22行の削除
+6 -3
ファイルの表示
@@ -38,6 +38,7 @@ const DraggableDroppableTagRow: FC<Props> = ({
{ normal: { duration: .2, ease: 'easeOut' as const } },
)
const dndId = `tag-node:${ pathKey }`
const dndDisabled = tag.category === 'nico'
const downPosRef = useRef<{ x: number; y: number } | null> (null)
const armedRef = useRef (false)
@@ -62,7 +63,8 @@ const DraggableDroppableTagRow: FC<Props> = ({
const { attributes,
listeners,
setNodeRef: setDragRef,
transform } = useDraggable ({ id: dndId,
transform } = useDraggable ({ id: dndId,
disabled: dndDisabled,
data: { kind: 'tag',
dndId,
tagId: tag.id,
@@ -70,8 +72,9 @@ const DraggableDroppableTagRow: FC<Props> = ({
nestLevel } })
const { setNodeRef: setDropRef, isOver: over } = useDroppable ({
id: dndId,
data: { kind: 'tag', tagId: tag.id } })
id: dndId,
disabled: dndDisabled,
data: { kind: 'tag', tagId: tag.id } })
const activeDragging = activeDndId === dndId
const style: CSSProperties = { transform: CSS.Translate.toString (transform),
+4 -3
ファイルの表示
@@ -150,16 +150,17 @@ const buildFlatTagByCategory = (
byCategory: TagByCategory,
): TagByCategory => {
const tagsTmp = { } as TagByCategory
const seen = new Set<number> ()
const seen = new Set<string> ()
for (const category of CATEGORIES)
tagsTmp[category] = []
const visit = (tag: TagWithSections) => {
if (seen.has (tag.id))
const key = `${ tag.category }:${ tag.id }`
if (seen.has (key))
return
seen.add (tag.id)
seen.add (key)
tagsTmp[tag.category].push ({ ...tag, children: [] })
for (const child of tag.children ?? [])
+1 -1
ファイルの表示
@@ -86,7 +86,7 @@ const TagLink: FC<Props> = ({ tag,
className={cn (
'inline-flex min-w-0 max-w-full flex-nowrap items-stretch align-baseline',
'gap-x-1 md:items-baseline')}>
{(linkFlg && withWiki && isFullTag (tag)) && (
{(linkFlg && withWiki && isFullTag (tag) && tag.category !== 'nico') && (
<span className={markerWrapClass}>
{(tag.materialId != null || tag.hasWiki || tag.hasDeerjikists)
? (
+8 -5
ファイルの表示
@@ -28,15 +28,18 @@ export const fetchPost = async (id: string): Promise<Post> => await apiGet (`/po
export const fetchPostChanges = async (
{ post, tag, page, limit }: {
post?: string
tag?: string
page: number
limit: number }): Promise<{
{ post, tag, externalTag, page, limit }: {
post?: string
tag?: string
externalTag?: string
page: number
limit: number }): Promise<{
versions: PostVersion[]
count: number }> =>
await apiGet ('/posts/versions', { params: { ...(post && { post }),
...(tag && { tag }),
...(externalTag && {
external_tag: externalTag }),
page, limit } })
+3
ファイルの表示
@@ -128,6 +128,7 @@ const prefetchPostShow: Prefetcher = async (qc, url) => {
const prefetchPostChanges: Prefetcher = async (qc, url) => {
const id = url.searchParams.get ('id')
const tag = url.searchParams.get ('tag')
const externalTag = url.searchParams.get ('external_tag')
const page = Number (url.searchParams.get ('page') || 1)
const limit = Number (url.searchParams.get ('limit') || 20)
@@ -141,9 +142,11 @@ const prefetchPostChanges: Prefetcher = async (qc, url) => {
await qc.prefetchQuery ({
queryKey: postsKeys.changes ({ ...(id && { id }),
...(tag && { tag }),
...(externalTag && { externalTag }),
page, limit }),
queryFn: () => fetchPostChanges ({ ...(id && { id }),
...(tag && { tag }),
...(externalTag && { externalTag }),
page, limit }) })
}
+5 -1
ファイルの表示
@@ -11,7 +11,11 @@ export const postsKeys = {
index: (p: FetchPostsParams) => ['posts', 'index', p] as const,
show: (id: string) => ['posts', id] as const,
related: (id: string) => ['related', id] as const,
changes: (p: { post?: string; tag?: string; page: number; limit: number }) =>
changes: (p: { post?: string
tag?: string
externalTag?: string
page: number
limit: number }) =>
['posts', 'changes', p] as const }
export const gekanatorKeys = {
+4
ファイルの表示
@@ -51,6 +51,7 @@ const PostHistoryPage: FC = () => {
const query = new URLSearchParams (location.search)
const id = query.get ('id')
const tagId = query.get ('tag')
const externalTagId = query.get ('external_tag')
const page = Number (query.get ('page') ?? 1)
const limit = Number (query.get ('limit') ?? 20)
@@ -66,9 +67,12 @@ const PostHistoryPage: FC = () => {
const { data, isLoading: loading } = useQuery ({
queryKey: postsKeys.changes ({ ...(id && { post: id }),
...(tagId && { tag: tagId }),
...(externalTagId && { externalTag: externalTagId }),
page, limit }),
queryFn: () => fetchPostChanges ({ ...(id && { post: id }),
...(tagId && { tag: tagId }),
...(externalTagId && {
externalTag: externalTagId }),
page, limit }) })
const changes = data?.versions ?? []
const totalPages = data ? Math.ceil (data.count / limit) : 0
+10 -3
ファイルの表示
@@ -406,11 +406,15 @@ const TagListPage: FC = () => {
<tbody>
{results.map (row => (
<tr key={row.id} className="even:bg-gray-100 dark:even:bg-gray-700">
<tr
key={`${ row.category }:${ row.id }`}
className="even:bg-gray-100 dark:even:bg-gray-700">
<td className="p-2">
<TagLink
tag={row}
to={`/tags/${ encodeURIComponent (row.id) }`}
to={row.category === 'nico'
? `/tags/nico?name=${ encodeURIComponent (row.name) }`
: `/tags/${ encodeURIComponent (row.id) }`}
withCount={false}/>
</td>
<td className="p-2 text-right">{row.postCount}</td>
@@ -429,7 +433,10 @@ const TagListPage: FC = () => {
<td className="p-2">{dateString (row.createdAt)}</td>
<td className="p-2">{dateString (row.updatedAt)}</td>
<td className="p-2">
<PrefetchLink to={`/posts/changes?tag=${ row.id }`}>
<PrefetchLink
to={row.category === 'nico'
? `/posts/changes?external_tag=${ row.id }`
: `/posts/changes?tag=${ row.id }`}>
</PrefetchLink>
</td>