
/**
 * Updates likes or dislikes for an article or comment dynamically.
 * @param {string} type - 'article' or 'comment'.
 * @param {string} action - 'like' or 'dislike'.
 * @param {string} id - ID of the article or comment.
 * @param {string} articleId - (Optional) ID of the parent article if updating a comment.
 * @param {Array} articles - The articles array.
 */
export const updateLikeDislike = async ({ type, action, id, articleId = null, articles }) => {
    try {
        // Find the target item
        let target;
        if (type === 'article') {
            target = articles.value.find((a) => a.id === id);
        } else if (type === 'comment') {
            const article = articles.value.find((a) => a.id === articleId);
            if (article) {
                target = article.comments.find((c) => c.id === id);
            }
        }

        if (!target) {
            console.error(`Target ${type} not found`);
            return;
        }

        // Increment the likes or dislikes
        if (action === 'like') {
            target.likes += 1;
        } else if (action === 'dislike') {
            target.dislikes += 1;
        } else {
            console.error('Invalid action specified');
            return;
        }

        // Determine API endpoint
        const endpoint = type === 'article' ? `/api/articles/${id}` : `/api/comments/${id}`;

        // Make the API call
        await $fetch(endpoint, {
            method: 'PUT',
            body: {
                [action === 'like' ? 'likes' : 'dislikes']: action === 'like' ? target.likes : target.dislikes,
                ...(type === 'comment' && { articleId }),
            },
        });

        console.log(`${type} ${action} updated successfully`);
    } catch (error) {
        console.error(`Error updating ${type} ${action}:`, error);
    }
};
