Commit Graph

161 Commits

Author SHA1 Message Date
Julian Lam
93bb73c17e fix: replace parseInt that was excluding remote pids from calculation
Also fixes nodebb/nodebb-plugin-feed#13
2024-11-20 13:49:55 -05:00
Opliko
c973a9caba fix: encode most uses of pid to avoid more bugs like #12545 2024-05-09 11:25:05 +02:00
Julian Lam
01f7af9291 fix: remove unused param in addParentPosts 2024-03-12 11:39:26 -04:00
Julian Lam
eb8ff75b63 fix: only dereference id if it doesn't exist locally — fewer calls 2024-03-12 11:33:40 -04:00
Julian Lam
4c2cbb5b12 fix: remove console logging 2024-03-06 14:58:15 -05:00
Julian Lam
f368a1a87f fix: remove intFields hack and update db.parseIntFields to only parseInt if field value is a number 2024-03-06 11:45:34 -05:00
Julian Lam
2b1a347792 fix: replies to remote content overriding mainPid in topic 2024-02-08 11:55:48 -05:00
Julian Lam
ec2b375ae9 refactor: use existing sets for topics (instead of topicRemote, etc.) 2024-02-07 12:28:16 -05:00
Julian Lam
2ff70fdde2 refactor: generate a topic id when asserting a new topic 2024-01-19 11:31:04 -05:00
Julian Lam
60bc27ec69 fix: saving teaserPid, timestamp, lastposttime in topic, fixed post index issue in loading topics 2024-01-17 12:15:58 -05:00
Julian Lam
81d810983a fix: simplify increasePostCount logic by combining methods 2024-01-13 22:26:39 -05:00
Julian Lam
2b3b6e56af chore: move assertNote to separate file in preparation for additional note-based methods 2024-01-11 10:05:02 -05:00
Julian Lam
0d478b2c76 feat: plumb uid into .addParentPosts() so .assertNotes() can be properly called 2024-01-10 20:49:27 -05:00
Barış Soner Uşaklı
844cb91beb feat: update all language keys to use - instead of _ (#12059)
* feat: update all language keys to use - instead of _

* refactor: update language keys
2023-10-05 12:48:50 -04:00
Barış Soner Uşaklı
0316f324e7 feat: add toMid to chat messages 2023-08-06 02:33:28 -04:00
Barış Soner Uşaklı
f2152953cd add displayname to parent posts 2023-07-12 10:40:25 -04:00
Barış Soner Uşaklı
9ee1d7b063 fix: if reply is in different topic dont hide in parent 2023-06-16 09:05:37 -04:00
Barış Soner Uşaklı
0b2feb9e45 perf: make less db calls to load indices
pass in postData array to getPostReplies which has the indices already
look at the passed in array of posts to find the index of nested replies before calling getPidIndex, most of the time the direct replies are close to the target so they are already in postData array.
only load indices if direct reply count is1
2023-06-14 22:12:24 -04:00
Julian Lam
da02361b13 feat: do not show the replies container in a post's footer if the only reply present is the next post 2023-06-14 16:53:00 -04:00
Barış Soner Uşaklı
32f60df108 refactor: remove log 2023-06-04 21:19:15 -04:00
Barış Soner Uşaklı
d3c5a79d44 fix: #11664, dont create backlinks for quotes 2023-06-01 13:48:12 -04:00
Barış Soner Uşaklı
d20b07cfea Webpack5 (#10311)
* feat: webpack 5 part 1

* fix: gruntfile fixes

* fix: fix taskbar warning

add app.importScript
copy public/src/modules to build folder

* refactor: remove commented old code

* feat: reenable admin

* fix: acp settings pages, fix sortable on manage categories

embedded require in html not allowed

* fix: bundle serialize/deserizeli so plugins dont break

* test: fixe util tests

* test: fix require path

* test: more test fixes

* test: require correct utils module

* test: require correct utils

* test: log stack

* test: fix db require blowing up tests

* test: move and disable bundle test

* refactor: add aliases

* test: disable testing route

* fix: move webpack modules necessary for build, into `dependencies`

* test: fix one more test

remove 500-embed.tpl

* fix: restore use of assets/nodebb.min.js, at least for now

* fix: remove unnecessary line break

* fix: point to proper ACP bundle

* test: maybe fix build test

* test: composer

* refactor: dont need dist

* refactor: more cleanup

use everything from build/public folder

* get rid of conditional import in app.js

* fix: ace

* refactor: cropper alias

* test: lint and test fixes

* lint: fix

* refactor: rename function to app.require

* refactor: go back to using app.require

* chore: use github branch

* chore: use webpack branch

* feat: webpack webinstaller

* feat: add chunkFile name with contenthash

* refactor: move hooks to top

* refactor: get rid of template500Function

* fix(deps): use webpack5 branch of 2factor plugin

* chore: tagging v2.0.0-beta.0 pre-release version 💥 :shipit: 🎉 🚀

* refactor: disable cache on templates

loadTemplate is called once by benchpress and the result is cache internally

* refactor: add server side helpers.js

* feat: deprecate /plugins shorthand route, closes #10343

* refactor: use build/public for webpack

* test: fix filename

* fix: more specific selector

* lint: ignore

* refactor: fix comments

* test: add debug for random failing test

* refactor: cleanup

remove test page, remove dupe functions in utils.common

* lint: use relative path  for now

* chore: bump prerelease version

* feat: add translateKeys

* fix: optional params

* fix: get rid of extra timeago files

* refactor: cleanup, require timeago locale earlier

remove translator.prepareDOM, it is in header.tpl html tag

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels (#10378)

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels

- Existing hooks are preserved (to be deprecated at a later date, possibly)
- New init hooks are called on NodeBB start, and provide a one-stop shop to add new privileges, instead of having to add to four different hooks

* docs: fix typo in comment

* test: spec changes

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels (#10378)

* refactor: privileges system to use a Map in the backend instead of separate objects for keys and labels

- Existing hooks are preserved (to be deprecated at a later date, possibly)
- New init hooks are called on NodeBB start, and provide a one-stop shop to add new privileges, instead of having to add to four different hooks

* docs: fix typo in comment

* test: spec changes

* feat: allow app.require('bootbox'/'benchpressjs')

* refactor: require server side utils

* test: jquery ready

* change istaller to use build/public

* test: use document.addEventListener

* refactor: closes #10301

* refactor: generateTopicClass

* fix: column counts for other privileges

* fix: #10443, regression where sorted-list items did not render into the DOM in the predicted order [breaking]

* fix: typo in hook name

* refactor: introduce a generic autocomplete.init() method that can be called to add nodebb-style autocompletion but using different data sources (e.g. not user/groups/tags)

* fix: crash if `delay` not passed in (as it cannot be destructured)

* refactor: replace substr

* feat: set --panel-offset style in html element based on stored value in localStorage

* refactor: addDropupHandler() logic to be less naive

- Take into account height of the menu
- Don't apply dropUp logic if there's nothing in the dropdown
- Remove 'hidden' class (added by default in Persona for post tools) when menu items are added

closes #10423

* refactor: simplify utils.params [breaking]

Retrospective analysis of the usage of this method suggests that the options passed in are superfluous, and that only `url` is required. Using a browser built-in makes more sense to accomplish what this method sets out to do.

* feat: add support for returning full URLSearchParams for utils.params

* fix: utils.params() fallback handling

* fix: default empty obj for params()

* fix: remove \'loggedin\' and \'register\' qs parameters once they have been used, delay invocation of messages until ajaxify.end

* fix: utils.params() not allowing relative paths to be passed in

* refactor(DRY): new assertPasswordValidity utils method

* fix: incorrect error message returned on insufficient privilege on flag edit

* fix: read/update/delete access to flags API should be limited for moderators to only post flags in categories they moderate

- added failing tests and patched up middleware.assert.flags to fix

* refactor: flag api v3 tests to create new post and flags on every round

* fix: missing error:no-flag language key

* refactor: flags.canView to check flag existence, simplify middleware.assert.flag

* feat: flag deletion API endpoint, #10426

* feat: UI for flag deletion, closes #10426

* chore: update plugin versions

* chore: up emoji

* chore: update markdown

* chore: up emoji-android

* fix: regression caused by utils.params() refactor, supports arrays and pipes all values through utils.toType, adjusts tests to type check

Co-authored-by: Julian Lam <julian@nodebb.org>
2022-04-29 21:39:33 -04:00
Barış Soner Uşaklı
3935a86b83 fix: topic events if there is a blocked user in topic 2022-03-16 16:56:07 -04:00
Barış Soner Uşaklı
f9279b636b fix: post indices if there is a blocked user in topic 2022-01-18 20:31:06 -05:00
Barış Soner Uşaklı
3b72ff8742 fix: dont add duplicate link backs 2022-01-18 20:12:50 -05:00
Barış Soner Uşaklı
b06c6329e4 fix: #10175, fix topic linkbacks duplicating on post edit 2022-01-17 19:05:07 -05:00
Barış Soner Uşaklı
a20abdce02 lint: remove unused 2021-12-06 17:07:32 -05:00
Barış Soner Uşaklı
36eb47d9a0 refactor: change var name 2021-12-06 17:00:50 -05:00
Barış Soner Uşaklı
170e5dd941 breaking: remove getTopicPosts(tid, ...) usage 2021-12-06 17:00:25 -05:00
Barış Soner Uşaklı
906dc5675e fix: handle start=0 stop=0 for topics.getTopicPosts
add more tests
2021-12-06 16:36:30 -05:00
Barış Soner Uşaklı
1cdb0b1e19 fix: don't crash if tid is falsy 2021-11-30 15:47:19 -05:00
Barış Soner Uşaklı
d5bfd51267 fix: #10010, handle reverse sorting for topic events
dont add events to dom if sort is most votes
if sorting is reverse add new events after the main post or at the top instead of bottom
2021-11-17 23:34:01 -05:00
Barış Soner Uşaklı
258f368e32 refactor: add filter:topic.getPosts
this hook only fires when loading the posts of a topic cold load + infinite scroll
do not remove posts if they have index =-1
use topics.getTopicPosts instead of getMainPostAndReplies
2021-11-15 18:08:09 -05:00
Barış Soner Uşaklı
89399c0ed5 fix: #9954, get next post timestamp
fixes topic events being inserted in after first page but at the wrong spot
2021-10-31 15:09:33 -04:00
Julian Lam
be43cd2597 Topic Linkbacks (#9825)
* feat: WIP topic linkbacks, + failing tests

* test: don't accidentally comment out all of the post tests

* fix: rename to "backlinks"

* feat: more stub code, more failing tests

* feat: backend methods and passing tests for topic backlinks

* test: uncomment test/posts.js again

* fix: missing quotation mark in topic event helper

* fix: superfluous usage of Promise.all

* test: fix broken test -- used hardcoded (and incorrect) url

* test: parseInt shenanigans
2021-09-29 12:26:15 -04:00
Barış Soner Uşaklı
6399b42826 feat: closes #9845, sort by views 2021-09-28 11:13:56 -04:00
Peter Jaszkowiak
dab3b23575 chore: eslint no-var, vars-on-top 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
b56d9e12b5 chore: eslint prefer-arrow-callback 2021-02-08 18:06:44 -05:00
Peter Jaszkowiak
707b55b6a5 chore: eslint prefer-template 2021-02-08 18:06:44 -05:00
Barış Soner Uşaklı
5a137a0dd6 fix: guest handles to user displayname as well 2020-11-29 15:38:02 -05:00
Barış Soner Uşaklı
c037779fa1 feat: add topicOwnerPost #8778 2020-11-25 17:58:44 -05:00
Julian Lam
6e2da9966e refactor: move plugin hook methods to plugin.hooks.* 2020-11-20 16:32:39 -05:00
Barış Soner Uşaklı
a05905f196 performance improvements (#8795)
* perf: nconf/winston/render

cache nconf.get calls
modify middleware.pageView to call next earlier
don't call winston.verbose on every hook see https://github.com/winstonjs/winston/issues/1669
translate header/footer separately and cache results for guests

* fix: copy paste fail

* refactor: style and fire hook only log in dev mode

* fix: cache key, header changes based on template

* perf: change replace

* fix: add missing await

* perf: category

* perf: lodash clone

* perf: remove escapeRegexChars
2020-10-26 10:43:18 -04:00
Barış Soner Uşaklı
0db0231cff feat: move postercount to topic hash 2020-10-24 21:14:52 -04:00
Barış Soner Uşaklı
7a019494e8 feat: add filter.topics.getPostReplies 2020-10-20 12:00:56 -04:00
Barış Soner Uşaklı
d6c619cf1a fix: don't show blocked users under nested replies 2020-07-06 15:50:19 -04:00
Barış Soner Uşaklı
805dcd7ca2 Async refactor in place (#7736)
* feat: allow both callback&and await

* feat: ignore async key

* feat: callbackify and promisify in same file

* Revert "feat: callbackify and promisify in same file"

This reverts commit cea206a9b8.

* feat: no need to store .callbackify

* feat: change getTopics to async

* feat: remove .async

* fix: byScore

* feat: rewrite topics/index and social with async/await

* fix: rewrite topics/data.js

fix issue with async.waterfall, only pass result if its not undefined

* feat: add callbackify to redis/psql

* feat: psql use await

* fix: redis 🌋

* feat: less returns

* feat: more await rewrite

* fix: redis tests

* feat: convert sortedSetAdd

rewrite psql transaction to async/await

* feat: 🐶

* feat: test

* feat: log client and query

* feat: log bind

* feat: more logs

* feat: more logs

* feat: check perform

* feat: dont callbackify transaction

* feat: remove logs

* fix: main functions

* feat: more logs

* fix: increment

* fix: rename

* feat: remove cls

* fix: remove console.log

* feat: add deprecation message to .async usage

* feat: update more dbal methods

* fix: redis :voodoo:

* feat:  fix redis zrem, convert setObject

* feat: upgrade getObject methods

* fix: psql getObjectField

* fix: redis tests

* feat: getObjectKeys

* feat: getObjectValues

* feat: isObjectField

* fix: add missing return

* feat: delObjectField

* feat: incrObjectField

* fix: add missing await

* feat: remove exposed helpers

* feat: list methods

* feat: flush/empty

* feat: delete

* fix: redis delete all

* feat: get/set

* feat: incr/rename

* feat: type

* feat: expire

* feat: setAdd

* feat: setRemove

* feat: isSetMember

* feat: getSetMembers

* feat: setCount, setRemoveRandom

* feat: zcard,zcount

* feat: sortedSetRank

* feat: isSortedSetMember

* feat: zincrby

* feat: sortedSetLex

* feat: processSortedSet

* fix: add mising await

* feat: debug psql

* fix: psql test

* fix: test

* fix: another test

* fix: test fix

* fix: psql tests

* feat: remove logs

* feat: user arrow func

use builtin async promises

* feat: topic bookmarks

* feat: topic.delete

* feat: topic.restore

* feat: topics.purge

* feat: merge

* feat: suggested

* feat: topics/user.js

* feat: topics modules

* feat: topics/follow

* fix: deprecation msg

* feat: fork

* feat: topics/posts

* feat: sorted/recent

* feat: topic/teaser

* feat: topics/tools

* feat: topics/unread

* feat: add back node versions

disable deprecation notice
wrap async controllers in try/catch

* feat: use db directly

* feat: promisify in place

* fix: redis/psql

* feat: deprecation message

logs for psql

* feat: more logs

* feat: more logs

* feat: logs again

* feat: more logs

* fix: call release

* feat: restore travis, remove logs

* fix: loops

* feat: remove .async. usage
2019-07-09 12:46:49 -04:00
Barış Soner Uşaklı
bd640a1107 Topic await errors (#7727)
* feat: derp await

* feat: restore user.getSettings

* feat: cleanup

* feat: make tid const

* feat: cleanup

* fix: tests

* feat: deprecate filter:controllers.topic.get

* feat: rewrite post-index logic

* feat: change calculation to match others

* fix: use .async

* feat: remove try/catch wrapper
2019-07-03 12:48:26 -04:00
Baris Usakli
708df46ebe fix: dont display post tools if there are no options 2019-06-26 12:14:38 -04:00
Barış Soner Uşaklı
7e54d7aa35 feat: use db.sortedSetsAdd 2019-06-19 20:01:20 -04:00