From 2c3072fd8a4c3c31297d5f56799fa9200e225971 Mon Sep 17 00:00:00 2001 From: Samy Pesse Date: Thu, 13 Oct 2016 21:52:54 +0200 Subject: [PATCH] Fix update of page attributes in hook "page" --- packages/gitbook-core/src/models/Page.js | 20 +++++++++++--------- packages/gitbook/src/api/decodePage.js | 2 +- packages/gitbook/src/api/encodePage.js | 5 +++++ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/packages/gitbook-core/src/models/Page.js b/packages/gitbook-core/src/models/Page.js index 838191e76..e3c4a96cd 100644 --- a/packages/gitbook-core/src/models/Page.js +++ b/packages/gitbook-core/src/models/Page.js @@ -1,20 +1,22 @@ -const { Record } = require('immutable'); +const { Record, Map, fromJS } = require('immutable'); const DEFAULTS = { - title: '', - content: '', - dir: 'ltr', - depth: 1, - level: '', - previous: null, - next: null + title: '', + content: '', + dir: 'ltr', + depth: 1, + level: '', + previous: null, + next: null, + attributes: Map() }; class Page extends Record(DEFAULTS) { static create(state) { return state instanceof Page ? state : new Page({ - ...state + ...state, + attributes: fromJS(state.attributes) }); } } diff --git a/packages/gitbook/src/api/decodePage.js b/packages/gitbook/src/api/decodePage.js index 395c8ff50..16e5115ad 100644 --- a/packages/gitbook/src/api/decodePage.js +++ b/packages/gitbook/src/api/decodePage.js @@ -19,7 +19,7 @@ function decodePage(output, page, result) { } // Update page attributes - const newAttributes = Immutable.fromJS(page.attributes); + const newAttributes = Immutable.fromJS(result.attributes); page = page.set('attributes', newAttributes); // GitBook 3 diff --git a/packages/gitbook/src/api/encodePage.js b/packages/gitbook/src/api/encodePage.js index 48119f73f..7d563cde0 100644 --- a/packages/gitbook/src/api/encodePage.js +++ b/packages/gitbook/src/api/encodePage.js @@ -23,6 +23,11 @@ function encodePage(output, page) { result.path = file.getPath(); result.rawPath = fs.resolve(result.path); + result.setAttribute = (key, value) => { + result.attributes[key] = value; + return result; + }; + deprecate.field(output, 'page.progress', result, 'progress', function() { return encodeProgress(output, page); }, '"page.progress" property is deprecated');