MainPage dynamique (profile)
This commit is contained in:
91
src/layouts/MainPage.vue
Normal file
91
src/layouts/MainPage.vue
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
<template>
|
||||||
|
<v-container style="margin-top: 5%;">
|
||||||
|
<v-row style="background-color: #c4c4c4;">
|
||||||
|
<v-col align="center">
|
||||||
|
<div>
|
||||||
|
<p>Router : {{ selectedUsername }}</p>
|
||||||
|
<div v-if="PublicCreatorData">
|
||||||
|
<h1>{{ PublicCreatorData.userName }}</h1>
|
||||||
|
<h1>{{ PublicCreatorData.firstName }} {{ PublicCreatorData.lastName }}</h1>
|
||||||
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
<p v-if="errorMessage">{{ errorMessage }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form @submit.prevent="manualFetch">
|
||||||
|
<input v-model="manualUsername" placeholder="Enter username" />
|
||||||
|
<button type="submit">Fetch User</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-container>
|
||||||
|
|
||||||
|
<v-snackbar v-model="errorSnackBar">
|
||||||
|
{{ snackBarMessage }}
|
||||||
|
<template v-slot:actions>
|
||||||
|
<v-btn color="red" variant="text" @click="errorSnackBar = false">Fermer</v-btn>
|
||||||
|
</template>
|
||||||
|
</v-snackbar>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useClient } from "@/plugins/api.js";
|
||||||
|
import { onMounted, ref, watch } from 'vue';
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
|
|
||||||
|
const PublicCreatorData = ref(null);
|
||||||
|
const selectedUsername = ref('');
|
||||||
|
const manualUsername = ref('');
|
||||||
|
const route = useRoute();
|
||||||
|
const client = useClient();
|
||||||
|
|
||||||
|
let errorSnackBar = ref(false);
|
||||||
|
let snackBarMessage = ref('');
|
||||||
|
const errorMessage = ref('');
|
||||||
|
|
||||||
|
const fetchUser = async (username) => {
|
||||||
|
console.log(`Fetching user: ${username}`);
|
||||||
|
try {
|
||||||
|
const response = await client.get(`/api/GetCreatorInfo`, {
|
||||||
|
params: {
|
||||||
|
UserName: username
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const data = response.data;
|
||||||
|
console.log(`Data received: `, data);
|
||||||
|
if (data && Object.keys(data).length > 0 && (data.userName || data.firstName || data.lastName)) {
|
||||||
|
PublicCreatorData.value = data; // Met à jour la référence réactive
|
||||||
|
errorMessage.value = '';
|
||||||
|
errorSnackBar.value = false;
|
||||||
|
} else {
|
||||||
|
PublicCreatorData.value = null; // Réinitialise la référence si l'utilisateur n'est pas trouvé
|
||||||
|
errorMessage.value = "Utilisateur non trouvé";
|
||||||
|
snackBarMessage.value = "Utilisateur non trouvé";
|
||||||
|
errorSnackBar.value = true;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Error fetching user: ${error}`);
|
||||||
|
PublicCreatorData.value = null;
|
||||||
|
errorMessage.value = "Erreur lors de la récupération des données";
|
||||||
|
snackBarMessage.value = "Erreur lors de la récupération des données";
|
||||||
|
errorSnackBar.value = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateUser = () => {
|
||||||
|
selectedUsername.value = route.params.username;
|
||||||
|
console.log(`Route username: ${selectedUsername.value}`);
|
||||||
|
if (selectedUsername.value) {
|
||||||
|
fetchUser(selectedUsername.value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const manualFetch = () => {
|
||||||
|
fetchUser(manualUsername.value);
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(updateUser);
|
||||||
|
|
||||||
|
watch(() => route.params.username, updateUser);
|
||||||
|
</script>
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
<!-- Fiche test pour router -->
|
|
||||||
<template>
|
|
||||||
<div v-if="user">
|
|
||||||
<h1>{{ user.name }}</h1>
|
|
||||||
<p>{{ user.bio }}</p>
|
|
||||||
<!-- Afficher plus de contenu utilisateur ici -->
|
|
||||||
</div>
|
|
||||||
<div v-else>
|
|
||||||
<p>Utilisateur non trouvé</p>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
user: null
|
|
||||||
};
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.fetchUser();
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
'$route.params.username': 'fetchUser'
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
fetchUser() {
|
|
||||||
const username = this.$route.params.username;
|
|
||||||
fetch(`https://api.hutopy.ca/users/${username}`)
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
if (data) {
|
|
||||||
this.user = data;
|
|
||||||
} else {
|
|
||||||
this.user = null;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
this.user = null;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -8,7 +8,7 @@ import HelpAndContact from '@/views/tos/HelpAndContact.vue'
|
|||||||
import TermsAndConditions from '@/views/tos/TermsAndConditions.vue'
|
import TermsAndConditions from '@/views/tos/TermsAndConditions.vue'
|
||||||
import Transactions from '@/views/tos/Transactions.vue'
|
import Transactions from '@/views/tos/Transactions.vue'
|
||||||
import { createRouter, createWebHistory } from 'vue-router'
|
import { createRouter, createWebHistory } from 'vue-router'
|
||||||
import UserProfile from '../layouts/UserProfile.vue'
|
import MainPage from '../layouts/MainPage.vue'
|
||||||
import LoginView from '../views/LoginView.vue'
|
import LoginView from '../views/LoginView.vue'
|
||||||
import PaymentCompleted from '../views/PayementCompleted.vue'
|
import PaymentCompleted from '../views/PayementCompleted.vue'
|
||||||
import SignupView from '../views/SignupView.vue'
|
import SignupView from '../views/SignupView.vue'
|
||||||
@@ -136,7 +136,7 @@ const routes = [
|
|||||||
{
|
{
|
||||||
path: '/:username',
|
path: '/:username',
|
||||||
name: 'user-profile',
|
name: 'user-profile',
|
||||||
component: UserProfile
|
component: MainPage
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -152,6 +152,7 @@ const router = createRouter({
|
|||||||
scrollBehavior(to, from, savedPosition) {
|
scrollBehavior(to, from, savedPosition) {
|
||||||
return { top: 0 };
|
return { top: 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
export default router
|
export default router
|
||||||
|
|||||||
Reference in New Issue
Block a user