summaryrefslogtreecommitdiff
path: root/packages/backend/src/queue
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2024-03-09 12:17:48 +0000
committerdakkar <dakkar@thenautilus.net>2024-03-09 12:51:51 +0000
commit354cb2a6754b55fd3ad01388a4a17d3a76d4a09b (patch)
treecd7040bef28cc321207c4ff15e202f9557c535cd /packages/backend/src/queue
parentmerge: Feature/maybe nicer dockerfile (!463) (diff)
downloadsharkey-354cb2a6754b55fd3ad01388a4a17d3a76d4a09b.tar.gz
sharkey-354cb2a6754b55fd3ad01388a4a17d3a76d4a09b.tar.bz2
sharkey-354cb2a6754b55fd3ad01388a4a17d3a76d4a09b.zip
handle non-ASCII emoji names
* use the more inclusive regexp for validating emoji names * always normalize emoji names, aliases, categories the latter point is necessary to allow matching, for example, `รค` against `a`+combining diaeresis this will also need to bump the version of `sfm-js` once we merge https://activitypub.software/TransFem-org/sfm-js/-/merge_requests/2
Diffstat (limited to 'packages/backend/src/queue')
-rw-r--r--packages/backend/src/queue/processors/ExportCustomEmojisProcessorService.ts2
-rw-r--r--packages/backend/src/queue/processors/ImportCustomEmojisProcessorService.ts13
2 files changed, 8 insertions, 7 deletions
diff --git a/packages/backend/src/queue/processors/ExportCustomEmojisProcessorService.ts b/packages/backend/src/queue/processors/ExportCustomEmojisProcessorService.ts
index e4eb4791bd..45087927a5 100644
--- a/packages/backend/src/queue/processors/ExportCustomEmojisProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportCustomEmojisProcessorService.ts
@@ -85,7 +85,7 @@ export class ExportCustomEmojisProcessorService {
});
for (const emoji of customEmojis) {
- if (!/^[a-zA-Z0-9_]+$/.test(emoji.name)) {
+ if (!/^[\p{Letter}\p{Number}\p{Mark}_+-]+$/u.test(emoji.name)) {
this.logger.error(`invalid emoji name: ${emoji.name}`);
continue;
}
diff --git a/packages/backend/src/queue/processors/ImportCustomEmojisProcessorService.ts b/packages/backend/src/queue/processors/ImportCustomEmojisProcessorService.ts
index 171809d25c..04ad74ee01 100644
--- a/packages/backend/src/queue/processors/ImportCustomEmojisProcessorService.ts
+++ b/packages/backend/src/queue/processors/ImportCustomEmojisProcessorService.ts
@@ -79,13 +79,14 @@ export class ImportCustomEmojisProcessorService {
continue;
}
const emojiInfo = record.emoji;
- if (!/^[a-zA-Z0-9_]+$/.test(emojiInfo.name)) {
- this.logger.error(`invalid emojiname: ${emojiInfo.name}`);
+ const nameNfc = emojiInfo.name.normalize('NFC');
+ if (!/^[\p{Letter}\p{Number}\p{Mark}_+-]+$/u.test(nameNfc)) {
+ this.logger.error(`invalid emojiname: ${nameNfc}`);
continue;
}
const emojiPath = outputPath + '/' + record.fileName;
await this.emojisRepository.delete({
- name: emojiInfo.name,
+ name: nameNfc,
});
const driveFile = await this.driveService.addFile({
user: null,
@@ -94,10 +95,10 @@ export class ImportCustomEmojisProcessorService {
force: true,
});
await this.customEmojiService.add({
- name: emojiInfo.name,
- category: emojiInfo.category,
+ name: nameNfc,
+ category: emojiInfo.category?.normalize('NFC'),
host: null,
- aliases: emojiInfo.aliases,
+ aliases: emojiInfo.aliases?.map((a: string) => a.normalize('NFC')),
driveFile,
license: emojiInfo.license,
isSensitive: emojiInfo.isSensitive,