- Status: [proposed]
- Deciders: [Hakim, Omar, Felix, Bil]
- Date: [2019-06-13]
Technical Story: [description | ticket/issue URL]
import parse from "html-react-parser"; | |
import DOMPurify from "dompurify"; | |
export default function parseHtml(response) { | |
if (response) { | |
const dirty = response; | |
const clean = DOMPurify.sanitize(dirty); | |
return parse(clean); | |
} | |
} |
import { useEffect, useRef } from 'react'; | |
import { useDispatch } from 'react-redux'; | |
function useReduxPolling(action: any, interval = 2000): void { | |
const dispatch = useDispatch(); | |
const callback = useRef(action); | |
useEffect(() => { | |
callback.current = action; |
function waitFor(ms: number): Promise<void> { | |
return new Promise(resolve => setTimeout(resolve, ms)); | |
} | |
export default async function fetchRetry(promise: Promise<unknown>, n: number, waitNseconds = 1000): Promise<unknown> { | |
try { | |
return await promise; | |
} catch (error) { | |
if (n === 1) throw error; |
// Available variables: | |
// - Machine | |
// - interpret | |
// - assign | |
// - send | |
// - sendParent | |
// - spawn | |
// - raise | |
// - actions |
{ | |
"Africa/Abidjan": [8, -5], | |
"Africa/Accra": [8, -2], | |
"Africa/Addis_Ababa": [8, 38], | |
"Africa/Algiers": [28, 3], | |
"Africa/Asmara": [15, 39], | |
"Africa/Bamako": [17, -4], | |
"Africa/Bangui": [7, 21], | |
"Africa/Banjul": [13.46666666, -16.56666666], | |
"Africa/Bissau": [12, -15], |
import React, { useState, useEffect } from 'react'; | |
import { View, Text, Image, AppState } from 'react-native'; | |
const App = () => { | |
const [appState, setAppState] = useState(AppState.currentState); | |
const [isAppBackgrounded, setIsAppBackgrounded] = useState(false); | |
useEffect(() => { | |
const subscription = AppState.addEventListener("change", nextAppState => { | |
setAppState(nextAppState); |
import {useState, useEffect} from 'react'; | |
// Define a type for the prerequisite check function | |
type PrerequisiteCheck = () => Promise<any>; | |
export default function useUserPrerequisites( | |
prerequisiteChecks: PrerequisiteCheck[] = [], | |
) { | |
const [userHasPrerequisite, setUserHasPrerequisites] = useState(false); | |
const [isLoading, setIsLoading] = useState(true); | |
useEffect(() => { | |
const checkPrerequisites = async () => { |