"""
api/v1/web/views/feature_flags.py

GET /api/v1/web/feature-flags/
    Returns the current value of all user-visible feature flags.
    No authentication required (public read).
"""
from rest_framework import permissions
from rest_framework.response import Response
from rest_framework.views import APIView

from apps.platform.settings.models import PlatformFeatureFlag


class FeatureFlagsView(APIView):
    permission_classes = [permissions.AllowAny]

    def get(self, request):
        rows = PlatformFeatureFlag.objects.all()
        flags = {r.feature_key: r.is_enabled for r in rows}
        # Defaults for known keys not yet in DB
        flags.setdefault(PlatformFeatureFlag.BINARY_TREE_DETAILS, False)
        flags.setdefault(PlatformFeatureFlag.CHAT_ENABLED, True)
        flags.setdefault(PlatformFeatureFlag.REGISTRATION_ENABLED, True)
        flags.setdefault(PlatformFeatureFlag.LOGIN_ENABLED, True)
        return Response({'success': True, 'data': flags})
