diff --git a/src/views/contents/ContentCard.vue b/src/views/contents/ContentCard.vue index 71e03a9..39dd88e 100644 --- a/src/views/contents/ContentCard.vue +++ b/src/views/contents/ContentCard.vue @@ -85,7 +85,7 @@ :creator-logo="creatorLogo" iconColorClass="text-black" > - +
@@ -94,11 +94,12 @@ :subject-id="props.content.id" :messages="messages" > -
- +
@@ -121,7 +122,7 @@ const props = defineProps({ } }); -const emits = defineEmits(['content:deleted']) +const emits = defineEmits(['content-deleted']) const contentId = computed(() => props.content.id) const creatorId = computed(() => props.content.createdBy) @@ -167,8 +168,8 @@ function editContent() { async function deleteContent() { const client = useClient() const response = await client.delete(`/api/contents/${contentId.value}`) - if (response.status >= 200 && response.status < 300){ - emits('content:deleted', contentId.value) + if (response.status >= 200 && response.status < 300) { + emits('content-deleted', contentId.value) } } diff --git a/src/views/contents/ContentList.vue b/src/views/contents/ContentList.vue index d282efb..86a3ff2 100644 --- a/src/views/contents/ContentList.vue +++ b/src/views/contents/ContentList.vue @@ -6,7 +6,7 @@ @@ -32,12 +32,15 @@ const props = defineProps({ creatorId: { type: String, required: true - } + }, + contents: { + type: Array, + default: () => [], + }, }); const client = useClient() -const contents = ref([]) -const page_size = 10 +const contents = ref(props.contents) const errorMessage = ref() let last_id = null @@ -60,7 +63,9 @@ const creatorIdWatcher = watch( } }) -async function fetchContents({done}) { +async function fetchContents({done, page_size = 10}) { + if (props.creatorId == null) return + try { let uri = `/api/contents/creator/${props.creatorId}?page_size=${page_size}` if (last_id !== null) uri = uri + `&last_id=${last_id}` @@ -84,7 +89,7 @@ async function fetchContents({done}) { } } catch (error) { console.error("Failed to fetch posts", error); - errorMessage.value = error + errorMessage.value = error.message || "Failed to fetch contents"; done('error') } } diff --git a/src/views/contents/PublishContentButton.vue b/src/views/contents/PublishContentButton.vue index 01c771e..fb315d1 100644 --- a/src/views/contents/PublishContentButton.vue +++ b/src/views/contents/PublishContentButton.vue @@ -8,6 +8,8 @@ const props = defineProps({ creator: {type: Object, required: true}, }); +const emits = defineEmits(['content-posted']) + const userStore = useUserStore(); const isDialogActive = ref(false); @@ -28,15 +30,17 @@ async function publishPost() { }); try { - await client.post( + const content = await client.post( `/api/contents/`, formData, { headers: { 'Content-Type': 'multipart/form-data', } - } - ); + }) + + emits('content-posted', content.data) + closeDialog(); } catch (error) { console.error(error); @@ -69,7 +73,7 @@ const closeDialog = () => { :style="{ border: `3px solid ${creator.colors.menu}` }"> - +
Quicky
@@ -116,14 +120,13 @@ const closeDialog = () => { multiple dropzone prepend-icon="" - placeholder="Glissez et déposez des fichiers ici ou cliquez pour sélectionner des fichiers" - > + placeholder="Glissez et déposez des fichiers ici ou cliquez pour sélectionner des fichiers" + > - + Publier - - diff --git a/src/views/creators/CreatorBanner.vue b/src/views/creators/CreatorBanner.vue index 9edccdc..a92884a 100644 --- a/src/views/creators/CreatorBanner.vue +++ b/src/views/creators/CreatorBanner.vue @@ -38,7 +38,7 @@
- +
- -
{{ creator.about.title }}
- + + + +
+ {{ creator.about.title }} +
+ +
@@ -96,6 +104,12 @@ const props = defineProps({ creator: {type: Object, required: true}, }); +const emits = defineEmits(['content-posted']) + +function addContent(content) { + emits('content-posted', content) +} + function GetSocialsUrls() { const socials = []; diff --git a/src/views/creators/CreatorPage.vue b/src/views/creators/CreatorPage.vue index eb082ac..a6e1d0a 100644 --- a/src/views/creators/CreatorPage.vue +++ b/src/views/creators/CreatorPage.vue @@ -1,12 +1,15 @@