Yuki Takei 6 anni fa
parent
commit
5731650dc9

+ 5 - 2
src/client/js/app.js

@@ -29,7 +29,6 @@ import PageEditorByHackmd from './components/PageEditorByHackmd';
 import Page from './components/Page';
 import PageHistory from './components/PageHistory';
 import PageComments from './components/PageComments';
-import CommentContainer from './components/PageComment/CommentContainer';
 import CommentEditorLazyRenderer from './components/PageComment/CommentEditorLazyRenderer';
 import PageAttachment from './components/PageAttachment';
 import PageStatusAlert from './components/PageStatusAlert';
@@ -47,6 +46,9 @@ import CustomScriptEditor from './components/Admin/CustomScriptEditor';
 import CustomHeaderEditor from './components/Admin/CustomHeaderEditor';
 import AdminRebuildSearch from './components/Admin/AdminRebuildSearch';
 
+import PageContainer from './services/PageContainer';
+import CommentContainer from './components/PageComment/CommentContainer';
+
 
 const logger = loggerFactory('growi:app');
 
@@ -114,7 +116,8 @@ const crowiRenderer = new GrowiRenderer(crowi, null, {
 window.crowiRenderer = crowiRenderer;
 
 // create unstated container instance
-const commentContainer = new CommentContainer(crowi, pageId, pageRevisionId);
+const pageContainer = new PageContainer();
+const commentContainer = new CommentContainer(crowi, pageContainer);
 
 // FIXME
 const isEnabledPlugins = $('body').data('plugin-enabled');

+ 3 - 3
src/client/js/components/PageComment/CommentContainer.jsx

@@ -8,12 +8,12 @@ import { Container } from 'unstated';
  */
 export default class CommentContainer extends Container {
 
-  constructor(crowi, pageId, revisionId) {
+  constructor(crowi, pageContainer) {
     super();
 
     this.crowi = crowi;
-    this.pageId = pageId;
-    this.revisionId = revisionId;
+    this.pageId = pageContainer.state.pageId;
+    this.revisionId = pageContainer.state.revisionId;
 
     this.state = {
       comments: [],

+ 42 - 0
src/client/js/services/PageContainer.js

@@ -0,0 +1,42 @@
+import { Container } from 'unstated';
+
+import * as entities from 'entities';
+
+/**
+ * Service container related to Page
+ * @extends {Container} unstated Container
+ */
+export default class PageContainer extends Container {
+
+  constructor() {
+    super();
+
+    const mainContent = document.querySelector('#content-main');
+
+    if (mainContent == null) {
+      return;
+    }
+
+    let pageContent = '';
+    const rawText = document.getElementById('raw-text-original');
+    if (rawText) {
+      pageContent = rawText.innerHTML;
+    }
+
+    this.state = {
+      markdown: entities.decodeHTML(pageContent),
+
+      pageId: mainContent.getAttribute('data-page-id'),
+      revisionId: mainContent.getAttribute('data-page-revision-id'),
+      revisionCreatedAt: +mainContent.getAttribute('data-page-revision-created'),
+      revisionIdHackmdSynced: mainContent.getAttribute('data-page-revision-id-hackmd-synced'),
+      pageIdOnHackmd: mainContent.getAttribute('data-page-id-on-hackmd'),
+      hasDraftOnHackmd: !!mainContent.getAttribute('data-page-has-draft-on-hackmd'),
+      path: mainContent.getAttribute['data-path'],
+      slackChannels: mainContent.getAttribute('data-slack-channels') || '',
+      templateTagData: mainContent.getAttribute('data-template-tags') || '',
+    };
+
+  }
+
+}