diff --git a/src/internal_time_ago.js b/src/internal_time_ago.js
new file mode 100644
index 0000000..f34062f
--- /dev/null
+++ b/src/internal_time_ago.js
@@ -0,0 +1,64 @@
+export function time_ago(time) {
+ const time_date = new Date(time)
+ const now_date = new Date(Date.now())
+ const ago = now_date - time_date
+ return internal_time_ago(ago)
+}
+
+function internal_time_ago(time) {
+
+ switch (typeof time) {
+ case 'number':
+ break;
+ case 'string':
+ time = +new Date(time);
+ break;
+ case 'object':
+ if (time.constructor === Date) time = time.getTime();
+ break;
+ default:
+ time = +new Date();
+ }
+
+ const time_formats = [
+ [60, 'seconds', 1], // 60
+ [120, '1 minute ago', '1 minute from now'], // 60*2
+ [3600, 'minutes', 60], // 60*60, 60
+ [7200, '1 hour ago', '1 hour from now'], // 60*60*2
+ [86400, 'hours', 3600], // 60*60*24, 60*60
+ [172800, 'Yesterday', 'Tomorrow'], // 60*60*24*2
+ [604800, 'days', 86400], // 60*60*24*7, 60*60*24
+ [1209600, 'Last week', 'Next week'], // 60*60*24*7*4*2
+ [2419200, 'weeks', 604800], // 60*60*24*7*4, 60*60*24*7
+ [4838400, 'Last month', 'Next month'], // 60*60*24*7*4*2
+ [29030400, 'months', 2419200], // 60*60*24*7*4*12, 60*60*24*7*4
+ [58060800, 'Last year', 'Next year'], // 60*60*24*7*4*12*2
+ [2903040000, 'years', 29030400], // 60*60*24*7*4*12*100, 60*60*24*7*4*12
+ [5806080000, 'Last century', 'Next century'], // 60*60*24*7*4*12*100*2
+ [58060800000, 'centuries', 2903040000] // 60*60*24*7*4*12*100*20, 60*60*24*7*4*12*100
+ ];
+
+ let seconds = time / 1000
+
+ let token = 'ago'
+ let list_choice = 1
+
+ if (seconds === 0) {
+ return 'Just now'
+ }
+
+ if (seconds < 0) {
+ seconds = Math.abs(seconds);
+ token = 'from now';
+ list_choice = 2;
+ }
+ let i = 0, format;
+ while (format = time_formats[i++])
+ if (seconds < format[0]) {
+ if (typeof format[2] == 'string')
+ return format[list_choice];
+ else
+ return Math.floor(seconds / format[2]) + ' ' + format[1] + ' ' + token;
+ }
+ return time;
+}
diff --git a/src/views/contents/ContentCard.vue b/src/views/contents/ContentCard.vue
index 7ef9650..2f04a4c 100644
--- a/src/views/contents/ContentCard.vue
+++ b/src/views/contents/ContentCard.vue
@@ -2,7 +2,12 @@
-
{{ props.content.title }}
+
+ {{ props.content.title }}
+
+ {{ time_ago(props.content.createdAt) }}
+
+
@@ -39,11 +44,11 @@
Commentaires
-
+
@@ -57,6 +62,7 @@
import {defineProps, computed} from 'vue';
import MessageList from "@/views/messages/MessageList.vue";
import PostMessage from "@/views/messages/PostMessage.vue";
+import {time_ago} from "@/internal_time_ago.js";
const isHttpUrl = computed(() => props.content?.uri?.startsWith('http'))
diff --git a/src/views/contents/ContentList.vue b/src/views/contents/ContentList.vue
index c13ffaa..649562f 100644
--- a/src/views/contents/ContentList.vue
+++ b/src/views/contents/ContentList.vue
@@ -37,13 +37,13 @@ const props = defineProps({
const client = useClient()
const contents = ref([])
-const max_items = 10
+const page_size = 10
const errorMessage = ref()
let last_id = null
async function load({done}) {
try {
- let uri = `/api/contents/user/${props.creatorId}?max_items=${max_items}`
+ let uri = `/api/contents/user/${props.creatorId}?page_size=${page_size}`
if (last_id !== null) uri = uri + `&last_id=${last_id}`
console.log(`Fetching content at: ${uri}`)
@@ -59,7 +59,7 @@ async function load({done}) {
last_id = last_content.id
}
- if (contentCount < max_items)
+ if (contentCount < page_size)
done('empty')
else
done('ok')
diff --git a/src/views/creators/CreatorBanner.vue b/src/views/creators/CreatorBanner.vue
index 9287ead..8df3153 100644
--- a/src/views/creators/CreatorBanner.vue
+++ b/src/views/creators/CreatorBanner.vue
@@ -1,5 +1,5 @@
-
+
@@ -70,10 +70,10 @@
onmouseover="this.style.backgroundColor='#555';" onmouseout="this.style.backgroundColor='#333';">
S'ABONNER
-
+
-
-
+
+
@@ -82,8 +82,8 @@
diff --git a/src/views/messages/MessageList.vue b/src/views/messages/MessageList.vue
index 10581f5..8907ff0 100644
--- a/src/views/messages/MessageList.vue
+++ b/src/views/messages/MessageList.vue
@@ -1,40 +1,99 @@
-
-
-
+
+
+
+
+
+
+
+
+ Voir plus de commentaires
+
+
+
+
+ Il n'y a pas plus de commentaires
+
+
+
+ {{ errorMessage }}
+
+
+
\ No newline at end of file
diff --git a/src/views/messages/PostMessage.vue b/src/views/messages/PostMessage.vue
index 148dae9..877ef28 100644
--- a/src/views/messages/PostMessage.vue
+++ b/src/views/messages/PostMessage.vue
@@ -39,7 +39,7 @@ import {useClient} from '@/plugins/api.js';
import {defineProps, ref} from 'vue';
const props = defineProps({
- contentId: {
+ subjectId: {
type: String,
required: true
}
@@ -52,7 +52,7 @@ const publish = async () => {
await client.post(
`/api/messages/`,
{
- "subjectId": props.contentId,
+ "subjectId": props.subjectId,
"message": message.value
});
}
diff --git a/src/views/tools/SeizeIndicator.vue b/src/views/tools/SizeIndicator.vue
similarity index 100%
rename from src/views/tools/SeizeIndicator.vue
rename to src/views/tools/SizeIndicator.vue