123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- (function () {
- let prevSelectedApp = {name: ''}
-
- getSelectedApp = name => {
- switch (name) {
- case 'html-document':
- return appHtmlDocument
- case 'thread':
- return appThread
- case 'file':
- return appFile
- case 'admin_workspace_user':
- return appAdminWorkspaceUser
- default:
- return null
- }
- }
-
- //@TODO make a file action.tracimCustomEvent.js that will contains all customEvent that tracim_frontend call
- // => pb with that is that appInterface cant use import since it is not part of the build webpack
- // use module.export and require
- // doesn't work, cant resolve a file outside of the build dir
-
- GLOBAL_renderAppFeature = app => {
- console.log('%cGLOBAL_renderAppFeature', 'color: #5cebeb', app)
-
- const selectedApp = getSelectedApp(app.config.slug)
-
- if (selectedApp.isRendered) {
- GLOBAL_dispatchEvent({type: `${app.config.slug}_showApp`, data: app}) // handled by html-documents:src/container/AdminWorkspaceUser.jsx
- } else {
- selectedApp.renderAppFeature(app)
- selectedApp.isRendered = true
- prevSelectedApp.isRendered = false
- prevSelectedApp = selectedApp
- }
- }
-
- GLOBAL_renderAppFullscreen = app => {
- console.log('%cGLOBAL_renderAppFullscreen', 'color: #5cebeb', app)
-
- const selectedApp = getSelectedApp(app.config.slug)
-
- if (selectedApp.isRendered) {
- GLOBAL_dispatchEvent({type: `${app.config.slug}_showApp`, data: app}) // handled by html-documents:src/container/AdminWorkspaceUser.jsx
- } else {
- selectedApp.renderAppFullscreen(app)
- selectedApp.isRendered = true
- prevSelectedApp.isRendered = false
- prevSelectedApp = selectedApp
- }
- }
-
- GLOBAL_renderAppPopupCreation = app => {
- console.log('%cGLOBAL_renderAppPopupCreation', 'color: #5cebeb', app)
-
- const selectedApp = getSelectedApp(app.config.slug)
-
- if (!selectedApp) {
- console.log('Error in GLOBAL_renderAppPopupCreation, selectedApp is undefined', app)
- return
- }
-
- getSelectedApp(app.config.slug).renderAppPopupCreation(app)
- }
-
- GLOBAL_dispatchEvent = ({type, data}) => {
- console.log('%cGLOBAL_dispatchEvent', 'color: #fff', type, data)
-
- const event = new CustomEvent('appCustomEvent', {detail: {type, data}})
- document.dispatchEvent(event)
- }
-
- GLOBAL_eventReducer = ({detail: {type, data}}) => {
- switch (type) {
- case 'hide_popupCreateContent':
- console.log('%cGLOBAL_eventReducer Custom Event', 'color: #28a745', type, data)
- getSelectedApp(data.name).unmountApp('popupCreateContentContainer')
- break
- case 'unmount_app':
- console.log('%cGLOBAL_eventReducer Custom Event', 'color: #28a745', type, data)
- if (prevSelectedApp.name === '') return
-
- prevSelectedApp.unmountApp('appFeatureContainer')
- prevSelectedApp.unmountApp('popupCreateContentContainer')
- prevSelectedApp.isRendered = false
- break
- }
- }
-
- document.addEventListener('appCustomEvent', GLOBAL_eventReducer)
- })()
|