Skip to content

Instantly share code, notes, and snippets.

@guillaumewuip
Created February 20, 2020 08:04
Show Gist options
  • Save guillaumewuip/62e1a5a3e2d0e7a37677c172edf96388 to your computer and use it in GitHub Desktop.
Save guillaumewuip/62e1a5a3e2d0e7a37677c172edf96388 to your computer and use it in GitHub Desktop.
How to model your entities - 14
import {
createText,
createImage,
createAudio,
AudioMessage,
description,
url,
fold,
} from ‘fabulous-Message-library’;
// data fetching
async function fetchMessages() {
const { rawMessages } = await fetch.get(‘http://messages.io’)
const messages = rawMessages
.map(message => {
if (...) {
return createAudio(...)
}
if (...) {
return createImage(...)
}
return createText(...);
})
return messages;
}
// Views
function AudioMessage({ message: AudioMessage }) {
return <div>
<p>{description(message)}</p>
<Player source={url(message)}>
</div>
}
function MessageComponent({ message: Message }) {
return fold({
isText: message => <TextMessage message={message} />,
isImage: message => <ImageMessage message={message} />,
isAudio: message => <AudioMessage message={message} />,
})(message);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment