From dd8cf671c6eeba486a42e6074dcf1d7b270e447c Mon Sep 17 00:00:00 2001 From: Stefan Niedermann Date: Tue, 5 Jan 2021 12:35:58 +0100 Subject: Ensure that internal notes links are not persisted --- .../owncloud/notes/shared/util/NoteLinksUtils.java | 26 ---------- .../notes/shared/util/text/NoteLinksProcessor.java | 57 ---------------------- .../notes/shared/util/text/TextProcessor.java | 10 ---- .../notes/shared/util/text/TextProcessorChain.java | 12 ----- 4 files changed, 105 deletions(-) delete mode 100644 app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteLinksUtils.java delete mode 100644 app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/NoteLinksProcessor.java delete mode 100644 app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/TextProcessor.java delete mode 100644 app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/TextProcessorChain.java (limited to 'app/src/main/java/it/niedermann/owncloud/notes/shared') diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteLinksUtils.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteLinksUtils.java deleted file mode 100644 index 668d2746..00000000 --- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteLinksUtils.java +++ /dev/null @@ -1,26 +0,0 @@ -package it.niedermann.owncloud.notes.shared.util; - -import it.niedermann.owncloud.notes.shared.util.text.NoteLinksProcessor; - -public class NoteLinksUtils { - - /** - * Tests if the given link is a note-link (which was transformed in {@link it.niedermann.owncloud.notes.shared.util.text.NoteLinksProcessor}) or not - * - * @param link Link under test - * @return true if the link is a note-link - */ - public static boolean isNoteLink(String link) { - return link.startsWith(NoteLinksProcessor.RELATIVE_LINK_WORKAROUND_PREFIX); - } - - /** - * Extracts the remoteId back from links that were transformed in {@link it.niedermann.owncloud.notes.shared.util.text.NoteLinksProcessor}. - * - * @param link Link that was transformed in {@link it.niedermann.owncloud.notes.shared.util.text.NoteLinksProcessor} - * @return the remoteId of the linked note - */ - public static long extractNoteRemoteId(String link) { - return Long.parseLong(link.replace(NoteLinksProcessor.RELATIVE_LINK_WORKAROUND_PREFIX, "")); - } -} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/NoteLinksProcessor.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/NoteLinksProcessor.java deleted file mode 100644 index bc656dd8..00000000 --- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/NoteLinksProcessor.java +++ /dev/null @@ -1,57 +0,0 @@ -package it.niedermann.owncloud.notes.shared.util.text; - -import android.text.TextUtils; - -import java.util.HashSet; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import androidx.annotation.VisibleForTesting; - -public class NoteLinksProcessor extends TextProcessor { - - public static final String RELATIVE_LINK_WORKAROUND_PREFIX = "https://nextcloudnotes/notes/"; - - @VisibleForTesting - private static final String linksThatLookLikeNoteLinksRegEx = "\\[[^]]*]\\((\\d+)\\)"; - private static final String replaceNoteRemoteIdsRegEx = "\\[([^\\]]*)\\]\\((%s)\\)"; - - private final Set existingNoteRemoteIds; - - public NoteLinksProcessor(Set existingNoteRemoteIds) { - this.existingNoteRemoteIds = existingNoteRemoteIds; - } - - /** - * Replaces all links to other notes of the form `[]()` - * in the markdown string with links to a dummy url. - * - * Why is this needed? - * See discussion in issue #623 - * - * @return Markdown with all note-links replaced with dummy-url-links - */ - @Override - public String process(String s) { - return replaceNoteLinksWithDummyUrls(s, existingNoteRemoteIds); - } - - private static String replaceNoteLinksWithDummyUrls(String markdown, Set existingNoteRemoteIds) { - Pattern noteLinkCandidates = Pattern.compile(linksThatLookLikeNoteLinksRegEx); - Matcher matcher = noteLinkCandidates.matcher(markdown); - - Set noteRemoteIdsToReplace = new HashSet<>(); - while (matcher.find()) { - String presumedNoteId = matcher.group(1); - if (existingNoteRemoteIds.contains(presumedNoteId)) { - noteRemoteIdsToReplace.add(presumedNoteId); - } - } - - String noteRemoteIdsCondition = TextUtils.join("|", noteRemoteIdsToReplace); - Pattern replacePattern = Pattern.compile(String.format(replaceNoteRemoteIdsRegEx, noteRemoteIdsCondition)); - Matcher replaceMatcher = replacePattern.matcher(markdown); - return replaceMatcher.replaceAll(String.format("[$1](%s$2)", RELATIVE_LINK_WORKAROUND_PREFIX)); - } -} diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/TextProcessor.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/TextProcessor.java deleted file mode 100644 index 4eb4e4f7..00000000 --- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/TextProcessor.java +++ /dev/null @@ -1,10 +0,0 @@ -package it.niedermann.owncloud.notes.shared.util.text; - -abstract public class TextProcessor { - /** - * Applies a specified transformation on a text string and returns the updated string. - * @param s Text to transform - * @return Transformed text - */ - abstract public String process(String s); -} \ No newline at end of file diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/TextProcessorChain.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/TextProcessorChain.java deleted file mode 100644 index 70af737a..00000000 --- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/text/TextProcessorChain.java +++ /dev/null @@ -1,12 +0,0 @@ -package it.niedermann.owncloud.notes.shared.util.text; - -import java.util.LinkedList; - -public class TextProcessorChain extends LinkedList { - public String apply(String s) { - for (TextProcessor textProcessor : this) { - s = textProcessor.process(s); - } - return s; - } -} -- cgit v1.2.3