From d269e9e5973a25f16b4bf9f5fc10614424ceaae1 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sat, 6 Jan 2024 11:59:35 -0500 Subject: [PATCH] reduces some of the huge lines we have. --- .editorconfig | 2 +- .../amethyst/ImageUploadTesting.kt | 50 ++++++++++++++++++- .../amethyst/RichTextParserTest.kt | 22 +++++++- .../com/vitorpamplona/amethyst/CharsetTest.kt | 10 +++- .../amethyst/benchmark/EventBenchmark.kt | 47 +++++++++++++++-- .../com/vitorpamplona/quartz/EventSigCheck.kt | 37 +++++++++++++- 6 files changed, 158 insertions(+), 10 deletions(-) diff --git a/.editorconfig b/.editorconfig index cd20d5dcf..638dbbf25 100644 --- a/.editorconfig +++ b/.editorconfig @@ -5,7 +5,7 @@ charset = utf-8 trim_trailing_whitespace = true [*.{kt,kts}] -max_line_length = 9000 +max_line_length = 5000 ij_kotlin_allow_trailing_comma=true ij_kotlin_allow_trailing_comma_on_call_site=true ktlint_function_naming_ignore_when_annotated_with=Composable, Test diff --git a/app/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt b/app/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt index fa6e9dcae..d9d10c024 100644 --- a/app/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt +++ b/app/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt @@ -41,11 +41,57 @@ import java.util.Base64 class ImageUploadTesting { val contentType = "image/gif" val image = - "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" + + "rhGSQJxCS+0pCZbEhAAOw==" val contentTypePng = "image/png" val imagePng = - "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" + + "hZ3kvgLI5AzFfo379UAAAAASUVORK5CYII=" private suspend fun testBase(server: Nip96MediaServers.ServerName) { val serverInfo = diff --git a/app/src/androidTest/java/com/vitorpamplona/amethyst/RichTextParserTest.kt b/app/src/androidTest/java/com/vitorpamplona/amethyst/RichTextParserTest.kt index 6ce7ea618..711b7c420 100644 --- a/app/src/androidTest/java/com/vitorpamplona/amethyst/RichTextParserTest.kt +++ b/app/src/androidTest/java/com/vitorpamplona/amethyst/RichTextParserTest.kt @@ -919,7 +919,27 @@ class RichTextParserTest { "RegularText()", "RegularText(Emoji sentiment today)", "RegularText()", - "RegularText(โšก (1.6K) ๐Ÿ‘‰ (1.4K) ๐Ÿ‡ช๐Ÿ‡บ (1.2K) ๐Ÿซ‚ (1.2K) ๐Ÿ‡บ๐Ÿ‡ธ (1.1K) ๐Ÿ’œ (875) ๐Ÿง  (858) ๐Ÿ˜‚ (830) ๐Ÿ”ฅ (690) ๐Ÿคฃ (566) ๐Ÿค™ (525) โ˜• (444) ๐Ÿ‘‡ (443) ๐Ÿ™Œ๐Ÿป (425) โ˜€ (307) ๐Ÿ˜Ž (305) ๐Ÿฅณ (301) ๐Ÿค” (276) ๐ŸŒป (270) ๐Ÿงก (270) ๐Ÿฅ‡ (269) ๐Ÿ—“ (269) ๐Ÿ™ (268) ๐Ÿ† (267) ๐ŸŒฑ (264) ๐Ÿ“ฐ (230) ๐Ÿ‰ (221) ๐Ÿ˜ญ (220) ๐Ÿ’ฐ (219) ๐Ÿ”— (209) ๐Ÿ‘€ (201) ๐Ÿ˜… (199) โœจ (193) ๐Ÿ‡ท๐Ÿ‡บ (182) ๐Ÿ’ช (167) โœ… (164) ๐Ÿ’ค (163) ๐Ÿถ (151) ๐Ÿ‡จ๐Ÿ‡ญ (141) ๐Ÿ“ (137) ๐Ÿ˜ (136) ๐ŸŒž (136) ๐Ÿพ (136) โค (132) ๐Ÿ’ป (126) ๐Ÿš€ (125) ๐Ÿ‘ (125) ๐Ÿ‡ง๐Ÿ‡ท (125) ๐Ÿ˜Š (121) ๐Ÿ“š (120) โžก (120) ๐Ÿ‘ (118) ๐ŸŽ‰ (117) ๐ŸŽฎ (115) ๐Ÿคท (113) ๐Ÿ‘‹ (112) ๐Ÿ’ƒ (108) ๐Ÿ•บ๐Ÿป (106) ๐Ÿ’ก (104) ๐Ÿšจ (99) ๐Ÿ˜† (97) ๐Ÿ’ฏ (95) โš  (92) ๐Ÿ“ข (92) ๐Ÿค— (89) ๐Ÿ˜ด (87) ๐Ÿ” (83) ๐Ÿฐ (81) ๐Ÿ˜€ (79) ๐ŸŽŸ (78) โ› (78) ๐Ÿฆ (76) ๐Ÿ’ธ (76) โœŒ๐Ÿป (75) ๐Ÿค (73) ๐Ÿ‡ฌ๐Ÿ‡ง (73) ๐ŸŒฝ (70) ๐Ÿคก (69) ๐Ÿคฎ (69) โ— (66) ๐Ÿค (65) ๐Ÿ˜‰ (65) ๐Ÿ™‡ (65) ๐Ÿป (64) ๐ŸŒ (64) ๐Ÿ’• (63) ๐ŸŒธ (62) ๐Ÿ’ฌ (61) โ˜บ (61) ๐Ÿ‡ฆ๐Ÿ‡ท (59) ๐Ÿ‡ฎ๐Ÿ‡ฉ (57) ๐Ÿ˜ณ (57) ๐Ÿ˜„ (57) ๐ŸŽถ (57) ๐Ÿฅท๐Ÿป (56) ๐ŸŽต (56) ๐Ÿ˜ƒ (56) ๐Ÿ” (55) ๐Ÿ’ฅ (55) ๐ŸŽฒ (54) โœ (54) ๐Ÿ•’ (53) โฌ‡ (53) ๐Ÿ’™ (51) ๐Ÿ”’ (50) ๐Ÿ“ˆ (50) ๐Ÿช™ (50) ๐ŸŒง (50) ๐Ÿฅฐ (50) ๐Ÿ•ธ (50) ๐ŸŒ (50) ๐Ÿ’ญ (49) ๐ŸŒ™ (49) ๐Ÿ˜ (49) ๐Ÿ“ฑ (48) ๐ŸŒŸ (48) ๐Ÿคฉ (48) ๐Ÿ’” (47) ๐Ÿ”Œ (47) ๐Ÿ˜‹ (47) ๐ŸŽ– (47) ๐Ÿฃ (46) ๐Ÿ“ท (46) ๐Ÿ’ผ (45) โญ (45) ๐Ÿฅ” (45) ๐Ÿฅบ (45) ๐Ÿ‘Œ (44) ๐Ÿ‘ท๐Ÿผ (43) ๐Ÿ˜ฑ (43) ๐Ÿ“… (43) ๐Ÿค– (43) ๐Ÿ“ธ (42) ๐Ÿ“Š (42) ๐Ÿฆ‘ (40) ๐Ÿ’ต (40) ๐Ÿคฆ (39) โฃ (38) ๐Ÿ’Ž (38) ๐Ÿ–ค (38) ๐Ÿ“บ (37) ๐Ÿ‡ต๐Ÿ‡ฑ (37) ๐Ÿ‡ฏ๐Ÿ‡ต (36) ๐Ÿ”ง (36) ๐Ÿค˜ (36) ๐Ÿ’– (36) โ€ผ (35) ๐Ÿ˜ข (35) ๐Ÿ˜บ (34) ๐Ÿ”Š (34) ๐Ÿ˜ (34) ๐Ÿ‡ธ๐Ÿ‡ฐ (34) ๐Ÿƒ (34) ๐Ÿ‘ฉโ€๐Ÿ‘ง (34) โฐ (33) ๐Ÿ‘จโ€๐Ÿ’ป (33) ๐Ÿ‘‘ (33) ๐Ÿ‘ฅ (32) ๐Ÿ–ฅ (32) ๐Ÿ’จ (32) ๐Ÿ’— (31) ๐Ÿ‡ฒ๐Ÿ‡ฝ (31) ๐Ÿ“– (31) ๐Ÿšซ (31) ๐Ÿ‘Š๐Ÿป (31) ๐Ÿ˜ก (31) ๐ŸŒŽ (31) ๐Ÿ‘ (30) ๐Ÿ—ž (30) ๐Ÿ€ (30) ๐Ÿฝ (29) ๐Ÿธ (29) ๐Ÿฅš (29) ๐Ÿ’ฉ (29) โœŠ๐Ÿพ (29) ๐Ÿ˜ฎ (29) ๐ŸŒก (29) ๐Ÿ™ƒ (28) ๐Ÿ”” (28) ๐Ÿ‡ป๐Ÿ‡ช (28) ๐Ÿ’ฆ (28) ๐ŸŽฏ (28) ๐ŸŽจ (28) ๐Ÿ› (28) ๐Ÿ–ผ (27) โ˜๐Ÿป (27) ๐Ÿ›‘ (27) ๐Ÿ™„ (27) ๐Ÿง‘๐Ÿปโ€๐Ÿคโ€๐Ÿง‘๐Ÿฝ (27) ๐ŸŒˆ (27) ๐Ÿฅ‚ (26) ๐Ÿ‡ซ๐Ÿ‡ฎ (26) ๐ŸŽฅ (26) ๐Ÿ˜ฌ (26) ๐Ÿฅฒ (25) ๐Ÿฆพ (24) ๐Ÿคœ (24) ๐Ÿ™‚ (24) ๐Ÿ–• (24) ๐Ÿ˜ฉ (24) )", + "RegularText(โšก (1.6K) ๐Ÿ‘‰ (1.4K) ๐Ÿ‡ช๐Ÿ‡บ (1.2K) ๐Ÿซ‚ (1.2K) ๐Ÿ‡บ๐Ÿ‡ธ (1.1K) ๐Ÿ’œ (875) ๐Ÿง  (858) ๐Ÿ˜‚ (830) " + + "๐Ÿ”ฅ (690) ๐Ÿคฃ (566) ๐Ÿค™ (525) โ˜• (444) ๐Ÿ‘‡ (443) ๐Ÿ™Œ๐Ÿป (425) โ˜€ (307) ๐Ÿ˜Ž (305) ๐Ÿฅณ (301) " + + "๐Ÿค” (276) ๐ŸŒป (270) ๐Ÿงก (270) ๐Ÿฅ‡ (269) ๐Ÿ—“ (269) ๐Ÿ™ (268) ๐Ÿ† (267) ๐ŸŒฑ (264) ๐Ÿ“ฐ (230)" + + " ๐Ÿ‰ (221) ๐Ÿ˜ญ (220) ๐Ÿ’ฐ (219) ๐Ÿ”— (209) ๐Ÿ‘€ (201) ๐Ÿ˜… (199) โœจ (193) ๐Ÿ‡ท๐Ÿ‡บ (182) ๐Ÿ’ช (167)" + + " โœ… (164) ๐Ÿ’ค (163) ๐Ÿถ (151) ๐Ÿ‡จ๐Ÿ‡ญ (141) ๐Ÿ“ (137) ๐Ÿ˜ (136) ๐ŸŒž (136) ๐Ÿพ (136) โค (132) " + + "๐Ÿ’ป (126) ๐Ÿš€ (125) ๐Ÿ‘ (125) ๐Ÿ‡ง๐Ÿ‡ท (125) ๐Ÿ˜Š (121) ๐Ÿ“š (120) โžก (120) ๐Ÿ‘ (118) ๐ŸŽ‰ (117) " + + "๐ŸŽฎ (115) ๐Ÿคท (113) ๐Ÿ‘‹ (112) ๐Ÿ’ƒ (108) ๐Ÿ•บ๐Ÿป (106) ๐Ÿ’ก (104) ๐Ÿšจ (99) ๐Ÿ˜† (97) ๐Ÿ’ฏ (95) โš  (92) " + + "๐Ÿ“ข (92) ๐Ÿค— (89) ๐Ÿ˜ด (87) ๐Ÿ” (83) ๐Ÿฐ (81) ๐Ÿ˜€ (79) ๐ŸŽŸ (78) โ› (78) ๐Ÿฆ (76) ๐Ÿ’ธ (76) " + + "โœŒ๐Ÿป (75) ๐Ÿค (73) ๐Ÿ‡ฌ๐Ÿ‡ง (73) ๐ŸŒฝ (70) ๐Ÿคก (69) ๐Ÿคฎ (69) โ— (66) ๐Ÿค (65) ๐Ÿ˜‰ (65) ๐Ÿ™‡ (65) " + + "๐Ÿป (64) ๐ŸŒ (64) ๐Ÿ’• (63) ๐ŸŒธ (62) ๐Ÿ’ฌ (61) โ˜บ (61) ๐Ÿ‡ฆ๐Ÿ‡ท (59) ๐Ÿ‡ฎ๐Ÿ‡ฉ (57) ๐Ÿ˜ณ (57) ๐Ÿ˜„ (57) " + + "๐ŸŽถ (57) ๐Ÿฅท๐Ÿป (56) ๐ŸŽต (56) ๐Ÿ˜ƒ (56) ๐Ÿ” (55) ๐Ÿ’ฅ (55) ๐ŸŽฒ (54) โœ (54) ๐Ÿ•’ (53) โฌ‡ (53) " + + "๐Ÿ’™ (51) ๐Ÿ”’ (50) ๐Ÿ“ˆ (50) ๐Ÿช™ (50) ๐ŸŒง (50) ๐Ÿฅฐ (50) ๐Ÿ•ธ (50) ๐ŸŒ (50) ๐Ÿ’ญ (49) ๐ŸŒ™ (49) " + + "๐Ÿ˜ (49) ๐Ÿ“ฑ (48) ๐ŸŒŸ (48) ๐Ÿคฉ (48) ๐Ÿ’” (47) ๐Ÿ”Œ (47) ๐Ÿ˜‹ (47) ๐ŸŽ– (47) ๐Ÿฃ (46) ๐Ÿ“ท (46) " + + "๐Ÿ’ผ (45) โญ (45) ๐Ÿฅ” (45) ๐Ÿฅบ (45) ๐Ÿ‘Œ (44) ๐Ÿ‘ท๐Ÿผ (43) ๐Ÿ˜ฑ (43) ๐Ÿ“… (43) ๐Ÿค– (43) ๐Ÿ“ธ (42) " + + "๐Ÿ“Š (42) ๐Ÿฆ‘ (40) ๐Ÿ’ต (40) ๐Ÿคฆ (39) โฃ (38) ๐Ÿ’Ž (38) ๐Ÿ–ค (38) ๐Ÿ“บ (37) ๐Ÿ‡ต๐Ÿ‡ฑ (37) ๐Ÿ‡ฏ๐Ÿ‡ต (36) " + + "๐Ÿ”ง (36) ๐Ÿค˜ (36) ๐Ÿ’– (36) โ€ผ (35) ๐Ÿ˜ข (35) ๐Ÿ˜บ (34) ๐Ÿ”Š (34) ๐Ÿ˜ (34) ๐Ÿ‡ธ๐Ÿ‡ฐ (34) ๐Ÿƒ (34) " + + "๐Ÿ‘ฉโ€๐Ÿ‘ง (34) โฐ (33) ๐Ÿ‘จโ€๐Ÿ’ป (33) ๐Ÿ‘‘ (33) ๐Ÿ‘ฅ (32) ๐Ÿ–ฅ (32) ๐Ÿ’จ (32) ๐Ÿ’— (31) ๐Ÿ‡ฒ๐Ÿ‡ฝ (31) ๐Ÿ“– (31) " + + "๐Ÿšซ (31) ๐Ÿ‘Š๐Ÿป (31) ๐Ÿ˜ก (31) ๐ŸŒŽ (31) ๐Ÿ‘ (30) ๐Ÿ—ž (30) ๐Ÿ€ (30) ๐Ÿฝ (29) ๐Ÿธ (29) ๐Ÿฅš (29) " + + "๐Ÿ’ฉ (29) โœŠ๐Ÿพ (29) ๐Ÿ˜ฎ (29) ๐ŸŒก (29) ๐Ÿ™ƒ (28) ๐Ÿ”” (28) ๐Ÿ‡ป๐Ÿ‡ช (28) ๐Ÿ’ฆ (28) ๐ŸŽฏ (28) ๐ŸŽจ (28) " + + "๐Ÿ› (28) ๐Ÿ–ผ (27) โ˜๐Ÿป (27) ๐Ÿ›‘ (27) ๐Ÿ™„ (27) ๐Ÿง‘๐Ÿปโ€๐Ÿคโ€๐Ÿง‘๐Ÿฝ (27) ๐ŸŒˆ (27) ๐Ÿฅ‚ (26) ๐Ÿ‡ซ๐Ÿ‡ฎ (26) ๐ŸŽฅ (26) " + + "๐Ÿ˜ฌ (26) ๐Ÿฅฒ (25) ๐Ÿฆพ (24) ๐Ÿคœ (24) ๐Ÿ™‚ (24) ๐Ÿ–• (24) ๐Ÿ˜ฉ (24) )", "RegularText()", "RegularText(Zap economy)", "RegularText()", diff --git a/app/src/test/java/com/vitorpamplona/amethyst/CharsetTest.kt b/app/src/test/java/com/vitorpamplona/amethyst/CharsetTest.kt index 84c92f23c..311ddb9f3 100644 --- a/app/src/test/java/com/vitorpamplona/amethyst/CharsetTest.kt +++ b/app/src/test/java/com/vitorpamplona/amethyst/CharsetTest.kt @@ -96,7 +96,15 @@ class CharsetTest { fun testMultipleEmoji() { Assert.assertEquals( "\uD83E\uDEC2\uD83E\uDEC2", - "\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2" + ( + "\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2" + + "\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E" + + "\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2" + + "\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E" + + "\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2" + + "\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E\uDEC2\uD83E" + + "\uDEC2\uD83E\uDEC2" + ) .firstFullChar(), ) } diff --git a/benchmark/src/androidTest/java/com/vitorpamplona/amethyst/benchmark/EventBenchmark.kt b/benchmark/src/androidTest/java/com/vitorpamplona/amethyst/benchmark/EventBenchmark.kt index 8dd355168..ddfbb0fd8 100644 --- a/benchmark/src/androidTest/java/com/vitorpamplona/amethyst/benchmark/EventBenchmark.kt +++ b/benchmark/src/androidTest/java/com/vitorpamplona/amethyst/benchmark/EventBenchmark.kt @@ -40,12 +40,51 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class EventBenchmark { val payload1 = - "[\"EVENT\",\"40b9\",{\"id\":\"48a72b485d38338627ec9d427583551f9af4f016c739b8ec0d6313540a8b12cf\",\"kind\":1,\"pubkey\":\"3d842afecd5e293f28b6627933704a3fb8ce153aa91d790ab11f6a752d44a42d\",\"created_at\":1677940007,\"content\":\"I got asked about follower count again today. Why does my follower count go down when I delete public relays (in our list) and replace them with filter.nostr.wine? \\n\\nIโ€™ll give you one final explanation to rule them all. First, letโ€™s go over how clients calculate your follower count.\\n\\n1. Your client sends a request to all your connected relays asking for accounts who follow you\\n2. Relays answer back with the events requested\\n3. The client aggregates the event total and displays it\\n\\nEach relay has a set limit on how many stored events it will return per request. For some relays itโ€™s 500, others 1000, some as high as 5000. Letโ€™s say for simplicity that all your public relays use 500 as their limit. If you ask 10 relays for your followers the max possible answer you can get is 5000. That wonโ€™t change if you have 20,000 followers or 100,000. You may get back a โ€œdifferentโ€ 5000 each time, but youโ€™ll still cap out at 5000 because that is the most events your client will receive.\u2028\u2028Our limit on filter.nostr.wine is 2000 events. If you replace 10 public relays with only filter.nostr.wine, the MOST followers you will ever get back from our filter relay is 2000. That doesnโ€™t mean you only have 2000 followers or that your reach is reduced in any way.\\n\\nAs long as you are writing to and reading from the same public relays, neither your reach nor any content was lost. That concludes my TED talk. I hope you all have a fantastic day and weekend.\",\"tags\":[],\"sig\":\"dcaf8ab98bb9179017b35bd814092850d1062b26c263dff89fb1ae8c019a324139d1729012d9d05ff0a517f76b1117d869b2cc7d36bea8aa5f4b94c5e2548aa8\"}]" + """[ + "EVENT", + "40b9", + { + "id":"48a72b485d38338627ec9d427583551f9af4f016c739b8ec0d6313540a8b12cf", + "kind":1, + "pubkey":"3d842afecd5e293f28b6627933704a3fb8ce153aa91d790ab11f6a752d44a42d", + "created_at":1677940007, + "content":"I got asked about follower count again today. Why does my follower + count go down when I delete public relays (in our list) and replace them with + filter.nostr.wine? \\n\\nIโ€™ll give you one final explanation to rule them all. + First, letโ€™s go over how clients calculate your follower count.\\n\\n1. Your + client sends a request to all your connected relays asking for accounts who + follow you\\n2. Relays answer back with the events requested\\n3. The client + aggregates the event total and displays it\\n\\nEach relay has a set limit on + how many stored events it will return per request. For some relays itโ€™s 500, + others 1000, some as high as 5000. Letโ€™s say for simplicity that all your + public relays use 500 as their limit. If you ask 10 relays for your followers + the max possible answer you can get is 5000. That wonโ€™t change if you have + 20,000 followers or 100,000. You may get back a โ€œdifferentโ€ 5000 each time, + but youโ€™ll still cap out at 5000 because that is the most events your client + will receive.\u2028\u2028Our limit on filter.nostr.wine is 2000 events. If you + replace 10 public relays with only filter.nostr.wine, the MOST followers you + will ever get back from our filter relay is 2000. That doesnโ€™t mean you only + have 2000 followers or that your reach is reduced in any way.\\n\\nAs long as + you are writing to and reading from the same public relays, neither your reach + nor any content was lost. That concludes my TED talk. I hope you all have a + fantastic day and weekend.", + "tags":[ + + ], + "sig":"dcaf8ab98bb9179017b35bd814092850d1062b26c263dff89fb1ae8c019a324139d1729012d9d05ff0a517f76b1117d869b2cc7d36bea8aa5f4b94c5e2548aa8" + } +]""" val payload2 = - """ - { - "content": "Astral:\n\nhttps://void.cat/d/A5Fba5B1bcxwEmeyoD9nBs.webp\n\nIris:\n\nhttps://void.cat/d/44hTcVvhRps6xYYs99QsqA.webp\n\nSnort:\n\nhttps://void.cat/d/4nJD5TRePuQChM5tzteYbU.webp\n\nAmethyst agrees with Astral which I suspect are both wrong. nostr:npub13sx6fp3pxq5rl70x0kyfmunyzaa9pzt5utltjm0p8xqyafndv95q3saapa nostr:npub1v0lxxxxutpvrelsksy8cdhgfux9l6a42hsj2qzquu2zk7vc9qnkszrqj49 nostr:npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk nostr:npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z ", + """{ + "content": "Astral:\n\nhttps://void.cat/d/A5Fba5B1bcxwEmeyoD9nBs.webp\n\n + Iris:\n\nhttps://void.cat/d/44hTcVvhRps6xYYs99QsqA.webp\n\n + Snort:\n\nhttps://void.cat/d/4nJD5TRePuQChM5tzteYbU.webp\n\n + Amethyst agrees with Astral which I suspect are both wrong. + nostr:npub13sx6fp3pxq5rl70x0kyfmunyzaa9pzt5utltjm0p8xqyafndv95q3saapa + nostr:npub1v0lxxxxutpvrelsksy8cdhgfux9l6a42hsj2qzquu2zk7vc9qnkszrqj49 + nostr:npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk + nostr:npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z ", "created_at": 1683596206, "id": "98b574c3527f0ffb30b7271084e3f07480733c7289f8de424d29eae82e36c758", "kind": 1, diff --git a/quartz/src/androidTest/java/com/vitorpamplona/quartz/EventSigCheck.kt b/quartz/src/androidTest/java/com/vitorpamplona/quartz/EventSigCheck.kt index d04714779..52aefb577 100644 --- a/quartz/src/androidTest/java/com/vitorpamplona/quartz/EventSigCheck.kt +++ b/quartz/src/androidTest/java/com/vitorpamplona/quartz/EventSigCheck.kt @@ -28,7 +28,42 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class EventSigCheck { val payload1 = - "[\"EVENT\",\"40b9\",{\"id\":\"48a72b485d38338627ec9d427583551f9af4f016c739b8ec0d6313540a8b12cf\",\"kind\":1,\"pubkey\":\"3d842afecd5e293f28b6627933704a3fb8ce153aa91d790ab11f6a752d44a42d\",\"created_at\":1677940007,\"content\":\"I got asked about follower count again today. Why does my follower count go down when I delete public relays (in our list) and replace them with filter.nostr.wine? \\n\\nIโ€™ll give you one final explanation to rule them all. First, letโ€™s go over how clients calculate your follower count.\\n\\n1. Your client sends a request to all your connected relays asking for accounts who follow you\\n2. Relays answer back with the events requested\\n3. The client aggregates the event total and displays it\\n\\nEach relay has a set limit on how many stored events it will return per request. For some relays itโ€™s 500, others 1000, some as high as 5000. Letโ€™s say for simplicity that all your public relays use 500 as their limit. If you ask 10 relays for your followers the max possible answer you can get is 5000. That wonโ€™t change if you have 20,000 followers or 100,000. You may get back a โ€œdifferentโ€ 5000 each time, but youโ€™ll still cap out at 5000 because that is the most events your client will receive.\u2028\u2028Our limit on filter.nostr.wine is 2000 events. If you replace 10 public relays with only filter.nostr.wine, the MOST followers you will ever get back from our filter relay is 2000. That doesnโ€™t mean you only have 2000 followers or that your reach is reduced in any way.\\n\\nAs long as you are writing to and reading from the same public relays, neither your reach nor any content was lost. That concludes my TED talk. I hope you all have a fantastic day and weekend.\",\"tags\":[],\"sig\":\"dcaf8ab98bb9179017b35bd814092850d1062b26c263dff89fb1ae8c019a324139d1729012d9d05ff0a517f76b1117d869b2cc7d36bea8aa5f4b94c5e2548aa8\"}]" + """ +[ + "EVENT", + "40b9", + { + "id":"48a72b485d38338627ec9d427583551f9af4f016c739b8ec0d6313540a8b12cf", + "kind":1, + "pubkey":"3d842afecd5e293f28b6627933704a3fb8ce153aa91d790ab11f6a752d44a42d", + "created_at":1677940007, + "content":"I got asked about follower count again today. Why does my follower + count go down when I delete public relays (in our list) and replace them with + filter.nostr.wine? \\n\\nIโ€™ll give you one final explanation to rule them all. + First, letโ€™s go over how clients calculate your follower count.\\n\\n1. Your + client sends a request to all your connected relays asking for accounts who + follow you\\n2. Relays answer back with the events requested\\n3. The client + aggregates the event total and displays it\\n\\nEach relay has a set limit on + how many stored events it will return per request. For some relays itโ€™s 500, + others 1000, some as high as 5000. Letโ€™s say for simplicity that all your + public relays use 500 as their limit. If you ask 10 relays for your followers + the max possible answer you can get is 5000. That wonโ€™t change if you have + 20,000 followers or 100,000. You may get back a โ€œdifferentโ€ 5000 each time, + but youโ€™ll still cap out at 5000 because that is the most events your client + will receive.\u2028\u2028Our limit on filter.nostr.wine is 2000 events. If you + replace 10 public relays with only filter.nostr.wine, the MOST followers you + will ever get back from our filter relay is 2000. That doesnโ€™t mean you only + have 2000 followers or that your reach is reduced in any way.\\n\\nAs long as + you are writing to and reading from the same public relays, neither your reach + nor any content was lost. That concludes my TED talk. I hope you all have a + fantastic day and weekend.", + "tags":[ + + ], + "sig":"dcaf8ab98bb9179017b35bd814092850d1062b26c263dff89fb1ae8c019a324139d1729012d9d05ff0a517f76b1117d869b2cc7d36bea8aa5f4b94c5e2548aa8" + } +] + """ @Test fun testUnicode2028and2029ShouldNotBeEscaped() {