77 Commits

Author SHA1 Message Date
Robert Schäfer
d6a8de478b
feat(backend): migrate to s3 (#8545)
## 🍰 Pullrequest
This will migrate our assets to an objectstorage via S3.

Before this PR is rolled out, the S3 credentials need to be configured in the respective infrastructure repository. The migration is implemented in a backend migration, i.e. I expect the `initContainer` to take a little longer but I hope then it's going to be fine. If any errors occcur, the migration should be repeatable, since the disk volume is still there.

### Issues
The backend having direct access on disk.

### Todo
- [ ] Configure backend environment variables in every infrastructure repo
- [ ] Remove kubernetes uploads volume in a future PR

Commits:

* refactor: follow @ulfgebhardt
  Here: https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/8545#pullrequestreview-2846163417
  I don't know why the PR didn't include these changes already, I believe I made a mistake during rebase and lost the relevant commits.
* refactor: use typescript assertions
  I found it a better way to react to this comment: https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/8545/files#r2092766596
* add S3 credentials
* refactor: easier to remember credentials
  It's for local development only
* give init container necessary file access
* fix: wrong upload location on production
* refactor: follow @ulfgebhardt's review
  See: https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/8545#pullrequestreview-2881626504
2025-06-01 09:53:31 +00:00
4b3a26d517
feat(webapp): shout comments (#8600)
* shout comments

* fix notifications

* Remove whitespace for empty category sections

* Overhaul post actions

* Adjust spacing

* Allow fine-grained size control for icons and circle buttons via css variables; adjust comments layout

* Adjust spacing

* Add test for ActionButton (WIP)

* Rename import

* Remove text and add count bubble

* Use filled icons to indicate active states

* Adjust sizes and orientation

* Remove unused properties, add test

* Fix ObserveButton test

* Fix ShoutButton test

* fix tests

* Adapt styles

* Adjust style for larger numbers

* Remove unused icon

* Fix test structure

* Remove unused class names

---------

Co-authored-by: Maximilian Harz <maxharz@gmail.com>
2025-05-31 00:13:15 +02:00
Moriz Wahl
fb2ef852a1
feat(backend): pin public group posts (#8606)
* 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

* feat(backend): pin public group posts

* allow posts in public groups to be pinned by admins

---------

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-05-28 19:52:30 +02: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
ad4b6e0d79
refactor(webapp): remove email normalization (#8580)
* remove email normalization from webapp

* missing change

* fix error when email is not defined

* fix lint

* remove obsolete test

* remove obsolete tests

* fix password reset

---------

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-05-25 15:58:41 +02:00
2b0d38fdff
feat(backend): autoselect badges when rewarding and the user still have free slots (#8577)
* autoselect badges when rewarding and the suer still have free slots

* improve semantics

---------

Co-authored-by: Hendrik-cpu <62690517+Hendrik-cpu@users.noreply.github.com>
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-05-25 14:43:38 +02:00
Robert Schäfer
497dabdef9
build(backend): upgrade outdated S3 client (#8463)
I think we can merge this already. The S3 client dependency is outdated
and since the code is behind a feature flag it doesn't get executed. Why
not merge it then?
2025-05-22 14:29:17 +00:00
Moriz Wahl
35729dfb6a
fix(backend): user role in group in notifications (#8552)
Co-authored-by: Max <maxharz@gmail.com>
2025-05-20 06:54:10 +00:00
a9ac75cf0c
fix statistics: reports (#8576) 2025-05-19 11:24:24 +00:00
34c0e5166f
fix(backend): fix statistics and introduce new values (#8550)
* fix statistics and introduce new values

* fix locales
2025-05-12 17:51:15 +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
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
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
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
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
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
Moriz Wahl
538f409086
feat(backend): observe posts (#8292)
* 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 observation of a post on and off
2025-03-26 22:16:06 +01:00
Wolfgang Huß
64f276e56c Fix divers links etc. in diverse readmes 2023-10-26 19:04:51 +02:00
f9dad608c7
Merge branch 'master' into chat-last-messages 2023-07-18 15:22:56 +02:00
cca020b6b3
aligned backend and frontend queries, show last message and unread count in room list 2023-07-18 11:14:06 +02:00
98cad5b568
changed order of room to lastMessageAt 2023-07-18 10:47:56 +02:00
Moriz Wahl
c05d39f4e6
Merge branch 'master' into new-room-properties 2023-07-17 14:11:33 +02:00
mahula
58e25e6361
Merge branch 'master' into chat-order-by-indexid 2023-07-17 13:36:52 +02:00
Moriz Wahl
1ac3553200
Merge branch 'master' into new-room-properties 2023-07-17 13:06:35 +02:00
Moriz Wahl
edaf72b674 add room query pagination 2023-07-17 11:56:58 +02:00
1e77e9aec0
Merge branch 'master' into unread-rooms-query 2023-07-17 10:23:56 +02:00
661c2f1b71
implement room order 2023-07-15 12:51:33 +02:00
5f4a973e2a
backend allow room filter by id for single rooms 2023-07-15 10:38:35 +02:00
Moriz Wahl
3d4def7c10
Merge branch 'master' into new-room-properties 2023-07-14 19:56:42 +02:00
Moriz Wahl
09be4d3442 test unread rooms query 2023-07-14 14:40:38 +02:00
Moriz Wahl
4310b3fa48 create message mutation returns full message object 2023-07-14 12:51:54 +02:00
Moriz Wahl
1fd67aa581 add unreadCount property 2023-07-14 12:34:12 +02:00
Moriz Wahl
2fe93892a1 full room object for create room mutation 2023-07-14 12:21:40 +02:00
Moriz Wahl
1d92b40f50 lastMessage in room working 2023-07-14 11:52:51 +02:00
54cf5b37a5
order by indexId instead of createdAt 2023-07-14 11:09:04 +02:00
a9ad8c34c8
Merge branch 'master' into message-pagination 2023-07-14 09:13:40 +02:00
Moriz Wahl
032bca1b64 add last message at, use cypher statements for roomName and avatar 2023-07-13 19:09:17 +02:00
06b15dcd5c
expect specific order of elements when querying, fix pagination query 2023-07-13 12:18:05 +02:00
a82e76f366
test message ordering & pagination 2023-07-13 11:13:06 +02:00
Moriz Wahl
9f1f028454 handle seen prop 2023-07-12 11:53:49 +02:00