2159 Commits

Author SHA1 Message Date
sebastian2357
ff366a4075
fix(webapp): mobile optimization (#8516)
* - optimized header
- added possibility of extra mobile logo

* - changed behavior of NotificationMenu link get directly open for mobile

* - moved notification links to the top of the menu

* - optimized chat view for mobile

* - added logo branding structure

* - added logo branding structure

* - fixed chat height

* - fixed paddings for internal pages

* Fix linting

* Fix linting

---------

Co-authored-by: Sebastian Stein <sebastian@codepassion.de>
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-05-09 17:04:06 +00:00
Wolfgang Huß
b471a8f92b
fix(backend): fix user profile and group links in e-mails (#8512)
* Add e-mail .env settings

* Fix user profile and group links

* fix snapshots

---------

Co-authored-by: Moriz Wahl <moriz.wahl@gmx.de>
2025-05-09 11:51:21 +00:00
2278a9e311
fix(backend): fix registration with invite code (#8513)
* fix registration with invite code

* save one db call

* fix
2025-05-09 11:20:56 +00:00
989d5ff781
fix(backend): invite codes - hotfix 1 (#8508)
* hotfix invite codes

* fix tests & ensure correct behaviour
2025-05-08 22:57:55 +00:00
Moriz Wahl
fbec8288b2
refactor(backend): category seed (#8505)
* define ids and slugs in categories, check for existing ids, only seed the new ids

* seed categories respecting existing categories

---------

Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-05-08 20:27:41 +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
Wolfgang Huß
e3864b1f9d
feat(webapp): change german to du and dich (#8507)
* Change 'Du' -> 'du'

* Change 'Dich' -> 'dich'

* Change backend e-mails 'Dich' -> 'dich'

* Change backend e-mails 'Du' -> 'du'

* Fix e-mail snapshots

* Revert "Auxiliary commit to revert individual files from eea84f60ba9c17d48a735632709a66452f0494e9"

This reverts commit d80994c3b8bff311422cb44aab1275c31286595a.

* Change backend e-mails 'Du' -> 'du', 'Dich' -> 'dich'

* Change webapp 'Dein<x>' -> 'dein<x>'

* Change backend 'Dein<x>' -> 'dein<x>'
2025-05-08 18:48:26 +02:00
Moriz Wahl
50bc62428e
fix(backend): correct email from (#8501) 2025-05-07 19:42:39 +02: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
1536a32b3a
refactor(backend): refactor badges (#8465)
* new badge descriptions

* new user verification color

* new svgs for elevated roles

---------

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-05-02 09:59:18 +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
21f343b8cf
feat(backend): distanceToMe (#8462)
* calculate distance between current user and queried user

* fix query for unset location

* use database to calculate distance

* rename distance to distance to me, 100% calculation done in DB

* distanceToMe tests

* lint fixes
2025-04-30 18:12:20 +00: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
Wolfgang Huß
48c7bd0033
refactor(webapp): make login, registration, password-reset layout brandable (#8440)
* Make login, registration, password-reset layout brandable

- Rename some variables related to this

* Remove experimental code

* add lodash types

* fix build

fix type

---------

Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-04-28 16:58:35 +00:00
d7d8a242cd
fix(backend): fixes for branding (#8449)
* copy from branding folder to backend public folder

provide default branding/public folder

* copy public folder correctly

* copy files again for providers.json

* copy more public folders

* more copy

* revert change

* fix naming of called script when using db:data:branding

* prod command for branding data

* close database connection

* lint fixes

* increase test timeout again
2025-04-28 18:17:18 +02:00
Wolfgang Huß
a5ee90a95d
fix(webapp): refine little things (#8382)
* Refine locals of some internal pages headlines

* Fix tool tip text

* Fix 'email' -> 'e-mail'

* Syncronize 'metadata.ts' with webapp

* Refine e-mail notifications

* Adjust notification settings buttons

* Refine third party setting

* Fix post teaser counter icon tooltips translations

* Refine e-mail notifications

* Refine third party setting

* notification spec snapshot

---------

Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-04-28 13:32:23 +00:00
2f808f8fcc
revokeBadge also removes selection (#8437) 2025-04-25 17:45:56 +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
5883818b91
refactor(backend): default badges, always return a badge (#8430)
* default badges, always return a badge

- default badges for trophy and verification
- always return a badge instead of null
- isDefault field on Badge

lint fixes

* default_verification svg

* add default-trophy

Co-authored-by: Sebastian Stein <sebastian@codepassion.de>

---------

Co-authored-by: Sebastian Stein <sebastian@codepassion.de>
2025-04-23 17:12:24 +00:00
873cd6cd34
refactor(backend): allow to set selected badge-slot to null (#8421)
* allow to set selected badgeslot to null

Free a specific badge slot by setting it to null

* Update backend/src/schema/resolvers/users.ts

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

---------

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
Co-authored-by: Max <maxharz@gmail.com>
2025-04-23 18:21:06 +02:00
7592fe29be
move graphql types into graphql folder (#8420) 2025-04-22 13:28:01 +00: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
5d154bcb85
fix migrations (#8390)
async migrations should not call next()

Co-authored-by: mahula <lenzmath@posteo.de>
2025-04-16 11:08:30 +02:00
4bd42009fd
refactor(backend): fix is muted by me query (#8365)
* use EXISTS for isMutedByMe

* corrected query in gql

---------

Co-authored-by: mahula <lenzmath@posteo.de>
2025-04-15 18:17:13 +02: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
fa0280f9e9
fix block user (#8363) 2025-04-11 23:44:21 +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