diff --git a/frontend/src/api/loadICal.ts b/frontend/src/api/loadICal.ts index e835dd9..74a1569 100644 --- a/frontend/src/api/loadICal.ts +++ b/frontend/src/api/loadICal.ts @@ -14,8 +14,8 @@ //You should have received a copy of the GNU Affero General Public License //along with this program. If not, see . -export async function fetchICalendarEvents() { - const response = await fetch("https://cal.htwk-leipzig.de/api/feed?token=rk47mvraeb43t3g"); +export async function fetchICalendarEvents(token: string): Promise { + const response = await fetch("/api/feed?token=" + token, { method: "GET" }); if (!response.ok) { throw new Error("Network response was not ok"); } diff --git a/frontend/src/components/CalendarViewer.vue b/frontend/src/components/CalendarViewer.vue index 8d36be1..daa5957 100644 --- a/frontend/src/components/CalendarViewer.vue +++ b/frontend/src/components/CalendarViewer.vue @@ -18,16 +18,22 @@ import { fetchICalendarEvents } from "@/api/loadICal.ts"; const { t } = useI18n({ useScope: "global" }); +const props = defineProps({ + token: { + type: String, + required: true, + }, +}); + +const selectedToken = computed(() => props.token); + const mobilePage = inject("mobilePage") as Ref; const date: Ref = ref(new Date()); -tokenStore().setToken("3rz8vb3974tr2b") - - const { data: calendar } = useQuery({ - queryKey: ["userCalendar", tokenStore().token], + queryKey: ["userCalendar", selectedToken], queryFn: () => - fetchICalendarEvents(), + fetchICalendarEvents(selectedToken.value), select: (data) => { return data; }, diff --git a/frontend/src/view/UserCalendar.vue b/frontend/src/view/UserCalendar.vue index e5ef613..75d8d09 100644 --- a/frontend/src/view/UserCalendar.vue +++ b/frontend/src/view/UserCalendar.vue @@ -2,8 +2,35 @@ import CalendarViewer from "@/components/CalendarViewer.vue"; import DynamicPage from "@/view/DynamicPage.vue"; +import { useI18n } from "vue-i18n"; +import { ref } from "vue"; +import { extractToken } from "@/helpers/token.ts"; +import { useToast } from "primevue/usetoast"; +import moduleStore from "@/store/moduleStore.ts"; +import tokenStore from "@/store/tokenStore.ts"; +const { t } = useI18n({ useScope: "global" }); +const toast = useToast(); +const token = ref(""); + +function loadCalendar() { + try { + token.value = extractToken(token.value); + } catch (e) { + console.error(e); + toast.add({ + severity: "error", + summary: t("editCalendarView.error"), + detail: t("editCalendarView.invalidToken"), + life: 3000, + }); + return; + } + + moduleStore().removeAllModules(); + tokenStore().setToken(token.value); +} @@ -16,16 +43,20 @@ import DynamicPage from "@/view/DynamicPage.vue"; >