fix(date): correction on date utils
This commit is contained in:
@@ -284,7 +284,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, computed, onMounted, watch, nextTick } from 'vue'
|
||||
import { ref, computed, onMounted, onBeforeUnmount, watch, nextTick } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useAuthStore } from '@/stores/auth'
|
||||
import { useToast } from 'vue-toastification'
|
||||
@@ -320,6 +320,7 @@ const showImageUpload = ref(false)
|
||||
|
||||
const offset = ref(0)
|
||||
const hasMorePosts = ref(true)
|
||||
const dateRefreshInterval = ref(null)
|
||||
|
||||
const newPost = ref({
|
||||
content: '',
|
||||
@@ -327,7 +328,12 @@ const newPost = ref({
|
||||
mentioned_user_ids: []
|
||||
})
|
||||
|
||||
// Force refresh pour les dates relatives
|
||||
const dateRefreshKey = ref(0)
|
||||
|
||||
function formatRelativeDate(date) {
|
||||
// Utiliser dateRefreshKey pour forcer le recalcul
|
||||
dateRefreshKey.value
|
||||
return formatRelativeDateInFrenchTimezone(date)
|
||||
}
|
||||
|
||||
@@ -358,6 +364,14 @@ async function createPost() {
|
||||
// Add new post to the beginning of the list
|
||||
posts.value.unshift(response.data)
|
||||
|
||||
// Forcer le rafraîchissement de la date immédiatement
|
||||
dateRefreshKey.value++
|
||||
|
||||
// Rafraîchir à nouveau après 1 seconde pour s'assurer que ça s'affiche correctement
|
||||
setTimeout(() => {
|
||||
dateRefreshKey.value++
|
||||
}, 1000)
|
||||
|
||||
// Reset form
|
||||
newPost.value = {
|
||||
content: '',
|
||||
@@ -471,13 +485,35 @@ async function fetchPosts() {
|
||||
loading.value = true
|
||||
try {
|
||||
const response = await axios.get(`/api/posts?limit=10&offset=${offset.value}`)
|
||||
|
||||
// S'assurer que les dates sont correctement parsées comme UTC
|
||||
const postsData = response.data.map(post => {
|
||||
// Si la date created_at est une string sans timezone, l'interpréter comme UTC
|
||||
if (post.created_at && typeof post.created_at === 'string' && !post.created_at.endsWith('Z') && !post.created_at.includes('+') && !post.created_at.includes('-', 10)) {
|
||||
post.created_at = post.created_at + 'Z'
|
||||
}
|
||||
// Même chose pour les commentaires
|
||||
if (post.comments) {
|
||||
post.comments = post.comments.map(comment => {
|
||||
if (comment.created_at && typeof comment.created_at === 'string' && !comment.created_at.endsWith('Z') && !comment.created_at.includes('+') && !comment.created_at.includes('-', 10)) {
|
||||
comment.created_at = comment.created_at + 'Z'
|
||||
}
|
||||
return comment
|
||||
})
|
||||
}
|
||||
return post
|
||||
})
|
||||
|
||||
if (offset.value === 0) {
|
||||
posts.value = response.data
|
||||
posts.value = postsData
|
||||
} else {
|
||||
posts.value.push(...response.data)
|
||||
posts.value.push(...postsData)
|
||||
}
|
||||
|
||||
hasMorePosts.value = response.data.length === 10
|
||||
|
||||
// Forcer le rafraîchissement des dates après le chargement
|
||||
dateRefreshKey.value++
|
||||
} catch (error) {
|
||||
toast.error('Erreur lors du chargement des publications')
|
||||
}
|
||||
@@ -549,5 +585,16 @@ onMounted(async () => {
|
||||
await nextTick()
|
||||
await scrollToPost(parseInt(route.query.highlight))
|
||||
}
|
||||
|
||||
// Rafraîchir les dates relatives toutes les 30 secondes
|
||||
dateRefreshInterval.value = setInterval(() => {
|
||||
dateRefreshKey.value++
|
||||
}, 30000)
|
||||
})
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
if (dateRefreshInterval.value) {
|
||||
clearInterval(dateRefreshInterval.value)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user