Changeset 18824 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2023-09-07T19:36:52+02:00 (2 years ago)
Author:
taylor.smock
Message:

Fix #23153: Remote Control API call is adding hashtags many times

This occurs due to adding the hashtags to the comment multiple times.

This is fixed by doing the following:
1) When finding hashtags from a comment, only return the distinct hashtags
2) When adding hashtags from the dataset, only add hashtags that are not already

part of the comment.

Location:
trunk/src/org/openstreetmap/josm/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/io/UploadDialogModel.java

    r18801 r18824  
    7676     */
    7777    String findHashTags(String comment) {
    78         String hashtags = Arrays.stream(comment.split("\\s", -1))
     78        String foundHashtags = Arrays.stream(comment.split("\\s", -1))
    7979            .map(s -> Utils.strip(s, ",;"))
    8080            .filter(s -> s.matches("#[a-zA-Z0-9][-_a-zA-Z0-9]+"))
    81             .collect(Collectors.joining(";"));
    82         return hashtags.isEmpty() ? null : hashtags;
     81            .distinct().collect(Collectors.joining(";"));
     82        return foundHashtags.isEmpty() ? null : foundHashtags;
    8383    }
    8484
     
    9696                Set<String> sanitizedHashtags = new LinkedHashSet<>();
    9797                for (String hashtag : hashtags.split(";", -1)) {
    98                     sanitizedHashtags.add(hashtag.startsWith("#") ? hashtag : "#" + hashtag);
     98                    if (comment == null || !comment.contains(hashtag)) {
     99                        sanitizedHashtags.add(hashtag.startsWith("#") ? hashtag : "#" + hashtag);
     100                    }
    99101                }
    100102                if (!sanitizedHashtags.isEmpty()) {
     
    108110    /**
    109111     * Inserts/updates/deletes a tag.
    110      *
     112     * <p>
    111113     * Existing keys are updated. Others are added. A value of {@code null}
    112114     * deletes the key.
     
    131133    /**
    132134     * Inserts/updates/deletes a tag.
    133      *
     135     * <p>
    134136     * Existing keys are updated. Others are added. A value of {@code null}
    135137     * deletes the key.
     
    147149    /**
    148150     * Inserts/updates/deletes all tags from {@code map}.
    149      *
     151     * <p>
    150152     * Existing keys are updated. Others are added. A value of {@code null}
    151153     * deletes the key.
  • trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java

    r18823 r18824  
    2020import java.util.Set;
    2121import java.util.regex.Pattern;
    22 import java.util.stream.Collectors;
    2322
    2423import javax.swing.AbstractAction;
Note: See TracChangeset for help on using the changeset viewer.