diff --git a/CHANGELOG.md b/CHANGELOG.md index 84f0853701..1d0b8e2fc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,47 @@ +#### v3.6.1 (2023-12-22) + +##### Chores + +* incrementing version number - v3.6.0 (4cdf85f8) +* update changelog for v3.6.0 (eb92cee6) +* incrementing version number - v3.5.3 (ed0e8783) +* incrementing version number - v3.5.2 (52fbb2da) +* incrementing version number - v3.5.1 (4c543488) +* incrementing version number - v3.5.0 (d06fb4f0) +* incrementing version number - v3.4.3 (5c984250) +* incrementing version number - v3.4.2 (3f0dac38) +* incrementing version number - v3.4.1 (01e69574) +* incrementing version number - v3.4.0 (fd9247c5) +* incrementing version number - v3.3.9 (5805e770) +* incrementing version number - v3.3.8 (a5603565) +* incrementing version number - v3.3.7 (b26f1744) +* incrementing version number - v3.3.6 (7fb38792) +* incrementing version number - v3.3.4 (a67f84ea) +* incrementing version number - v3.3.3 (f94d239b) +* incrementing version number - v3.3.2 (ec9dac97) +* incrementing version number - v3.3.1 (151cc68f) +* incrementing version number - v3.3.0 (fc1ad70f) +* incrementing version number - v3.2.3 (b06d3e63) +* incrementing version number - v3.2.2 (758ecfcd) +* incrementing version number - v3.2.1 (20145074) +* incrementing version number - v3.2.0 (9ecac38e) +* incrementing version number - v3.1.7 (0b4e81ab) +* incrementing version number - v3.1.6 (b3a3b130) +* incrementing version number - v3.1.5 (ec19343a) +* incrementing version number - v3.1.4 (2452783c) +* incrementing version number - v3.1.3 (3b4e9d3f) +* incrementing version number - v3.1.2 (40fa3489) +* incrementing version number - v3.1.1 (40250733) +* incrementing version number - v3.1.0 (0cb386bd) +* incrementing version number - v3.0.1 (26f6ea49) +* incrementing version number - v3.0.0 (224e08cd) + +##### Bug Fixes + +* #12243, don' set process.env.config if it doesnt exist (788404c1) +* lang key for move notification closes #12241 (48a2b5f7) +* dont send topic notification to poster (e72b26f5) + #### v3.6.0 (2023-12-20) ##### Chores diff --git a/install/package.json b/install/package.json index 5fd2368070..c29ab0ab5f 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "3.6.0", + "version": "3.6.1", "homepage": "https://www.nodebb.org", "repository": { "type": "git", @@ -34,7 +34,7 @@ "@fortawesome/fontawesome-free": "6.5.1", "@isaacs/ttlcache": "1.4.1", "@popperjs/core": "2.11.8", - "ace-builds": "1.32.2", + "ace-builds": "1.32.3", "archiver": "6.0.1", "async": "3.2.5", "autoprefixer": "10.4.16", @@ -63,7 +63,7 @@ "csrf-sync": "4.0.3", "daemon": "1.1.0", "diff": "5.1.0", - "esbuild": "0.19.10", + "esbuild": "0.19.11", "express": "4.18.2", "express-session": "1.17.3", "express-useragent": "1.0.15", @@ -103,12 +103,12 @@ "nodebb-plugin-ntfy": "1.7.3", "nodebb-plugin-spam-be-gone": "2.2.0", "nodebb-rewards-essentials": "1.0.0", - "nodebb-theme-harmony": "1.1.105", - "nodebb-theme-lavender": "7.1.5", - "nodebb-theme-peace": "2.1.25", - "nodebb-theme-persona": "13.2.49", + "nodebb-theme-harmony": "1.1.107", + "nodebb-theme-lavender": "7.1.7", + "nodebb-theme-peace": "2.1.26", + "nodebb-theme-persona": "13.2.50", "nodebb-widget-essentials": "7.0.14", - "nodemailer": "6.9.7", + "nodemailer": "6.9.8", "nprogress": "0.2.0", "passport": "0.7.0", "passport-http-bearer": "1.0.1", @@ -124,7 +124,7 @@ "rss": "1.2.2", "rtlcss": "4.1.1", "sanitize-html": "2.11.0", - "sass": "1.69.5", + "sass": "1.69.6", "semver": "7.5.4", "serve-favicon": "2.5.0", "sharp": "0.33.1", @@ -135,7 +135,7 @@ "sortablejs": "1.15.1", "spdx-license-list": "6.8.0", "spider-detector": "2.0.1", - "terser-webpack-plugin": "5.3.9", + "terser-webpack-plugin": "5.3.10", "textcomplete": "0.18.2", "textcomplete.contenteditable": "0.1.1", "timeago": "1.6.7", @@ -172,7 +172,7 @@ "smtp-server": "3.13.0" }, "optionalDependencies": { - "sass-embedded": "1.69.5" + "sass-embedded": "1.69.6" }, "resolutions": { "*/jquery": "3.7.1" diff --git a/public/language/de/error.json b/public/language/de/error.json index 3631a2ef53..94044aaa77 100644 --- a/public/language/de/error.json +++ b/public/language/de/error.json @@ -32,7 +32,7 @@ "folder-exists": "Ordner existiert", "invalid-pagination-value": "Ungültige Seitennummerierung, muss mindestens %1 und maximal %2 sein", "username-taken": "Der Benutzername ist bereits vergeben", - "email-taken": "Email address is already taken.", + "email-taken": "Die E-Mail-Adresse ist bereits vergeben.", "email-nochange": "Die eingegebene E-Mail ist die gleiche wie die bereits hinterlegte E-Mail.", "email-invited": "E-Mail wurde bereits eingeladen", "email-not-confirmed": "Das Schreiben von Beiträgen in einigen Kategorien oder Themen ist erst möglich, wenn Ihre E-Mail bestätigt wurde. Bitte klicken Sie hier, um eine Bestätigungs-E-Mail zu senden.", diff --git a/public/language/nb/admin/admin.json b/public/language/nb/admin/admin.json index df7e3493a5..a920002d3a 100644 --- a/public/language/nb/admin/admin.json +++ b/public/language/nb/admin/admin.json @@ -4,15 +4,15 @@ "acp-title": "%1 | NodeBB Admin Kontrollpanel", "settings-header-contents": "Innhold", - "changes-saved": "Changes Saved", + "changes-saved": "Endringer lagret", "changes-saved-message": "Your changes to the NodeBB configuration have been saved.", "changes-not-saved": "Endringer ikke lagret", "changes-not-saved-message": "NodeBB støtte på et problem ved lagring av endringer. (%1)", - "save-changes": "Save changes", + "save-changes": "Lagre endringer", "min": "Min:", "max": "Max:", - "view": "View", - "edit": "Edit", - "add": "Add", - "select-icon": "Select Icon" + "view": "Se", + "edit": "Rediger", + "add": "Legg til", + "select-icon": "Velg ikon" } \ No newline at end of file diff --git a/public/language/nb/admin/settings/user.json b/public/language/nb/admin/settings/user.json index 7003c8ec3e..3f30cf6625 100644 --- a/public/language/nb/admin/settings/user.json +++ b/public/language/nb/admin/settings/user.json @@ -79,7 +79,7 @@ "follow-replied-topics": "Følg tråder du svarer på", "default-notification-settings": "Standard varslingsinnstillinger", "categoryWatchState": "Default category watch state", - "categoryWatchState.tracking": "Tracking", + "categoryWatchState.tracking": "Sporing", "categoryWatchState.notwatching": "Overvåker ikke", "categoryWatchState.ignoring": "Ignorerer", "restrictions-new": "Nye brukerbegrensninger ", diff --git a/public/language/nb/category.json b/public/language/nb/category.json index a55e20d5ce..3f96a2e6d1 100644 --- a/public/language/nb/category.json +++ b/public/language/nb/category.json @@ -10,7 +10,7 @@ "watch": "Overvåk", "ignore": "Ignorer", "watching": "Følger", - "tracking": "Tracking", + "tracking": "Sporing", "not-watching": "Følger ikke", "ignoring": "Ignorerer", "watching.description": "Notify me of new topics.
Show topics in unread & recent", diff --git a/public/language/nb/notifications.json b/public/language/nb/notifications.json index cccf2fcb23..29752bf30d 100644 --- a/public/language/nb/notifications.json +++ b/public/language/nb/notifications.json @@ -13,14 +13,14 @@ "all": "Alle", "topics": "Emner", "tags": "Tags", - "categories": "Categories", + "categories": "Kategorier", "replies": "Svar", "chat": "Samtaler", "group-chat": "Gruppesamtaler", "public-chat": "Public Chats", "follows": "Følger", "upvote": "Oppstemmer", - "awards": "Awards", + "awards": "Tildelninger", "new-flags": "Nye flagg", "my-flags": "Flagg som er tildelt til meg", "bans": "Forbud", @@ -56,7 +56,7 @@ "user-posted-topic-with-tag-dual": "%1 has posted a new topic with tags %2 and %3", "user-posted-topic-with-tag-triple": "%1 has posted a new topic with tags %2, %3 and %4", "user-posted-topic-with-tag-multiple": "%1 has posted a new topic with tags %2", - "user-posted-topic-in-category": "%1 has posted a new topic in %2", + "user-posted-topic-in-category": "%1 har publisert et nytt innlegg i %2", "user-started-following-you": "%1 begynte å følge deg.", "user-started-following-you-dual": "%1 og 2% har begynt å følge deg.", "user-started-following-you-triple": "%1, %2 and %3 started following you.", @@ -83,7 +83,7 @@ "notificationType-upvote": "Når noen stemmer opp innlegget ditt", "notificationType-new-topic": "Når noen du følger følger legger ut et emne", "notificationType-new-topic-with-tag": "When a topic is posted with a tag you follow", - "notificationType-new-topic-in-category": "When a topic is posted in a category you are watching", + "notificationType-new-topic-in-category": "Når et emne er lagt ut i en kategori du ser på", "notificationType-new-reply": "Når et nytt svar er lagt ut i et emne du overvåker", "notificationType-post-edit": "Når et innlegg er redigert i et emne du overvåker", "notificationType-follow": "Når noen starter å følge deg", @@ -97,5 +97,5 @@ "notificationType-post-queue": "Når et nytt innlegg er satt i kø", "notificationType-new-post-flag": "Når ett nytt innlegg er flagget", "notificationType-new-user-flag": "Når en bruker er flagget", - "notificationType-new-reward": "When you earn a new reward" + "notificationType-new-reward": "Når du får en ny tildelning " } \ No newline at end of file diff --git a/public/language/nb/pages.json b/public/language/nb/pages.json index 26b7cbf6d8..9c194d3689 100644 --- a/public/language/nb/pages.json +++ b/public/language/nb/pages.json @@ -48,7 +48,7 @@ "account/topics": "Emner opprettet av %1", "account/groups": "%1 sine grupper", "account/watched-categories": "%1's overvåkede kategorier", - "account/watched-tags": "%1's Watched Tags", + "account/watched-tags": "%1's overvåkede tagger", "account/bookmarks": "%1's bokmerkede innlegg", "account/settings": "Brukerinnstillinger", "account/settings-of": "Changing settings of %1", @@ -62,7 +62,7 @@ "account/uploads": "Opplastninger av %1", "account/sessions": "Påloggingsøkter", "confirm": "E-post bekreftet", - "maintenance.text": "%1 is currently undergoing maintenance.
Please come back another time.", + "maintenance.text": "%1 er for øyeblikket under vedlikehold.
Vennligst kom tilbake en annen gang.", "maintenance.messageIntro": "I tillegg har administratoren skrevet denne meldingen:", "throttled.text": "%1 er for øyeblikket ikke tilgjengelig på grunn av overdreven belastning. Kom tilbake en annen gang." } \ No newline at end of file diff --git a/public/language/nb/topic.json b/public/language/nb/topic.json index 40a60986bc..643a254e28 100644 --- a/public/language/nb/topic.json +++ b/public/language/nb/topic.json @@ -40,11 +40,11 @@ "copy-ip": "Kopier IP", "ban-ip": "Forby IP", "view-history": "Redigere historie", - "wrote-ago": "wrote ", - "wrote-on": "wrote on ", - "replied-to-user-ago": "replied to %3 ", - "replied-to-user-on": "replied to %3 on ", - "user-locked-topic-ago": "%1 locked this topic %2", + "wrote-ago": "skrev ", + "wrote-on": "skrev på ", + "replied-to-user-ago": "svarte på %3 ", + "replied-to-user-on": "svarte på %3", + "user-locked-topic-ago": "%1 låste dette emnet %2", "user-locked-topic-on": "%1 locked this topic on %2", "user-unlocked-topic-ago": "%1 unlocked this topic %2", "user-unlocked-topic-on": "%1 unlocked this topic on %2", @@ -123,14 +123,14 @@ "post-restore-confirm": "Er du sikker på at du vil gjenopprette dette innlegget?", "post-purge-confirm": "Er du sikker på at du vil renske dette innlegget?", "pin-modal-expiry": "Utløpsdato", - "pin-modal-help": "Du kan eventuelt angi en utløpsdato for de festede emnene her. Alternativt kan du la dette feltet stå tomt for å holde emnet festet til det manuelt løsnes.", + "pin-modal-help": "Du kan eventuelt angi en utløpsdato for de festede emne(ne) her. Alternativt kan du la dette feltet stå tomt for å holde emnet festet til det manuelt løsnes.", "load-categories": "Laster kategorier", "confirm-move": "Flytt", "confirm-fork": "Forgren", "bookmark": "Bokmerke", "bookmarks": "Bokmerker", "bookmarks.has-no-bookmarks": "Du har ikke bokmerket noen innlegg ennå.", - "copy-permalink": "Copy Permalink", + "copy-permalink": "Kopier permalink", "loading-more-posts": "Laster flere innlegg", "move-topic": "Flytt tård", "move-topics": "Flytt tråder", @@ -138,7 +138,7 @@ "post-moved": "Innlegg flyttet!", "fork-topic": "Forgren tråd", "enter-new-topic-title": "Tast inn tittel på emne", - "fork-topic-instruction": "Click the posts you want to fork, enter a title for the new topic and click fork topic", + "fork-topic-instruction": "Klikk på innleggene du vil dele, skriv inn en tittel for det nye emnet og klikk på emnet", "fork-no-pids": "Ingen innlegg valgt!", "no-posts-selected": "Ingen innlegg valgt.", "x-posts-selected": "%1 innlegg valgt", @@ -157,7 +157,7 @@ "change-owner-instruction": "Klikk på innleggene du vil tildele til en annen bruker", "composer.title-placeholder": "Skriv din tråd-tittel her", "composer.handle-placeholder": "Skriv inn navnet ditt / signatur her", - "composer.hide": "Hide", + "composer.hide": "Gjem", "composer.discard": "Forkast", "composer.submit": "Send", "composer.additional-options": "Ytterligere alternativer", @@ -204,7 +204,7 @@ "last-post": "Seneste innlegg", "go-to-my-next-post": "Gå til mitt neste innlegg", "no-more-next-post": "Du har ikke flere innlegg i dette emnet", - "post-quick-reply": "Quick reply", - "navigator.index": "Post %1 of %2", - "navigator.unread": "%1 unread" + "post-quick-reply": "Raskt svar", + "navigator.index": "Innlegg %1 av %2", + "navigator.unread": "%1 ulest" } \ No newline at end of file diff --git a/public/language/nb/user.json b/public/language/nb/user.json index 5be3ee4b59..f5a33e9593 100644 --- a/public/language/nb/user.json +++ b/public/language/nb/user.json @@ -22,7 +22,7 @@ "delete-account-confirm": "Er du sikker på at du vil anonymisere alle innleggene dine og slette brukerkonten?
Denne handlingen er irreversibel, og du vil ikke kunne gjenopprette noen av dataene dine

Skriv inn passordet ditt for å bekrefte at du ønsker å slette denne brukerkontoen.", "delete-this-account-confirm": "Er du sikker på at du vil slette denne brukerkontoen og la innholdet ligge igjen?
Denne handlingen er irreversibel, innlegg blir anonymisert, og du vil ikke kunne gjenopprette innleggsassosiasjoner med den slettede kontoen

", "delete-account-content-confirm": "Er du sikker på at du vil slette innholdet på denne brukerkontoen (innlegg / emner / opplastinger)?
Denne handlingen er irreversibel, og du vil ikke kunne gjenopprette data

", - "delete-all-confirm": "
Er du sikker på at du vil slette denne kontoen og alt innholdet (innlegg / emner / opplastinger)?Denne handlingen er irreversibel, og du vil ikke kunne gjenopprette data\n

", + "delete-all-confirm": "
Er du sikker på at du vil slette denne kontoen og alt innholdet (innlegg / emner / opplastinger)?Denne handlingen er irreversibel, og du vil ikke kunne gjenopprette data

", "account-deleted": "Konto slettet", "account-content-deleted": "Kontoinnhold slettet", "fullname": "Fullt navn", @@ -62,7 +62,7 @@ "change-picture": "Bytt bilde", "change-username": "Endre brukernavn", "change-email": "Endre e-post", - "email-updated": "Email Updated", + "email-updated": "E-post oppdatert", "email-same-as-password": "Skriv inn ditt nåværende passord for å fortsette – du har skrevet inn den nye e-posten din igjen", "edit": "Endre", "edit-profile": "Rediger profil", @@ -71,7 +71,7 @@ "upload-new-picture": "Last opp nytt bidle", "upload-new-picture-from-url": "Last opp nytt bilde fra URL", "current-password": "Gjeldende passord", - "new-password": "New Password", + "new-password": "Nytt passord", "change-password": "Endre passord", "change-password-error": "Ugyldig passord!", "change-password-error-wrong-current": "Ditt gjeldende passord er ikke korrekt!", @@ -119,8 +119,8 @@ "paginate-description": "Bruk sidevelger for tråder og innlegg istedet for uendelig scrolling", "topics-per-page": "Tråd per side", "posts-per-page": "Innlegg per side", - "category-topic-sort": "Category topic sort", - "topic-post-sort": "Topic post sort", + "category-topic-sort": "Kategorsortering", + "topic-post-sort": "Sortering av emneinnlegg", "max-items-per-page": "Maksimum %1", "acp-language": "Administrer sidespråk", "notifications": "Notifikasjoner", @@ -143,14 +143,14 @@ "group-order-help": "Velg en gruppe og bruk pilene for å gi titler", "no-group-title": "Ingen gruppetittel", "select-skin": "Velg et skin", - "default": "Default (%1)", - "no-skin": "No Skin", + "default": "Normalverdi (%1)", + "no-skin": "Ingen skin", "select-homepage": "Velg en hjemmeside", "homepage": "Hjemmeside", "homepage-description": "Velg en side du vil bruke som forumets hjemmeside, eller 'Ingen' for å bruke standardhjemmesiden.", "custom-route": "Tilpasset hjemmeside-rute", "custom-route-help": "Skriv inn et rutenavn her uten noen forrige skråstrek (f.eks. \"Nylig\" eller \"kategori / 2 / generell diskusjon\")", - "sso.title": "Single Sign-on Services", + "sso.title": "Enkel innloggingstjenester", "sso.associated": "Assosiert med", "sso.not-associated": "Klikk her for å assosiere med", "sso.dissociate": "Separer", @@ -176,8 +176,8 @@ "info.moderation-note.success": "Moderasjonsnotat ikke lagret", "info.moderation-note.add": "Legg til notat", "sessions.description": "Denne siden lar deg se alle aktivitetsøkter på dette forumet og tilbakekalle dem om nødvendig. Du kan tilbakekalle din egen økt ved å logge av brukerkontoen din.", - "revoke-session": "Revoke Session", - "browser-version-on-platform": "%1 %2 on %3", + "revoke-session": "Gjenopprett økten", + "browser-version-on-platform": "%1 %2 på %3", "consent.title": "Dine rettigheter & amp; Samtykke", "consent.lead": "Dette forumet samler inn og behandler dine personopplysninger.", "consent.intro": "Vi bruker kun denne informasjonen for å tilpasse brukeropplevelsen din i dette nettforumet, og for å knytte innleggene du lager til brukerkontoen din. Under registreringstrinnet i Felles brukerhåndtering ble du bedt om å oppgi fullt navn og en e-postadresse. Du kan også velge å oppgi tilleggsinformasjon for å fullføre brukerprofilen din på dette nettstedet.

Vi oppbevarer denne informasjonen så lenge brukerprofilen din er aktiv, og du kan når som helst trekke tilbake samtykke ved å slette kontoen din. Du kan når som helst be om en kopi av ditt bidrag til dette nettstedet, via dine rettigheter & Samtykkeside.

Hvis du har spørsmål eller bekymringer, oppfordrer vi deg til å ta kontakt med forumets administrative team.", diff --git a/public/language/nb/users.json b/public/language/nb/users.json index bfb1da44f2..173ea13547 100644 --- a/public/language/nb/users.json +++ b/public/language/nb/users.json @@ -1,5 +1,5 @@ { - "all-users": "All Users", + "all-users": "Alle brukere", "latest-users": "Seneste brukere", "top-posters": "Flest innlegg", "most-reputation": "Best omdømme", diff --git a/public/src/client/category.js b/public/src/client/category.js index c452273761..b4f0bb50cb 100644 --- a/public/src/client/category.js +++ b/public/src/client/category.js @@ -127,7 +127,6 @@ define('forum/category', [ hooks.fire('action:topics.loading'); const params = utils.params(); infinitescroll.loadMore(`/categories/${ajaxify.data.cid}/topics`, { - cid: ajaxify.data.cid, after: after, direction: direction, query: params, diff --git a/public/src/client/topic/events.js b/public/src/client/topic/events.js index 7dd6b5c08f..e091dd69c8 100644 --- a/public/src/client/topic/events.js +++ b/public/src/client/topic/events.js @@ -10,7 +10,8 @@ define('forum/topic/events', [ 'components', 'translator', 'hooks', -], function (postTools, threadTools, posts, images, components, translator, hooks) { + 'helpers', +], function (postTools, threadTools, posts, images, components, translator, hooks, helpers) { const Events = {}; const events = { @@ -152,7 +153,7 @@ define('forum/topic/events', [ editorEl.replaceWith(html); postContainer.find('[component="post/edit-indicator"]') .removeClass('hidden') - .translateAttr('title', `[[global:edited-timestamp, ${editData.editedISO}]]`); + .translateAttr('title', `[[global:edited-timestamp, ${helpers.isoTimeToLocaleString(editData.editedISO, config.userLang)}]]`); postContainer.find('[component="post/editor"] .timeago').timeago(); hooks.fire('action:posts.edited', data); }); diff --git a/public/src/modules/sort.js b/public/src/modules/sort.js index c7e5e8900a..2fcbb67897 100644 --- a/public/src/modules/sort.js +++ b/public/src/modules/sort.js @@ -12,8 +12,8 @@ define('sort', ['components'], function (components) { currentSetting.find('i').addClass('fa-check'); $('body') - .off('click', '[component="thread/sort"] a') - .on('click', '[component="thread/sort"] a', function () { + .off('click', '[component="thread/sort"] a[data-sort]') + .on('click', '[component="thread/sort"] a[data-sort]', function () { const newSetting = $(this).attr('data-sort'); const urlParams = utils.params(); urlParams.sort = newSetting; diff --git a/src/api/categories.js b/src/api/categories.js index 892c8e3d6a..db682fb245 100644 --- a/src/api/categories.js +++ b/src/api/categories.js @@ -128,7 +128,7 @@ categoriesAPI.getTopics = async (caller, data) => { let start = Math.max(0, parseInt(data.after || 0, 10)); - if (data.direction === -1) { + if (parseInt(data.direction, 10) === -1) { start -= infScrollTopicsPerPage; } diff --git a/src/categories/topics.js b/src/categories/topics.js index a8396a4ab2..64248890c0 100644 --- a/src/categories/topics.js +++ b/src/categories/topics.js @@ -236,7 +236,6 @@ module.exports = function (Categories) { const notification = await notifications.create({ type: 'new-topic-in-category', nid: `new_topic:tid:${postData.topic.tid}:uid:${exceptUid}`, - subject: bodyShort, bodyShort: bodyShort, bodyLong: postData.content, pid: postData.pid, diff --git a/src/socket.io/topics/infinitescroll.js b/src/socket.io/topics/infinitescroll.js index 2e9e95948e..cb0814d329 100644 --- a/src/socket.io/topics/infinitescroll.js +++ b/src/socket.io/topics/infinitescroll.js @@ -30,7 +30,7 @@ module.exports = function (SocketTopics) { parseInt(data.count, 10) || meta.config.postsPerPage || 20 )); - if (data.direction === -1) { + if (parseInt(data.direction, 10) === -1) { start -= infScrollPostsPerPage; } diff --git a/src/topics/sorted.js b/src/topics/sorted.js index a1d809fb48..8348f4ceaa 100644 --- a/src/topics/sorted.js +++ b/src/topics/sorted.js @@ -49,7 +49,7 @@ module.exports = function (Topics) { tids = await Topics.filterWatchedTids(tids, params.uid); } } else if (params.filter === 'watched') { - tids = await db.getSortedSetRevRange(`uid:${params.uid}:followed_tids`, 0, -1); + tids = await getWatchedTopics(params); } else if (params.cids) { tids = await getCidTids(params); } else if (params.tags.length) { @@ -63,6 +63,17 @@ module.exports = function (Topics) { return tids; } + async function getWatchedTopics(params) { + const sortSet = ['recent', 'old'].includes(params.sort) ? 'topics:recent' : `topics:${params.sort}`; + const method = params.sort === 'old' ? 'getSortedSetIntersect' : 'getSortedSetRevIntersect'; + return await db[method]({ + sets: [sortSet, `uid:${params.uid}:followed_tids`], + weights: [1, 0], + start: 0, + stop: meta.config.recentMaxTopics - 1, + }); + } + async function getTagTids(params) { const sets = [ params.sort === 'old' ? diff --git a/src/topics/tags.js b/src/topics/tags.js index 2df6701171..6cbe54b646 100644 --- a/src/topics/tags.js +++ b/src/topics/tags.js @@ -620,7 +620,6 @@ module.exports = function (Topics) { const notification = await notifications.create({ type: 'new-topic-with-tag', nid: `new_topic:tid:${postData.topic.tid}:uid:${exceptUid}`, - subject: bodyShort, bodyShort: bodyShort, bodyLong: postData.content, pid: postData.pid, diff --git a/src/topics/unread.js b/src/topics/unread.js index 9c54445233..bb8e207163 100644 --- a/src/topics/unread.js +++ b/src/topics/unread.js @@ -210,15 +210,13 @@ module.exports = function (Topics) { } async function getFollowedTids(params) { - let tids = await db.getSortedSetMembers(`uid:${params.uid}:followed_tids`); - const filterCids = params.cid && params.cid.map(cid => parseInt(cid, 10)); - if (filterCids) { - const topicData = await Topics.getTopicsFields(tids, ['tid', 'cid']); - tids = topicData.filter(t => filterCids.includes(t.cid)).map(t => t.tid); - } - const scores = await db.sortedSetScores('topics:recent', tids); - const data = tids.map((tid, index) => ({ value: String(tid), score: scores[index] })); - return data.filter(item => item.score > params.cutoff); + const keys = params.cid ? + params.cid.map(cid => `cid:${cid}:tids:lastposttime`) : + 'topics:recent'; + + const recentTopicData = await db.getSortedSetRevRangeByScoreWithScores(keys, 0, -1, '+inf', params.cutoff); + const isFollowed = await db.isSortedSetMembers(`uid:${params.uid}:followed_tids`, recentTopicData.map(t => t.tid)); + return recentTopicData.filter((t, i) => isFollowed[i]); } async function filterTidsThatHaveBlockedPosts(params) {