@agderposten/organization-provider
v2.0.1
Published
HOC that provides the `organization` object to its children if given either an `environmentId` or a `hostname`. Attempts to use `Next.js` `getInitialProps`. You probably need `@babel/polyfill` for this to work.
Downloads
21
Readme
Organization Provider
HOC that provides the organization
object to its children if given either an environmentId
or a hostname
. Attempts to use Next.js
getInitialProps
. You probably need @babel/polyfill
for this to work.
Installation
npm install @agderposten/organization-provider
Usage
Preferably use this HOC only once and on the root component.
import React from 'react';
import organizationProvider from '@agderposten/organization-provider';
export default () => organizationProvider({
environmentId: '4d63d444-d418-4981-8c0e-f5d26ea334db'
}, ({organization}) => (
<div>{organization.name}</div>
));
// ... or:
export default () => organizationProvider({
hostname: 'agderposten.no'
}, ({organization}) => (
<div>{organization.name}</div>
));
// ... or implicit, where it tries to read the current hostname
export default () => organizationProvider(({organization}) => (
<div>{organization.name}</div>
));
Override the implicit hostname by providing it through query string with key __hostname__
: ?__hostname__=agderposten.no
.
You can also provide an optional LoaderComponent
as the last function argument that will be rendered when loading organization information:
export default () => organizationProvider({
environmentId: '4d63d444-d418-4981-8c0e-f5d26ea334db'
}, ({organization}) => (
<div>{organization.name}</div>
), () => (
<div>Loading organization information...</div>
));
organization
The organization
object looks something like this:
{
id: '4d63d444-d418-4981-8c0e-f5d26ea334db',
name: 'Agderposten',
code: 'AG',
color: '#1a6cbb',
locale: 'nb-NO',
urls: {
home: 'http://www.agderposten.no',
user: 'https://les.agderposten.no',
paywall: 'http://www.agderposten.no/kjop-tilgang',
login: 'https://les.agderposten.no/logg-inn',
registration: 'https://les.agderposten.no/registrering'
},
images: {
favicon: 'https://api.agderposten.no/static/8105276e-4493-4b3c-8aa6-e99514a16a17.png',
logo: {
white: 'https://api.agderposten.no/static/49bc22fc-64a2-4abc-abea-778909f1c6d9.png',
black: 'https://api.agderposten.no/static/9b476c35-64fa-4254-8d39-7b43c189ecf2.png'
}
}
}
Encountering an error, the organization
object is given an error
property:
{
error: {
code: 'unable_to_fetch',
message: 'Unable to fetch.'
}
}