Newer
Older
<template>
<el-dropdown class="notification">
<el-button type="primary">
<font-awesome-icon icon="fa-solid fa-envelope" />
Notification<el-icon class="el-icon--right"><arrow-down /></el-icon>
</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item v-for="offer in offers" :key="offer.offerId">
<router-link
:to="
'/matched-result/' + offer.offerId + '/' + offer.wishlistItemId
"
>
You have a offer matched (click to check details)
</router-link>
</el-dropdown-item>
<el-dropdown-item v-for="offer in offers2" :key="offer.offerId">
<router-link
:to="
'/matched-result/' + offer.offerId + '/' + offer.wishlistItemId
"
>
You have a wishlist matched (click to check details)
</router-link>
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</template>
<script setup lang="ts">
import { ref, watch } from "vue";
import { OfferNotification } from "@/models/OfferNotification";
import * as NotificationService from "@/services/NotificationService";
import { useRoute } from "vue-router";
const route = useRoute();
function getCookie(userId: string) {
const value = `; ${document.cookie}`;
const parts: string[] = value.split(`; ${userId}=`);
if (parts.length === 2) return parts?.pop()?.split(";").shift();
}
const offers = ref([] as OfferNotification[]);
async function fetchNotification(userId: number) {
const response = await NotificationService.getNotificationFromServerWithID(
userId
);
// const response2 =
// await NotificationService.getNotificationwishFromServerWithID(userId);
// console.log(response2);
// offers2.value = response2.data;
}
async function fetchNotificationwish(userId: number) {
const response2 =
await NotificationService.getNotificationwishFromServerWithID(userId);
offers2.value = response2.data;
}
watch(
() => route.name,
(values) => {
const userIdString: string = getCookie("userId");
let userIdNumber = +userIdString;
fetchNotification(userIdNumber);
},
{ immediate: true }
);
</script>
<style scoped>
.notification {
margin: auto;
justify-content: space-between;
}
.example-showcase .el-dropdown + .el-dropdown {
margin-left: 15px;
}
.example-showcase .el-dropdown-link {
cursor: pointer;
color: var(--el-color-primary);
display: flex;
align-items: center;
}
</style>