# hooks 1. [Installing](#installing) 1. [Login / logout](#login--logout) 1. [Get data](#get-data) 1. [Fake mode](#fake-mode) ## Installing `npm i -S hooks @skolplattformen/embedded-api` `yarn add hooks @skolplattformen/embedded-api` ## ApiProvider In order to use api hooks, you must wrap your app in an ApiProvider ```javascript import React from 'react' import { ApiProvider } from '@skolplattformen/hooks' import init from '@skolplattformen/api-skolplattformet' import { CookieManager } from '@react-native-cookies/cookies' import AsyncStorage from '@react-native-async-storage/async-storage' import { RootComponent } from './components/root' import crashlytics from '@react-native-firebase/crashlytics' const api = init(fetch, () => CookieManager.clearAll()) const reporter = { log: (message) => crashlytics().log(message), error: (error, label) => crashlytics().recordError(error, label), } export default () => ( ) ``` ## Login / logout ```javascript import { useApi } from '@skolplattformen/hooks' export default function LoginController () { const { api, isLoggedIn } = useApi() api.on('login', () => { /* do login stuff */ }) api.on('logout', () => { /* do logout stuff */ }) const [personalNumber, setPersonalNumber] = useState() const [bankIdStatus, setBankIdStatus] = useState('') const doLogin = async () => { const status = await api.login(personalNumber) openBankID(status.token) status.on('PENDING', () => { setBankIdStatus('BankID app not yet opened') }) status.on('USER_SIGN', () => { setBankIdStatus('BankID app is open') }) status.on('OK', () => { setBankIdStatus('BankID signed. NOTE! User is NOT yet logged in!') }) status.on('ERROR', (err) => { setBankIdStatus('BankID failed') }) }) return (