* feat(backend): pin more than one post
* add postPinnedCount query, better names for env variable
* add store and mixin for pinned posts counts
* test pinned post store
* context menu for pin posts
* fix typos
* unpin posts is always possible
---------
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
* after authentification, query the categories if active and store them
* get categories from store
* use category store to get categories
* get categories from store
* mock store to have access to categories
* to get rid of the active categories config variable in the frontend, the Category query returns an empty array when categories are not active
* remove CATEGORIES_ACTIVE from .env
* should return string to avoid warnings in console
* replace all env calls for categories active by getter from store
* use categoriesActive getter
* ignore order of returned categories
* mixin to get the category infos from the store, to ensure, that the quey has been called
* fix misspelling
---------
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
* After creating the post, the author of it automatically observes it to get notifications when there are interactions
* a user that comments a post, automatically observes that post to get notifications when there are more interactions on that post
* mutation that switches the state of the obeservation of a post on and off
* remove duplicate code
* fix unit tests
* add metric observed users count to posts
* change naming
* Add follow post entry to post menu
* Add FollowButton (WIP), show unfollow in menu when already followed
* Follow/unfollow post => observe
* Update slashed bell
* Add requests to observe/unobserve posts
* Add ObserveButton functionality
* Rename isObservedByMe
* Add observingUsersCount; simplify ObserveButton and menu entries
* Fix locales
* Add snapshot test for ObserveButton (WIP)
* Remove empty routes push
* Add test for ObserveButton
* Add test for ContentMenu, improve ObserveButton test
* Remove unneeded fields from PostQuery
---------
Co-authored-by: Moriz Wahl <moriz.wahl@gmx.de>
- Avoid possible errors, because of 'window' is only defined on browser side but not in NodeJS on client side. Check for 'typeof window' is neccessary, because if it's not defined at all you can't check for 'window !== undefined' without the same error 'window is undefined'.
This will allow us to use this.$scrollTo in components. I'm now also
using this in the mixin. With so many `this`s it gets horribly
difficult to properly test the mixin in isolation. So I decided to test
the mixin on the component directly.
If we make this a mixin, we can re-use the same solution for e.g. the
comment. If sb. notifies you, the browser automatically scrolls to the
comment in which you have been mentioned.
Unfortunately with `v-html` you cannot use filters directly in
handlebars.
See: https://github.com/nuxt/nuxt.js/issues/231
I also fixed the tests even **without** mocking vue-filters.js plugin 👍