Improve chat replies, hubs API & UI
Backend: enrich message reply data (include created_at and media_files) and ensure chat owners are treated as members; tighten/extend permission checks and message query filters; fix hub routers so moderators/tags routes are resolved before hub detail; accept hub id from request.data in hub permission/tag views; add PostHub serializer and expose hub_detail on posts. Frontend: update generated API models (postHub, replyTo, members_detail, hub_detail); add hub-related pages/routes and components (HubCard, HubHeader, Tags) and a hub posts feed hook; rework message UI and composer to show richer reply previews (media thumbnails, timestamps), adjust video preload to metadata; add tag selection UI to PostComposer and wire hub tags fetching. Also: minor UI/UX improvements and generated model exports updated to match backend changes.
This commit is contained in:
@@ -1,9 +1,19 @@
|
||||
from django.urls import include, path
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from .views import HubViewSet, HubPermissionViewSet, TagsViewSet
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register('', HubViewSet, basename='hub')
|
||||
router.register('moderators', HubPermissionViewSet, basename='hub-moderator')
|
||||
router.register('tags', TagsViewSet, basename='hub-tag')
|
||||
hub_router = DefaultRouter()
|
||||
hub_router.register('', HubViewSet, basename='hub')
|
||||
|
||||
urlpatterns = router.urls
|
||||
moderators_router = DefaultRouter()
|
||||
moderators_router.register('', HubPermissionViewSet, basename='hub-moderator')
|
||||
|
||||
tags_router = DefaultRouter()
|
||||
tags_router.register('', TagsViewSet, basename='hub-tag')
|
||||
|
||||
# moderators/ and tags/ must be declared BEFORE the hub router urls so that
|
||||
# Django resolves them before the hub's generic /{pk}/ pattern can swallow them.
|
||||
urlpatterns = [
|
||||
path('moderators/', include(moderators_router.urls)),
|
||||
path('tags/', include(tags_router.urls)),
|
||||
] + hub_router.urls
|
||||
|
||||
@@ -223,7 +223,11 @@ class HubPermissionViewSet(viewsets.ModelViewSet):
|
||||
filterset_fields = ['user', 'changing_name', 'changing_description', 'changing_icon', 'changing_banner', 'managing_members', 'managing_posts', 'managing_chats']
|
||||
|
||||
def _get_hub(self):
|
||||
hub_id = self.kwargs.get('hub_pk') or self.request.query_params.get('hub')
|
||||
hub_id = (
|
||||
self.kwargs.get('hub_pk')
|
||||
or self.request.query_params.get('hub')
|
||||
or self.request.data.get('hub')
|
||||
)
|
||||
return Hub.objects.get(pk=hub_id)
|
||||
|
||||
def get_queryset(self):
|
||||
@@ -279,10 +283,16 @@ class TagsViewSet(viewsets.ModelViewSet):
|
||||
ordering = ['name']
|
||||
|
||||
def _get_hub(self):
|
||||
hub_id = self.kwargs.get('hub_pk') or self.request.query_params.get('hub')
|
||||
hub_id = (
|
||||
self.kwargs.get('hub_pk')
|
||||
or self.request.query_params.get('hub')
|
||||
or self.request.data.get('hub')
|
||||
)
|
||||
return Hub.objects.get(pk=hub_id)
|
||||
|
||||
def get_queryset(self):
|
||||
if self.kwargs.get('pk'):
|
||||
return Tags.objects.all()
|
||||
return Tags.objects.filter(hub=self._get_hub())
|
||||
|
||||
def perform_create(self, serializer):
|
||||
|
||||
Reference in New Issue
Block a user