Skip to content
Snippets Groups Projects
thunks.ts 2.09 KiB
Newer Older
import { Instalike } from '@jmetterrothan/instalike';
import { data } from 'autoprefixer';

import { AppThunkAction } from '../types';
import { failurePostAction, loadPostAction, setPost, sucessPostAction } from './actions';


// Calcul temps de publication d'un post / commentaire
export const calculateTime = (createdAt: string): string => {
    const createdDate = new Date(createdAt);
    const currentDate = new Date();
    const timeDiff = Math.abs(currentDate.getTime() - createdDate.getTime());
    const diffSeconds = Math.floor(timeDiff / 1000); // ajout des secondes
    const diffMinutes = Math.floor(timeDiff / (1000 * 60));
    const diffHours = Math.floor(timeDiff / (1000 * 60 * 60));
    const diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
  
    if (diffSeconds < 60) {
      return diffSeconds === 1 ? `${diffSeconds} seconde ago` : `${diffSeconds} secondes ago`;
    } else if (diffMinutes < 60) {
      return diffMinutes === 1 ? `${diffMinutes} minute ago` : `${diffMinutes} minutes ago`;
    } else if (diffHours < 24) {
      return diffHours === 1 ? `${diffHours} heure ago` : `${diffHours} heures ago`;
    } else {
      return diffDays === 1 ? `${diffDays} day ago` : `${diffDays} days ago`;
    }
Chloé JACOB's avatar
Chloé JACOB committed
}


// Réccupérer les posts
export const fetchPost = (postid: number): AppThunkAction<Promise<void>> => {
  return async (dispatch, getState, api) => {
    dispatch(loadPostAction());

    try {
      const { data } = await api.posts.find(postid).fetch();
      dispatch(setPost(data));

      dispatch(sucessPostAction());
    } catch (eee) {
      dispatch(failurePostAction());

      throw eee;
    }
  };
};


// Ajouter un post
export const addPost = (resources: File[], location: string, caption: string): AppThunkAction<Promise<void>> => { //ajouter les autres éléments (accessibilityCaption, hasCommentsDisabled) ?
  return async (dispatch, getState, api) => {
    try {
      const { data } = await api.posts.create({
        resources: resources,
        location: location,
        caption: caption,
      });
      dispatch(setPost(data));
    } catch (fff) {
      throw fff;
    }
  };
};