12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import color from 'color'
-
- export const libHandleFetchResult = async fetchResult => {
- switch (fetchResult.status) {
- case 200:
- case 304:
- const resultJson = await fetchResult.clone().json()
- return new Promise((resolve, reject) => resolve({
- apiResponse: fetchResult,
- body: resultJson
- }))
- case 204:
- return fetchResult
- case 400:
- case 404:
- case 409:
- case 500:
- case 501:
- case 502:
- case 503:
- case 504:
- return new Promise((resolve, reject) => reject(fetchResult)) // @TODO : handle errors from api result
- }
- }
-
- export const libAddAllResourceI18n = (i18n, translation) => {
- Object.keys(translation).forEach(lang =>
- Object.keys(translation[lang]).forEach(namespace =>
- i18n.addResources(lang, namespace, translation[lang][namespace])
- )
- )
- }
-
- export const libGenerateAvatarFromPublicName = publicName => {
- // code from https://stackoverflow.com/questions/3426404/create-a-hexadecimal-colour-based-on-a-string-with-javascript
- const stringToHashCode = str => str.split('').reduce((acc, char) => char.charCodeAt(0) + ((acc << 5) - acc), 0)
-
- const intToRGB = i => {
- const c = (i & 0x00FFFFFF).toString(16).toUpperCase()
- return '00000'.substring(0, 6 - c.length) + c
- }
-
- const hexcolor = '#' + intToRGB(stringToHashCode(publicName))
-
- let canvas = document.createElement('canvas')
-
- // http://code.google.com/p/explorercanvas/wiki/Instructions#Dynamically_created_elements
- if (!canvas.getContext) G_vmlCanvasManager.initElement(canvas)
-
- let ctx = canvas.getContext('2d')
- canvas.width = 44
- canvas.height = 44
-
- const { r, g, b } = color(hexcolor).desaturate(0.75).rgb()
-
- ctx.beginPath()
- ctx.arc(22, 22, 20, 0, 2 * Math.PI, false)
- ctx.fillStyle = 'rgba(' + [r, g, b, 1].join() + ')'
- ctx.fill()
- ctx.stroke()
-
- return canvas.toDataURL('image/png', '')
- }
|