diff --git a/src/c3nav/mapdata/api/updates.py b/src/c3nav/mapdata/api/updates.py index ee0b1374..6da37e6b 100644 --- a/src/c3nav/mapdata/api/updates.py +++ b/src/c3nav/mapdata/api/updates.py @@ -60,7 +60,7 @@ class UserDataSchema(BaseSchema): example=[2, 5], ) overlays: list[DataOverlaySchema] - quests: bool + quests: dict[str, str] class FetchUpdatesResponseSchema(BaseSchema): diff --git a/src/c3nav/mapdata/utils/user.py b/src/c3nav/mapdata/utils/user.py index c5b20ae8..b5d08f3d 100644 --- a/src/c3nav/mapdata/utils/user.py +++ b/src/c3nav/mapdata/utils/user.py @@ -6,6 +6,7 @@ from django.utils.translation import ngettext_lazy from c3nav.mapdata.models import DataOverlay from c3nav.mapdata.models.access import AccessPermission, AccessRestriction from c3nav.mapdata.models.locations import Position +from c3nav.mapdata.quests import quest_types from c3nav.mapdata.schemas.models import DataOverlaySchema @@ -39,7 +40,11 @@ def get_user_data(request): DataOverlaySchema.model_validate(overlay).model_dump() for overlay in DataOverlay.qs_for_request(request) ], - 'quests': bool(request.user.is_superuser or request.user_permissions.quests), + 'quests': ( + {key: quest.quest_type_label + for key, quest in quest_types.items() + if request.user.is_superuser or request.user_permissions.quests} + ), }) return result diff --git a/src/c3nav/site/static/site/js/c3nav.js b/src/c3nav/site/static/site/js/c3nav.js index 71f59554..0dee93f8 100644 --- a/src/c3nav/site/static/site/js/c3nav.js +++ b/src/c3nav/site/static/site/js/c3nav.js @@ -1925,11 +1925,10 @@ c3nav = { }, _update_quests: function () { if (!c3nav.map) return; - console.log(c3nav.user_data); if (c3nav._questsControl) { - if (!c3nav.user_data.quests) c3nav.map.removeControl(c3nav._questsControl); + if (!Object.keys(c3nav.user_data.quests).length) c3nav.map.removeControl(c3nav._questsControl); } else { - if (c3nav.user_data.quests) c3nav._questsControl = (new QuestsControl()).addTo(c3nav.map); + if (Object.keys(c3nav.user_data.quests).length) c3nav._questsControl = (new QuestsControl()).addTo(c3nav.map); } },