diff --git a/package.json b/package.json index bd22100..8f13070 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ }, "dependencies": { "expo": "^30.0.1", + "fp-ts": "^1.9.0", "react": "16.3.1", "react-native": "https://github.com/expo/react-native/archive/sdk-30.0.0.tar.gz", "react-navigation": "^2.18.0", diff --git a/src/core/super-heroes-repository.ts b/src/core/super-heroes-repository.ts index 8fdb56c..ec66861 100644 --- a/src/core/super-heroes-repository.ts +++ b/src/core/super-heroes-repository.ts @@ -1,3 +1,4 @@ +import { fromNullable, Option } from "fp-ts/lib/Option"; import { SuperHero } from "./model"; const superHeroes: SuperHero[] = [ @@ -102,12 +103,15 @@ const superHeroes: SuperHero[] = [ export function getSuperHeroes(): Promise { return new Promise((resolve) => { - resolve(superHeroes); + setTimeout(() => resolve(superHeroes), 1500); }); } -export function getSuperHeroById(id: string): Promise { - return new Promise((resolve) => { - superHeroes.filter((superHero) => superHero.name === id); +export function getSuperHeroById(id: string): Promise> { + return new Promise>((resolve) => { + setTimeout(() => { + const superHero = superHeroes.find((sh) => sh.name === id); + resolve(fromNullable(superHero)); + }, 1500); }); } diff --git a/yarn.lock b/yarn.lock index 93cbbcd..896dc7e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2698,6 +2698,10 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +fp-ts@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.9.0.tgz#52acf85692025b34285ff4014f39af72d1107e0b" + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"