726 Commits

Author SHA1 Message Date
a0e4b49833
fix(webapp): fix group performance (#8656)
* seed more Yoga group members

* implement groupMembers pagination

* load limited amount of group members

* force show all members in group member list

* remove unused import

* - added virtual scrolling to ProfileList

* - fixed linter error

* load all when clicking the button

* seed 3000 users

* cleanup

* lint

* hide search when not all members are visible

* fix email factory

* - increased profileListVisibleCount to 6

---------

Co-authored-by: Sebastian Stein <sebastian@codepassion.de>
2025-06-11 17:46:57 +02:00
aaf3b34125
fix flaky tests (#8638) 2025-06-04 23:40:48 +02:00
Moriz Wahl
df4275c5cd
feat(webapp): location on registration (#8608)
* feat(webapp): location on registration

* add location name to signup verification, allow location query

* location name can be prompted in regeistration

* default value null for locationName

* Prevent ds-select overflow

* Remove location name from label

* Add margin-bottom to location-select

* group location is not affected by REQUIRE_LOCATION, previous location is shown

* Update webapp/components/Registration/RegistrationSlideCreate.vue

Co-authored-by: Max <maxharz@gmail.com>

* Replace more '16px' by '$space-small' and remove class 'password-strength'

* Add class 'password-strength' again

* property for previous location

---------

Co-authored-by: Maximilian Harz <maxharz@gmail.com>
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-06-04 15:16:24 +02:00
e87a33eb3f
feat(backend): push posts (#8609)
* push posts

push posts

* unpush posts

* fix comment query

* locales

* fix locales

* fix tests

* Update webapp/locales/de.json

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>

* Update webapp/locales/de.json

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>

* Update webapp/locales/de.json

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>

* fix unpushedSuccessfully english message

* remove paremeters from unpushPost

* rename pushPostToTop -> pushPost, tests

* update locales & tests webapp

* fix lint

---------

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-06-03 17:57:21 +02:00
b4b9b842b3
fix(backend): hotfix - allow more user fields to be queried (#8632)
* allow to query user id & slug

* skip tests
2025-06-02 08:50:42 +00:00
Moriz Wahl
b736a2a2e3
feat(backend): pin more than one post (#8598)
* 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>
2025-05-28 19:12:27 +02:00
Moriz Wahl
a3178a91b4
refactor(webapp): store for categories (#8551)
* 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>
2025-05-27 15:03:26 +02:00
Moriz Wahl
d4a9694657
feat(webapp): redirect to group after registration with invite to group (#8540) 2025-05-10 10:10:55 +00:00
3f4d648562
feat(backend): group invite codes (#8499)
* invite codes refactor

typo

* lint fixes

* remove duplicate initeCodes on User

* fix typo

* clean permissionMiddleware

* dummy permissions

* separate validateInviteCode call

* permissions group & user

* test validateInviteCode + adjustments

* more validateInviteCode fixes

* missing test

* generatePersonalInviteCode

* generateGroupInviteCode

* old tests

* lint fixes

* more lint fixes

* fix validateInviteCode

* fix redeemInviteCode, fix signup

* fix all tests

* fix lint

* uniform types in config

* test & fix invalidateInviteCode

* cleanup test

* fix & test redeemInviteCode

* permissions

* fix Group->inviteCodes

* more cleanup

* improve tests

* fix code generation

* cleanup

* order inviteCodes result on User and Group

* lint

* test max invite codes + fix

* better description of collision

* tests: properly define group ids

* reused old group query

* reuse old Groupmembers query

* remove duplicate skip

* update comment

* fix uniqueInviteCode

* fix test
2025-05-08 19:18:40 +00:00
Robert Schäfer
290a176407
refactor(backend): types for global config (#8485)
* refactor(backend): types for global config

I saw merge conflicts in these files for #8463 so let's get some parts of this PR into `master` already.

I believe this fixes a small bug. They guard clause didn't ensure that all of REDIS_ configurations were set.

* remove old email mechanism

* refactor(backend: react to @ulfgebhardt's review

See: https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/8485#pullrequestreview-2813528327

* build(backend): optional commit

@ulfgebhardt this is how I tested the configurations. We don't need to include this commit but I wouldn't expect to send out real emails from a `docker-compose` setup.

---------

Co-authored-by: Moriz Wahl <moriz.wahl@gmx.de>
2025-05-07 15:57:35 +02:00
Moriz Wahl
65f764f6d9
feat(backend): signup email localized (#8459)
* localized registration email

* localized email verification email

* localized reset password email
2025-05-05 20:44:14 +02:00
Robert Schäfer
fac818a3e4
refactor(backend): types for context + slug (#8486)
Also these changes saw merge conflicts in #8463 so let's get them merged already.

Co-authored-by: mahula <lenzmath@posteo.de>
2025-05-04 07:44:31 +08:00
Moriz Wahl
e4ae0dfe50
feat(backend): emails for notifications (#8435)
* email templates with pug for all possible notification emails

* more information in emails

* Individual email subjects to all notification emails

---------

Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
Co-authored-by: mahula <lenzmath@posteo.de>
2025-05-03 21:11:44 +02:00
c69cef47a1
refactor(backend): refactor context (#8434)
* type for neo4j and neode

* fix build

* remove flakyness

* wait for neode to install schema

* remove flakyness

* explain why we wait for a non-promise

* refactor context

missing change

missing change

* adjust test setup

proper cleanup after test

* lint fixes

* fix failing test to use new context
2025-05-03 09:43:08 +00:00
68edc47f65
remove all helpers on src/helpers (#8469)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-05-02 13:57:37 +00:00
edce234745
move models into database folder (#8471)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-05-02 11:34:43 +00:00
839ffb29ee
refactor(backend): move resolvers into graphql folder (#8470)
* move resolvers into graphql folder

* lint fixes
2025-05-02 07:47:39 +00:00
f8864a779c
move distanceToMe onto Location (#8464) 2025-05-01 10:33:53 +02:00
9d5396988a
feat(backend): branding middlewares (#8429)
* allow the rbanding to provide middlewares

lint fix

fix config

* whitelist instead o blacklist when to exclude middlewares

fix config whitelisting

* fix lint
2025-04-28 17:27:01 +00:00
0873fc748c
feat(backend): lint - detect unused typescript disables (#8425)
* detect unused typescript disables

* fix lint errors

uuid-types

remove debug

fix config

* lint fixes
2025-04-25 14:31:49 +00:00
507179738a
refactor(backend): types for neo4j & neode (#8409)
* type for neo4j and neode

* fix build

* remove flakyness

* wait for neode to install schema

* remove flakyness

* explain why we wait for a non-promise
2025-04-25 08:04:58 +00:00
d4cc843662
lint n/no-sync (#8405) 2025-04-24 19:50:13 +00:00
649491f7cb
fix(backend): fix notification emails with different name (#8419)
* fix diffent name notifications

We had emails sent with incorrect names.
This PR combines the query for the email with the user the notification
is sent to since the notification in database was correct.
The underlying problem is the unstable order in which the database can
return values. The results of the two queries were matched by id since
it was assumed that they always return the same order of elements.

lint fixes

fix typo

fix factory

fix tests

* fix tests accoridng to review

also test for the right amount of emails in every test
2025-04-24 00:58:53 +02:00
74b79e0b14
fix faker image seed (#8422)
Images now display properly and there is diffent images now

allow to provide url, urls msut be valid in seed

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-04-22 11:06:27 +00:00
6f4d347f69
refactor(backend): separate queries (#8358)
* separate all queries into one file each

* fix merge error

* fix lint

---------

Co-authored-by: mahula <lenzmath@posteo.de>
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-04-21 11:47:12 +00:00
5131752710
refactor(backend): lint @typescript-eslint/strict (#8408)
* lint @typescript-eslint/recommended

* lint @typescript-eslint/recommended-requiring-type-checking

fix type not detected locally due to wierd uuid typings

missing save

error not reported locally

* lint @typescript-eslint/strict

---------

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-04-21 11:09:47 +00:00
b464a380ca
refactor(backend): lint @typescript-eslint/recommended-requiring-type-checking (#8407)
* lint @typescript-eslint/recommended

* lint @typescript-eslint/recommended-requiring-type-checking

fix type not detected locally due to wierd uuid typings

missing save

error not reported locally

---------

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-04-21 10:32:44 +00:00
53f3a4e2e6
lint @typescript-eslint/recommended (#8406)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-04-21 12:01:53 +02:00
8cf405c549
feat(backend): badges (#8391)
* delete all old badges

* reward/unrewardBadge

* verification Badges

* name all badged accordingly

* more tests, lint

* seed badges

* profileBadge mechanic

* badgesUnusedCount

* seed profileBadges set

* configure profile badge count

* insert badges db:data:badges:default

* seed commands to seed default badges and allow to seed branding data

* copy data migrations when building docker

* typo

* correct data:branding command & document it

* test new functionality

* Update backend/src/db/seed/badges.ts

Co-authored-by: Max <maxharz@gmail.com>

* Update backend/src/db/seed/badges.ts

Co-authored-by: Max <maxharz@gmail.com>

* Update backend/src/db/seed/badges.ts

Co-authored-by: Max <maxharz@gmail.com>

* naming coventions

* final naming fix

lint

fix build

fix badge type in test

renamed badge_ to trophy_

lint fixes

small renameing

fixes

fix users spec

fix webapp queries

fix display

* expose badge description

---------

Co-authored-by: Max <maxharz@gmail.com>
2025-04-17 23:08:54 +00:00
Moriz Wahl
89b0fa7a51
feat(backend): do not notify blocked or muted users (#8403)
* no more notifications of blocked or muted users in groups

* do not receive notifications on mentions or observed posts from muted users
2025-04-17 18:22:20 +00:00
Moriz Wahl
de4325cb50
feat(backend): only one email is sent although more notifications are triggered (#8400)
Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-04-17 19:55:53 +02:00
Moriz Wahl
aee46552d6
fix(backend): flaky notifications on mention in group unit test (#8404) 2025-04-17 16:43:53 +00:00
Moriz Wahl
727713ac1d
mentiioned users in posts and comments of groups (#8392) 2025-04-16 16:04:31 +00:00
Moriz Wahl
9440ad5cc3
feat(backend): no notification mails to users online (#8397) 2025-04-16 15:34:29 +00:00
2d8fe8a941
fix(backend): block/mute chat (#8364)
* no notification when blocked

* no notifications for muted users

* move tests from emssage to notification middleware

* fix test

* also dont update unreadRoomCount when user is muted

---------

Co-authored-by: mahula <lenzmath@posteo.de>
2025-04-15 10:38:48 +02:00
mahula
7d9b0e6437
refactor(backend): set up smtp pooling for nodemailer (#8167)
* backend: active SMTP pooling in Nodemailer configuration

* backend: add max SMTPconnections and messages to Nodemailer configuration

* move transport outside function to ensure pooling can work

---------

Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-04-12 12:59:56 +02:00
117c0d75e7
refactor(backend): user graphql (#8354)
* refactor user graphql

- remove isLoggedIn query
- currentUser query only for authenticated, currenUser always returns a
User
- currentUser query implementation uses neo4jgraphql with id parameter
- remove custom email field from user
- fix bug in frontend when there is no categories

* remove comment

* remove unused filter

* fix currentuser test

* fixedswitchUserRole mutation

* fix categories
2025-04-12 00:50:16 +00:00
Max
caeff070b7
feat(webapp): add mute/unumute group to menu (#8335)
* basics to notify a user when a followed user posted

* do not notify following user on posts in groups

* followig user wrote post notification

* notify regular group members when a new post is posted in the group

* mute and unmute groups

* clean database at end

* locale for post in group notification

* post in group notification triggers correctly

* email settings for post in group

* Add mute/unumute group to menu (WIP)

* Add mute group functionality (WIP)

* Add locales; use mute/unmute mutations, cleanup tests

* Overhaul group content menu test

* Rename isMuted to isMutedByMe and add it to group query

* Add German and English locales

* Add spanish translations

* Add missing translation keys (with null values)

* Remove console statement

* Add snapshot

* Replace mount by render

* Mock Math.random(), add tests for mute/unmute

* Use container instead of baseElement for snapshots

* fix group slug tests

* undo wrong variable naming

* rename parameter to groupId of mute/unmute group mutation

* rename parameter to groupId of mute/unmute group mutation

* only non pending members have access to the comtext menu

---------

Co-authored-by: Moriz Wahl <moriz.wahl@gmx.de>
Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-04-11 23:10:42 +00:00
Moriz Wahl
7a44e1aa4e
test that there is no email sent when no notification (#8362) 2025-04-11 23:49:31 +02:00
Moriz Wahl
aedf8d93c7
feat(backend): notify posts in groups (#8346)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-04-11 20:50:59 +00:00
Moriz Wahl
3734e2ef56
feat(backend): notify users when a followed user posted (#8313) 2025-04-11 17:56:11 +02:00
ab6fe37c3e
refactor(backend): new chat message notification email (#8357)
* new chat message notification email

- new mail features name in subject and text

* fix english version

* typo

* fix typos

* adjust tests
2025-04-10 16:38:51 +00:00
Max
1b07b06ca7
feat(webapp): notification settings frontend (#8320)
Implements detailed settings for email notifications.

Issues
relates 🚀 [Feature] Drei neue Interaktions-Benachrichtigungen #8280
2025-04-09 13:21:38 +00:00
f782032563
refactor(backend): lint - import/order (#8350)
* lint - import/no-relative-parent-imports

fix build error

* fix md

* lint import/order

enabled rule import/order and fixed impot order in each file
2025-04-09 09:44:48 +02:00
a4f391930c
lint - import/no-relative-parent-imports (#8349)
enable import/no-relative-parent-imports
2025-04-08 23:18:07 +02:00
59c145c1f9
lint plugin n - update and cleanup (#8342)
- Update plugin n to fix a deprecation warning
- Order n rules according to docu
- use n:recommended
- comment out all rules from recommened
- enable some rules
2025-04-08 08:35:49 +00:00
d6cb9b51c3
feat(backend): lint rules (#8339)
* eslint import

* eslint comments

* eslint security

* eslint import - rules

* eslint n

* eslint promise

* eslint no-catch-all

* eslint jest

* missing ignore

* disable import/unambiguous as conflicting
2025-04-07 10:53:44 +00:00
2eaaa7af39
feat(backend): chat notify via email (#8314)
* client

* backend

* tests

* also save awaySince timestamp

* remove console.log

* chat notification logic

* send notification mails for chat messages

* externalize online check, resolver resover first

* prevent email notifications for blocked users

comment

* respect user email notification settings

* properly handle null case for email destructuring

* tests

* corrected mail style

---------

Co-authored-by: mahula <lenzmath@posteo.de>
2025-04-07 12:23:36 +02:00
Moriz Wahl
0835057cc7
refactor(backend): comment on observed post notification (#8311)
* all users that observe a post are notified when the post is commented, except of the author of the comment, or users that blocked the commenter

* test to illustrate the behavior of notifications for observed posts
2025-04-04 19:16:50 +02:00
01027e42cc
feat(webapp): track online status (#8312)
* client

* backend

* tests

* also save awaySince timestamp

* remove console.log
2025-04-03 17:19:53 +02:00