diff --git a/client/src/stores/expertCockpit.ts b/client/src/stores/expertCockpit.ts
index ba8574d5..10816bca 100644
--- a/client/src/stores/expertCockpit.ts
+++ b/client/src/stores/expertCockpit.ts
@@ -1,50 +1,15 @@
-import { useCourseData } from "@/composables";
+import { useCourseData, useCourseSessionDetailQuery } from "@/composables";
+import type { CourseSessionAttendanceCourseObjectType } from "@/gql/graphql";
import { useUserStore } from "@/stores/user";
import type { CircleLight, CourseSessionUser, ExpertSessionUser } from "@/types";
import log from "loglevel";
import { defineStore } from "pinia";
+import { computed, ref } from "vue";
type CircleExpertCockpit = CircleLight & {
name: string;
};
-export type ExpertCockpitStoreState = {
- courseSessionMembers: CourseSessionUser[] | undefined;
- circles: CircleExpertCockpit[] | undefined;
- currentCircle: CircleExpertCockpit | undefined;
-};
-
-export const useExpertCockpitStore = defineStore({
- id: "expertCockpit",
- state: () => {
- return {
- courseSessionMembers: undefined,
- circles: [],
- currentCircle: undefined,
- } as ExpertCockpitStoreState;
- },
- actions: {
- async loadCircles(
- courseSlug: string,
- currentCourseSessionUser: CourseSessionUser | undefined
- ) {
- log.debug("loadCircles called", courseSlug);
-
- this.circles = await courseCircles(courseSlug, currentCourseSessionUser);
-
- if (this.circles?.length) {
- await this.setCurrentCourseCircle(this.circles[0].slug);
- }
- },
- async setCurrentCourseCircle(circleSlug: string) {
- this.currentCircle = this.circles?.find((c) => c.slug === circleSlug);
- },
- async setCurrentCourseCircleFromEvent(event: CircleLight) {
- await this.setCurrentCourseCircle(event.slug);
- },
- },
-});
-
async function courseCircles(
courseSlug: string,
currentCourseSessionUser: CourseSessionUser | undefined
@@ -74,3 +39,57 @@ async function courseCircles(
return [];
}
+
+export type ExpertCockpitStoreState = {
+ courseSessionMembers: CourseSessionUser[] | undefined;
+ circles: CircleExpertCockpit[] | undefined;
+ currentCircle: CircleExpertCockpit | undefined;
+};
+
+export const useExpertCockpitStore = defineStore("expertCockpit", () => {
+ const courseSessionMembers = ref(undefined);
+ const circles = ref([]);
+ const currentCircle = ref(undefined);
+ const courseSessionDetailResult = useCourseSessionDetailQuery();
+
+ const attendanceCourses = computed(() => {
+ return (
+ courseSessionDetailResult.courseSessionDetail.value?.attendance_courses ?? []
+ );
+ });
+
+ const currentCourse = computed(() => {
+ return attendanceCourses.value.find(
+ (i) => i.learning_content.circle?.id == currentCircle.value?.id
+ );
+ });
+
+ const loadCircles = async (
+ courseSlug: string,
+ currentCourseSessionUser: CourseSessionUser | undefined
+ ) => {
+ log.debug("loadCircles called", courseSlug);
+
+ circles.value = await courseCircles(courseSlug, currentCourseSessionUser);
+
+ if (circles.value?.length) {
+ await setCurrentCourseCircle(circles.value[0].slug);
+ }
+ };
+
+ const setCurrentCourseCircle = async (circleSlug: string) => {
+ currentCircle.value = circles.value?.find((c) => c.slug === circleSlug);
+ };
+ const setCurrentCourseCircleFromEvent = async (event: CircleLight) => {
+ await setCurrentCourseCircle(event.slug);
+ };
+
+ return {
+ courseSessionMembers,
+ circles,
+ currentCircle,
+ loadCircles,
+ currentCourse,
+ setCurrentCourseCircleFromEvent,
+ };
+});