From b5ae10193144df51041bd9826cdea0c58f2cc70d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 11 Sep 2023 12:43:02 +0200 Subject: [PATCH] Fix post language detection - In case no language is detected set default. --- .../middleware/languages/languages.spec.ts | 21 +++++++++++++++++++ backend/src/middleware/languages/languages.ts | 12 +++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/backend/src/middleware/languages/languages.spec.ts b/backend/src/middleware/languages/languages.spec.ts index f4f57adc4..8daa311e1 100644 --- a/backend/src/middleware/languages/languages.spec.ts +++ b/backend/src/middleware/languages/languages.spec.ts @@ -131,4 +131,25 @@ describe('languagesMiddleware', () => { }, }) }) + + describe('detects no language', () => { + it('has default language', async () => { + variables = { + ...variables, + content: '', + } + await expect( + mutate({ + mutation: createPostMutation, + variables, + }), + ).resolves.toMatchObject({ + data: { + CreatePost: { + language: 'en', + }, + }, + }) + }) + }) }) diff --git a/backend/src/middleware/languages/languages.ts b/backend/src/middleware/languages/languages.ts index 83d4e424c..3c043ceec 100644 --- a/backend/src/middleware/languages/languages.ts +++ b/backend/src/middleware/languages/languages.ts @@ -1,20 +1,24 @@ import LanguageDetect from 'languagedetect' import { removeHtmlTags } from '../helpers/cleanHtml' -const setPostLanguage = (text) => { +const setPostLanguage = (text, defaultLanguage) => { const lngDetector = new LanguageDetect() lngDetector.setLanguageType('iso2') - return lngDetector.detect(removeHtmlTags(text), 1)[0][0] + let languages = lngDetector.detect(removeHtmlTags(text), 1) + if (!(Array.isArray(languages) && languages.length > 0)) { + languages = [[defaultLanguage, 1.0]] + } + return languages[0][0] } export default { Mutation: { CreatePost: async (resolve, root, args, context, info) => { - args.language = await setPostLanguage(args.content) + args.language = await setPostLanguage(args.content, context.user.locale) return resolve(root, args, context, info) }, UpdatePost: async (resolve, root, args, context, info) => { - args.language = await setPostLanguage(args.content) + args.language = await setPostLanguage(args.content, context.user.locale) return resolve(root, args, context, info) }, },