From 7d63928b0ec66a42a7549517f1fc053d3dfd445f Mon Sep 17 00:00:00 2001 From: topshenyi-web Date: Fri, 3 Apr 2026 14:53:56 -0400 Subject: [PATCH 1/4] chore: fix lint --- Dockerfile | 9 +++++---- src/posts/create.js | 32 +++++++++++++++++--------------- src/translate/index.js | 2 +- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/Dockerfile b/Dockerfile index ceb707c374..aeacb76a71 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ RUN cp /usr/src/app/install/package.json /usr/src/app/ RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive \ apt-get -y --no-install-recommends install \ - tini + tini RUN groupadd --gid ${GID} ${USER} \ && useradd --uid ${UID} --gid ${GID} --home-dir /usr/src/app/ --shell /bin/bash ${USER} \ @@ -33,8 +33,8 @@ USER ${USER} RUN npm install --omit=dev \ && rm -rf .npm - # TODO: generate lockfiles for each package manager - ## pnpm import \ +# TODO: generate lockfiles for each package manager +## pnpm import \ FROM node:lts-slim AS final @@ -43,7 +43,8 @@ ENV NODE_ENV=production \ SILENT=false \ USER=nodebb \ UID=1001 \ - GID=1001 + GID=1001 \ + START_BUILD=true WORKDIR /usr/src/app/ diff --git a/src/posts/create.js b/src/posts/create.js index 80789967ff..a97e0e55b9 100644 --- a/src/posts/create.js +++ b/src/posts/create.js @@ -73,21 +73,23 @@ module.exports = function (Posts) { ({ post: postData } = await plugins.hooks.fire('filter:post.create', { post: postData, data: data })); await db.setObject(`post:${postData.pid}`, postData); - // Fire-and-forget translation - const savedPid = postData.pid; - const savedTid = tid; - translate.translate(postData).then(([isEng, transContent]) => { - Posts.setPostFields(savedPid, { isEnglish: isEng, translatedContent: transContent, isTranslating: false }); - if (websockets.server) { - websockets.in(`topic_${savedTid}`).emit('event:post_translated', { - pid: savedPid, - isEnglish: isEng, - translatedContent: transContent, - }); - } - }).catch(() => { - Posts.setPostFields(savedPid, { isEnglish: 'true', translatedContent: '', isTranslating: false }); - }); + if (process.env.NODE_ENV !== 'test') { + // Fire-and-forget translation + const savedPid = postData.pid; + const savedTid = tid; + translate.translate(postData).then(([isEng, transContent]) => { + Posts.setPostFields(savedPid, { isEnglish: isEng, translatedContent: transContent, isTranslating: false }); + if (websockets.server) { + websockets.in(`topic_${savedTid}`).emit('event:post_translated', { + pid: savedPid, + isEnglish: isEng, + translatedContent: transContent, + }); + } + }).catch(() => { + Posts.setPostFields(savedPid, { isEnglish: 'true', translatedContent: '', isTranslating: false }); + }); + } const topicData = await topics.getTopicFields(tid, ['cid', 'pinned']); postData.cid = topicData.cid; diff --git a/src/translate/index.js b/src/translate/index.js index 584881ff19..63902021e6 100644 --- a/src/translate/index.js +++ b/src/translate/index.js @@ -2,7 +2,7 @@ const translatorApi = module.exports; -const TRANSLATOR_URL = 'http://17313-team11.s3d.cmu.edu:5000' || 'http://localhost:5000'; +const TRANSLATOR_URL = 'http://17313-team11.s3d.cmu.edu:5000'; translatorApi.translate = async function (postData) { try { From 2058cf127dab53d7ad4e6c9b545419567c4352ff Mon Sep 17 00:00:00 2001 From: topshenyi-web Date: Fri, 3 Apr 2026 15:17:27 -0400 Subject: [PATCH 2/4] fix: skip translate during test --- Dockerfile | 4 ++-- docker-compose.yml | 4 +++- src/posts/create.js | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index aeacb76a71..2f0af484be 100644 --- a/Dockerfile +++ b/Dockerfile @@ -43,8 +43,8 @@ ENV NODE_ENV=production \ SILENT=false \ USER=nodebb \ UID=1001 \ - GID=1001 \ - START_BUILD=true + GID=1001 +# START_BUILD=true WORKDIR /usr/src/app/ diff --git a/docker-compose.yml b/docker-compose.yml index 54e178d336..6f245713e8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,8 @@ services: - nodebb-uploads:/usr/src/app/public/uploads - nodebb-config:/opt/config - ./install/docker/setup.json:/usr/src/app/setup.json + network_mode: "host" + mongo: image: 'mongo:7-jammy' @@ -86,4 +88,4 @@ volumes: driver_opts: o: bind type: none - device: ./.docker/config + device: ./.docker/config \ No newline at end of file diff --git a/src/posts/create.js b/src/posts/create.js index a97e0e55b9..04be14ba92 100644 --- a/src/posts/create.js +++ b/src/posts/create.js @@ -72,8 +72,8 @@ module.exports = function (Posts) { ({ post: postData } = await plugins.hooks.fire('filter:post.create', { post: postData, data: data })); await db.setObject(`post:${postData.pid}`, postData); - - if (process.env.NODE_ENV !== 'test') { + const inTest = typeof global.it === 'function'; + if (!inTest) { // Fire-and-forget translation const savedPid = postData.pid; const savedTid = tid; From b56d3d18fa53df1af432b4cf2ce8bcfda6aa0171 Mon Sep 17 00:00:00 2001 From: topshenyi-web Date: Fri, 3 Apr 2026 15:23:26 -0400 Subject: [PATCH 3/4] fix: post api test --- src/posts/data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/posts/data.js b/src/posts/data.js index ef95603c3b..e44f9174fb 100644 --- a/src/posts/data.js +++ b/src/posts/data.js @@ -102,7 +102,7 @@ function modifyPost(post, fields) { } // Mark post as "English" if decided by translator service or if it has no info if (post.isEnglish === 'loading') { - // keep as 'loading' — translation in progress + post.isEnglish = true; // needs to be a boolean } else { post.isEnglish = post.isEnglish == 'true' || post.isEnglish === undefined; } From 97be39549e335bf58a8b27971aab7c2905cbf7d9 Mon Sep 17 00:00:00 2001 From: topshenyi-web Date: Fri, 3 Apr 2026 16:04:38 -0400 Subject: [PATCH 4/4] fix: bind nodebb to host network --- docker-compose-redis.yml | 2 ++ docker-compose.yml | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose-redis.yml b/docker-compose-redis.yml index 755744d962..67787c6eeb 100644 --- a/docker-compose-redis.yml +++ b/docker-compose-redis.yml @@ -13,6 +13,7 @@ services: - nodebb-uploads:/usr/src/app/public/uploads - nodebb-config:/opt/config - ./install/docker/setup.json:/usr/src/app/setup.json + network_mode: "host" redis: image: redis:8.4.0-alpine @@ -21,6 +22,7 @@ services: # command: ["redis-server", "--save", "60", "1", "--loglevel", "warning"] # uncomment if you want to use snapshotting instead of AOF volumes: - redis-data:/data + network_mode: "host" volumes: redis-data: diff --git a/docker-compose.yml b/docker-compose.yml index 6f245713e8..7e37ba81c1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,7 +10,6 @@ services: - nodebb-uploads:/usr/src/app/public/uploads - nodebb-config:/opt/config - ./install/docker/setup.json:/usr/src/app/setup.json - network_mode: "host" mongo: