From 10da302a13597138c519f423135dfd35a220940f Mon Sep 17 00:00:00 2001 From: ibrahim Date: Mon, 22 Jul 2024 12:42:35 +0200 Subject: [PATCH] fix: reset invite codes if study gets published as public --- .../lib/features/study/study_controller.dart | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/designer_v2/lib/features/study/study_controller.dart b/designer_v2/lib/features/study/study_controller.dart index ecc186cb0..7fae928a5 100644 --- a/designer_v2/lib/features/study/study_controller.dart +++ b/designer_v2/lib/features/study/study_controller.dart @@ -6,6 +6,7 @@ import 'package:studyu_designer_v2/domain/study.dart'; import 'package:studyu_designer_v2/features/study/study_base_controller.dart'; import 'package:studyu_designer_v2/features/study/study_controller_state.dart'; import 'package:studyu_designer_v2/repositories/auth_repository.dart'; +import 'package:studyu_designer_v2/repositories/invite_code_repository.dart'; import 'package:studyu_designer_v2/repositories/model_repository_events.dart'; import 'package:studyu_designer_v2/repositories/study_repository.dart'; import 'package:studyu_designer_v2/routing/router.dart'; @@ -56,6 +57,18 @@ class StudyController extends _$StudyController { Future publishStudy({bool toRegistry = false}) { final study = state.study.value!; study.registryPublished = toRegistry; + + // Remove all invites if study is open + if (study.participation == Participation.open && study.invites != null) { + final codeRepository = + ref.watch(inviteCodeRepositoryProvider(study.id)).delegate; + + // Create a copy of the invites list to avoid errors during deletion as the original study.invites list is modified within the loop + for (final StudyInvite invite in List.from(study.invites!)) { + codeRepository.delete(invite); + } + } + return state.studyRepository.launch(study); }