Created
February 20, 2020 08:04
-
-
Save guillaumewuip/62e1a5a3e2d0e7a37677c172edf96388 to your computer and use it in GitHub Desktop.
How to model your entities - 14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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