mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
fix(quotes): avoid striking unresolved quote links
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { formatQuoteNumber, isUnavailableQuoteTarget, shouldShowFloatingQuotePreview } from '../quote-link-utils';
|
||||
import { formatQuoteNumber, getQuoteTargetAvailability, isUnavailableQuoteTarget, shouldShowFloatingQuotePreview } from '../quote-link-utils';
|
||||
|
||||
describe('quote-link-utils', () => {
|
||||
it('formats quote numbers with the expected prefix', () => {
|
||||
@@ -7,6 +7,13 @@ describe('quote-link-utils', () => {
|
||||
expect(formatQuoteNumber()).toBe('>>?');
|
||||
});
|
||||
|
||||
it('distinguishes unresolved and unavailable quote targets', () => {
|
||||
expect(getQuoteTargetAvailability(undefined)).toBe('unresolved');
|
||||
expect(getQuoteTargetAvailability({ deleted: true, removed: false })).toBe('unavailable');
|
||||
expect(getQuoteTargetAvailability({ deleted: false, removed: true })).toBe('unavailable');
|
||||
expect(getQuoteTargetAvailability({ deleted: false, removed: false })).toBe('available');
|
||||
});
|
||||
|
||||
it('marks deleted and removed comments as unavailable quote targets', () => {
|
||||
expect(isUnavailableQuoteTarget(undefined)).toBe(false);
|
||||
expect(isUnavailableQuoteTarget({ deleted: true, removed: false })).toBe(true);
|
||||
|
||||
@@ -1,8 +1,18 @@
|
||||
import type { Comment } from '@bitsocialhq/bitsocial-react-hooks';
|
||||
|
||||
type QuoteTargetAvailability = 'available' | 'unresolved' | 'unavailable';
|
||||
|
||||
export const formatQuoteNumber = (number?: number) => `>>${number ?? '?'}`;
|
||||
|
||||
export const isUnavailableQuoteTarget = (comment?: Partial<Pick<Comment, 'deleted' | 'removed'>> | null) => Boolean(comment?.deleted || comment?.removed);
|
||||
export const getQuoteTargetAvailability = (comment?: Partial<Pick<Comment, 'deleted' | 'removed'>> | null): QuoteTargetAvailability => {
|
||||
if (!comment) {
|
||||
return 'unresolved';
|
||||
}
|
||||
|
||||
return comment.deleted || comment.removed ? 'unavailable' : 'available';
|
||||
};
|
||||
|
||||
export const isUnavailableQuoteTarget = (comment?: Partial<Pick<Comment, 'deleted' | 'removed'>> | null) => getQuoteTargetAvailability(comment) === 'unavailable';
|
||||
|
||||
export const shouldShowFloatingQuotePreview = ({
|
||||
hoveredCid,
|
||||
|
||||
Reference in New Issue
Block a user