kahuna/public/js/components/gr-image-usage-photosales/gr-image-usage-photosales.tsx (52 lines of code) (raw):
import * as React from "react";
import * as angular from "angular";
import { react2angular } from "react2angular";
import {useEffect, useState} from "react";
import * as moment from 'moment';
import "./gr-image-usage-photosales.css";
export interface Usage {
title: string,
usageName: string,
usageType: string,
dateAdded: Date
}
export interface UsageProps {
usages: Usage[];
}
export interface UsagePropsWrapper {
props: UsageProps;
}
const ImageUsagePhotoSales: React.FC<UsagePropsWrapper> = ({ props }) => {
const [usages, setUsages] = useState(props.usages);
const [photoSalesUsage, setPhotoSalesUsage] = useState<Usage|null>(null);
const photoSalesIdentifier = "sendToPhotoSales";
const formatTimestamp = (timestamp: Date) => {
return moment(timestamp).fromNow();
};
useEffect(()=> {
const photoSalesUsage = usages.find(usage => usage.usageType === photoSalesIdentifier);
if (photoSalesUsage) {
setPhotoSalesUsage(photoSalesUsage);
setUsages(usages.filter(usage => usage.usageType !== photoSalesIdentifier));
} else {
setPhotoSalesUsage(null);
}
}, []);
return (
<div>
{photoSalesUsage && (
<div className="image-info__group">
<span className="usageNameStyle">
{photoSalesUsage.usageName}
</span>
<ul>
<li className="usageRecordStyle">
{photoSalesUsage.title}
<div className="usageMoreInfoStyle">
<span className="usageDateAddedStyle">{formatTimestamp(photoSalesUsage.dateAdded)}</span>
</div>
</li>
</ul>
</div>
)}
</div>
);
};
export const imageUsagePhotoSales = angular.module('gr.imageUsagePhotoSales', [])
.component('imageUsagePhotoSales', react2angular(ImageUsagePhotoSales, ["props"]));