|  | @@ -1,33 +1,44 @@
 | 
	
		
			
			| 1 | 1 |  import React from 'react'
 | 
	
		
			
			| 2 | 2 |  import PageHtmlComponent from '../component/PageHtml.jsx'
 | 
	
		
			
			| 3 | 3 |  import {
 | 
	
		
			
			|  | 4 | +  handleFetchResult,
 | 
	
		
			
			| 4 | 5 |    PopinFixed,
 | 
	
		
			
			| 5 | 6 |    PopinFixedHeader,
 | 
	
		
			
			| 6 | 7 |    PopinFixedOption,
 | 
	
		
			
			| 7 | 8 |    PopinFixedContent,
 | 
	
		
			
			| 8 | 9 |    Timeline
 | 
	
		
			
			| 9 | 10 |  } from 'tracim_lib'
 | 
	
		
			
			|  | 11 | +import { timelineDebugData } from '../timelineDebugData.js'
 | 
	
		
			
			| 10 | 12 |  import { FETCH_CONFIG } from '../helper.js'
 | 
	
		
			
			| 11 | 13 |  
 | 
	
		
			
			| 12 | 14 |  const debug = {
 | 
	
		
			
			| 13 | 15 |    workspace: {
 | 
	
		
			
			| 14 |  | -    id: '-1',
 | 
	
		
			
			| 15 |  | -    title: 'Test debugg workspace'
 | 
	
		
			
			|  | 16 | +    id: -1,
 | 
	
		
			
			|  | 17 | +    title: 'Test debug workspace'
 | 
	
		
			
			|  | 18 | +  },
 | 
	
		
			
			|  | 19 | +  appConfig: {
 | 
	
		
			
			|  | 20 | +    name: 'PageHtml',
 | 
	
		
			
			|  | 21 | +    customClass: 'wsFilePageHtml',
 | 
	
		
			
			|  | 22 | +    icon: 'fa fa-file-word-o',
 | 
	
		
			
			|  | 23 | +    apiUrl: 'http://localhost:3001'
 | 
	
		
			
			|  | 24 | +  },
 | 
	
		
			
			|  | 25 | +  loggedUser: {
 | 
	
		
			
			|  | 26 | +    id: 5,
 | 
	
		
			
			|  | 27 | +    username: 'Smoi',
 | 
	
		
			
			|  | 28 | +    firstname: 'Côme',
 | 
	
		
			
			|  | 29 | +    lastname: 'Stoilenom',
 | 
	
		
			
			|  | 30 | +    email: 'osef@algoo.fr',
 | 
	
		
			
			|  | 31 | +    avatar: 'https://avatars3.githubusercontent.com/u/11177014?s=460&v=4'
 | 
	
		
			
			| 16 | 32 |    },
 | 
	
		
			
			| 17 | 33 |    content: {
 | 
	
		
			
			| 18 |  | -    id: '-1',
 | 
	
		
			
			|  | 34 | +    id: -1,
 | 
	
		
			
			| 19 | 35 |      type: 'pageHtml',
 | 
	
		
			
			| 20 |  | -    title: 'Test debugg pageHtml',
 | 
	
		
			
			|  | 36 | +    title: 'Test debug pageHtml',
 | 
	
		
			
			| 21 | 37 |      status: 'validated',
 | 
	
		
			
			| 22 | 38 |      version: '-1',
 | 
	
		
			
			| 23 | 39 |      text: 'This is the default pageHtml content for debug purpose'
 | 
	
		
			
			| 24 | 40 |    },
 | 
	
		
			
			| 25 |  | -  appConfig: {
 | 
	
		
			
			| 26 |  | -    name: 'PageHtml',
 | 
	
		
			
			| 27 |  | -    customClass: 'wsFilePageHtml',
 | 
	
		
			
			| 28 |  | -    icon: 'fa fa-file-word-o',
 | 
	
		
			
			| 29 |  | -    apiUrl: 'http://localhost:3001'
 | 
	
		
			
			| 30 |  | -  }
 | 
	
		
			
			|  | 41 | +  timeline: timelineDebugData
 | 
	
		
			
			| 31 | 42 |  }
 | 
	
		
			
			| 32 | 43 |  
 | 
	
		
			
			| 33 | 44 |  class pageHtml extends React.Component {
 | 
	
	
		
			
			|  | @@ -37,8 +48,10 @@ class pageHtml extends React.Component {
 | 
	
		
			
			| 37 | 48 |        appName: 'PageHtml',
 | 
	
		
			
			| 38 | 49 |        isVisible: true,
 | 
	
		
			
			| 39 | 50 |        workspace: props.app ? props.app.workspace : debug.workspace,
 | 
	
		
			
			|  | 51 | +      appConfig: props.app ? props.app.appConfig : debug.appConfig,
 | 
	
		
			
			|  | 52 | +      loggedUser: props.app ? props.app.loggedUser : debug.loggedUser,
 | 
	
		
			
			| 40 | 53 |        content: props.app ? props.app.content : debug.content,
 | 
	
		
			
			| 41 |  | -      appConfig: props.app ? props.app.appConfig : debug.appConfig
 | 
	
		
			
			|  | 54 | +      timeline: props.app ? [] : debug.timeline
 | 
	
		
			
			| 42 | 55 |      }
 | 
	
		
			
			| 43 | 56 |  
 | 
	
		
			
			| 44 | 57 |      document.addEventListener('appCustomEvent', this.customEventReducer)
 | 
	
	
		
			
			|  | @@ -46,32 +59,24 @@ class pageHtml extends React.Component {
 | 
	
		
			
			| 46 | 59 |  
 | 
	
		
			
			| 47 | 60 |    async componentDidMount () {
 | 
	
		
			
			| 48 | 61 |      const { workspace, content, appConfig } = this.state
 | 
	
		
			
			| 49 |  | -    if (content.id === '-1') return
 | 
	
		
			
			|  | 62 | +    if (content.id === '-1') return // debug case
 | 
	
		
			
			| 50 | 63 |  
 | 
	
		
			
			| 51 |  | -    const fetchResult = await fetch(`${appConfig.apiUrl}/workspace/${workspace.id}/content/${content.id}`, {
 | 
	
		
			
			|  | 64 | +    const fetchResultPageHtml = await fetch(`${appConfig.apiUrl}/workspace/${workspace.id}/content/${content.id}`, {
 | 
	
		
			
			|  | 65 | +      ...FETCH_CONFIG,
 | 
	
		
			
			|  | 66 | +      method: 'GET'
 | 
	
		
			
			|  | 67 | +    })
 | 
	
		
			
			|  | 68 | +    const fetchResultTimeline = await fetch(`${appConfig.apiUrl}/workspace/${workspace.id}/content/${content.id}/timeline`, {
 | 
	
		
			
			| 52 | 69 |        ...FETCH_CONFIG,
 | 
	
		
			
			| 53 | 70 |        method: 'GET'
 | 
	
		
			
			| 54 | 71 |      })
 | 
	
		
			
			| 55 | 72 |  
 | 
	
		
			
			| 56 |  | -    fetchResult.json = await (async () => {
 | 
	
		
			
			| 57 |  | -      switch (fetchResult.status) {
 | 
	
		
			
			| 58 |  | -        case 200:
 | 
	
		
			
			| 59 |  | -        case 304:
 | 
	
		
			
			| 60 |  | -          return fetchResult.json()
 | 
	
		
			
			| 61 |  | -        case 204:
 | 
	
		
			
			| 62 |  | -        case 400:
 | 
	
		
			
			| 63 |  | -        case 404:
 | 
	
		
			
			| 64 |  | -        case 409:
 | 
	
		
			
			| 65 |  | -        case 500:
 | 
	
		
			
			| 66 |  | -        case 501:
 | 
	
		
			
			| 67 |  | -        case 502:
 | 
	
		
			
			| 68 |  | -        case 503:
 | 
	
		
			
			| 69 |  | -        case 504:
 | 
	
		
			
			| 70 |  | -          return `Error: ${fetchResult.status}` // @TODO : handle errors from api result
 | 
	
		
			
			| 71 |  | -      }
 | 
	
		
			
			| 72 |  | -    })()
 | 
	
		
			
			| 73 |  | -
 | 
	
		
			
			| 74 |  | -    this.setState({content: fetchResult.json})
 | 
	
		
			
			|  | 73 | +    fetchResultPageHtml.json = await handleFetchResult(fetchResultPageHtml)
 | 
	
		
			
			|  | 74 | +    fetchResultTimeline.json = await handleFetchResult(fetchResultTimeline)
 | 
	
		
			
			|  | 75 | +
 | 
	
		
			
			|  | 76 | +    this.setState({
 | 
	
		
			
			|  | 77 | +      content: fetchResultPageHtml.json,
 | 
	
		
			
			|  | 78 | +      timeline: fetchResultTimeline.json
 | 
	
		
			
			|  | 79 | +    })
 | 
	
		
			
			| 75 | 80 |    }
 | 
	
		
			
			| 76 | 81 |  
 | 
	
		
			
			| 77 | 82 |    customEventReducer = action => { // action: { type: '', data: {} }
 | 
	
	
		
			
			|  | @@ -88,7 +93,7 @@ class pageHtml extends React.Component {
 | 
	
		
			
			| 88 | 93 |    }
 | 
	
		
			
			| 89 | 94 |  
 | 
	
		
			
			| 90 | 95 |    render () {
 | 
	
		
			
			| 91 |  | -    const { isVisible, content, appConfig } = this.state
 | 
	
		
			
			|  | 96 | +    const { isVisible, loggedUser, content, timeline, appConfig } = this.state
 | 
	
		
			
			| 92 | 97 |  
 | 
	
		
			
			| 93 | 98 |      if (!isVisible) return null
 | 
	
		
			
			| 94 | 99 |  
 | 
	
	
		
			
			|  | @@ -112,7 +117,8 @@ class pageHtml extends React.Component {
 | 
	
		
			
			| 112 | 117 |  
 | 
	
		
			
			| 113 | 118 |            <Timeline
 | 
	
		
			
			| 114 | 119 |              customClass={`${appConfig.customClass}__contentpage`}
 | 
	
		
			
			| 115 |  | -            key={'pageHtml__timeline'}
 | 
	
		
			
			|  | 120 | +            loggedUser={loggedUser}
 | 
	
		
			
			|  | 121 | +            timelineData={timeline}
 | 
	
		
			
			| 116 | 122 |            />
 | 
	
		
			
			| 117 | 123 |          </PopinFixedContent>
 | 
	
		
			
			| 118 | 124 |        </PopinFixed>
 |