diff --git a/cookbook/views/api.py b/cookbook/views/api.py index 13b12d42d..4e24d6108 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -1654,7 +1654,8 @@ class AutomationViewSet(LoggingMixin, StandardFilterModelViewSet): @extend_schema_view(list=extend_schema(parameters=[ - OpenApiParameter(name='internal_note', description=_('Text field to store data that gets carried over to the UserSpace created from the InviteLink'), type=str) + OpenApiParameter(name='internal_note', description=_('Text field to store data that gets carried over to the UserSpace created from the InviteLink'), type=str), + OpenApiParameter(name='unused', description=_('Only return InviteLinks that have not been used yet.'), type=bool), ])) class InviteLinkViewSet(LoggingMixin, StandardFilterModelViewSet): queryset = InviteLink.objects @@ -1667,6 +1668,10 @@ class InviteLinkViewSet(LoggingMixin, StandardFilterModelViewSet): if internal_note is not None: self.queryset = self.queryset.filter(internal_note=internal_note) + unused = self.request.query_params.get('unused', False) + if unused: + self.queryset = self.queryset.filter(used_by=None) + if is_space_owner(self.request.user, self.request.space): self.queryset = self.queryset.filter(space=self.request.space).all() return super().get_queryset() diff --git a/vue3/src/components/model_editors/InviteLinkEditor.vue b/vue3/src/components/model_editors/InviteLinkEditor.vue index 911918eeb..38801ad3a 100644 --- a/vue3/src/components/model_editors/InviteLinkEditor.vue +++ b/vue3/src/components/model_editors/InviteLinkEditor.vue @@ -16,6 +16,11 @@ + + + @@ -31,6 +36,7 @@ import {ErrorMessageType, useMessageStore} from "@/stores/MessageStore"; import {DateTime} from "luxon"; import ModelEditorBase from "@/components/model_editors/ModelEditorBase.vue"; import {useModelEditorFunctions} from "@/composables/useModelEditorFunctions"; +import BtnCopy from "@/components/buttons/BtnCopy.vue"; const props = defineProps({ @@ -79,6 +85,16 @@ function initializeEditor(){ useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err) }) } + +/** + * returns url for invite link + * @param inviteLink InviteLink object to create url for + */ +function inviteLinkUrl(inviteLink: InviteLink) { + return `${location.protocol}//${location.host}/invite/${inviteLink.uuid}` +} + +