kopia lustrzana https://github.com/wagtail/wagtail
				
				
				
			Remove use of magic number when retrieving comment ids
							rodzic
							
								
									99b434c6f0
								
							
						
					
					
						commit
						c6817cbb83
					
				| 
						 | 
				
			
			@ -161,9 +161,17 @@ function getCommentControl(commentApp: CommentApp, contentPath: string, fieldNod
 | 
			
		|||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function styleIsComment(style: string | undefined) {
 | 
			
		||||
  return style !== undefined && style.startsWith(COMMENT_STYLE_IDENTIFIER);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getIdForCommentStyle(style: string) {
 | 
			
		||||
  return parseInt(style.slice(COMMENT_STYLE_IDENTIFIER.length), 10);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function findCommentStyleRanges(contentBlock: ContentBlock, callback: (start: number, end: number) => void, filterFn?: (metadata: CharacterMetadata) => boolean) {
 | 
			
		||||
  // Find comment style ranges that do not overlap an existing entity
 | 
			
		||||
  const filterFunction = filterFn || ((metadata: CharacterMetadata) => metadata.getStyle().some((style) => style !== undefined && style.startsWith(COMMENT_STYLE_IDENTIFIER)));
 | 
			
		||||
  const filterFunction = filterFn || ((metadata: CharacterMetadata) => metadata.getStyle().some(styleIsComment));
 | 
			
		||||
  const entityRanges: Array<[number, number]> = [];
 | 
			
		||||
  contentBlock.findEntityRanges(character => character.getEntity() !== null, (start, end) => entityRanges.push([start, end]));
 | 
			
		||||
  contentBlock.findStyleRanges(
 | 
			
		||||
| 
						 | 
				
			
			@ -203,7 +211,7 @@ function getCommentDecorator(commentApp: CommentApp) {
 | 
			
		|||
    const commentId = useMemo(
 | 
			
		||||
      () => {
 | 
			
		||||
        const block = contentState.getBlockForKey(blockKey);
 | 
			
		||||
        const styles = block.getInlineStyleAt(start).filter((style) => style !== undefined && style.startsWith(COMMENT_STYLE_IDENTIFIER)) as Immutable.OrderedSet<string>;
 | 
			
		||||
        const styles = block.getInlineStyleAt(start).filter(styleIsComment) as Immutable.OrderedSet<string>;
 | 
			
		||||
        let styleToUse: string;
 | 
			
		||||
        if (styles.count() > 1) {
 | 
			
		||||
          // We're dealing with overlapping comments.
 | 
			
		||||
| 
						 | 
				
			
			@ -226,7 +234,7 @@ function getCommentDecorator(commentApp: CommentApp) {
 | 
			
		|||
        } else {
 | 
			
		||||
          styleToUse = styles.first();
 | 
			
		||||
        }
 | 
			
		||||
        return parseInt(styleToUse.slice(8), 10);
 | 
			
		||||
        return getIdForCommentStyle(styleToUse);
 | 
			
		||||
      }, [blockKey, start]);
 | 
			
		||||
    const annotationNode = useRef(null);
 | 
			
		||||
    useEffect(() => {
 | 
			
		||||
| 
						 | 
				
			
			@ -434,11 +442,11 @@ function CommentableEditor({
 | 
			
		|||
          // Use of casting in this function is due to issue #1563 in immutable-js, which causes operations like
 | 
			
		||||
          // map and filter to lose type information on the results. It should be fixed in v4: when we upgrade,
 | 
			
		||||
          // this casting should be removed
 | 
			
		||||
          const localCommentStyles = styleSet.filter(style => style !== undefined && style.startsWith(COMMENT_STYLE_IDENTIFIER)) as Immutable.OrderedSet<string>;
 | 
			
		||||
          const localCommentStyles = styleSet.filter(styleIsComment) as Immutable.OrderedSet<string>;
 | 
			
		||||
          const numStyles = localCommentStyles.count();
 | 
			
		||||
          if (numStyles > 0) {
 | 
			
		||||
            // There is at least one comment in the range
 | 
			
		||||
            const commentIds = localCommentStyles.map(style => parseInt((style as string).slice(8), 10)) as unknown as Immutable.OrderedSet<number>;
 | 
			
		||||
            const commentIds = localCommentStyles.map(style => getIdForCommentStyle(style as string)) as unknown as Immutable.OrderedSet<number>;
 | 
			
		||||
            let background = '#01afb0';
 | 
			
		||||
            if (commentIds.has(focusedId)) {
 | 
			
		||||
              // Use the focused colour if one of the comments is focused
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue