Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add database support for addons #415

Merged
merged 6 commits into from
Sep 1, 2016
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 10 additions & 1 deletion dist/client/manager/provider.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ var _storybookChannelPagebus = require('@kadira/storybook-channel-pagebus');

var _storybookChannelPagebus2 = _interopRequireDefault(_storybookChannelPagebus);

var _storybookDatabaseLocal = require('@kadira/storybook-database-local');

var _storybookDatabaseLocal2 = _interopRequireDefault(_storybookDatabaseLocal);

var _preview = require('./preview');

var _preview2 = _interopRequireDefault(_preview);
Expand All @@ -58,11 +62,16 @@ var ReactProvider = function (_Provider) {
function ReactProvider() {
(0, _classCallCheck3.default)(this, ReactProvider);

var _this = (0, _possibleConstructorReturn3.default)(this, (0, _getPrototypeOf2.default)(ReactProvider).call(this));
var _this = (0, _possibleConstructorReturn3.default)(this, (ReactProvider.__proto__ || (0, _getPrototypeOf2.default)(ReactProvider)).call(this));

_this.dataId = _uuid2.default.v4();
_this.channel = (0, _storybookChannelPagebus2.default)({ key: _this.dataId });
_storybookAddons2.default.setChannel(_this.channel);
_this.database = _storybookAddons2.default.getDatabase();
if (!_this.database) {
_this.database = (0, _storybookDatabaseLocal2.default)({ url: location.origin + '/db' });
_storybookAddons2.default.setDatabase(_this.database);
}
return _this;
}

Expand Down
6 changes: 6 additions & 0 deletions dist/server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ var _middleware = require('./middleware');

var _middleware2 = _interopRequireDefault(_middleware);

var _middleware3 = require('@kadira/storybook-database-local/dist/server/middleware');

var _middleware4 = _interopRequireDefault(_middleware3);

var _package = require('../../package.json');

var _package2 = _interopRequireDefault(_package);
Expand Down Expand Up @@ -79,7 +83,9 @@ if (_commander2.default.staticDir) {
// Build the webpack configuration using the `baseConfig`
// custom `.babelrc` file and `webpack.config.js` files
var configDir = _commander2.default.configDir || './.storybook';
var dbPath = _path2.default.resolve(configDir, 'datastore.json');
app.use((0, _middleware2.default)(configDir));
app.use('/db', (0, _middleware4.default)(dbPath));

app.listen.apply(app, listenAddr.concat([function (error) {
if (error) {
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@
"@kadira/react-split-pane": "^1.4.0",
"@kadira/storybook-addon-actions": "^1.0.2",
"@kadira/storybook-addon-links": "^1.0.0",
"@kadira/storybook-addons": "^1.3.1",
"@kadira/storybook-addons": "^1.5.0",
"@kadira/storybook-channel-pagebus": "^2.0.2",
"@kadira/storybook-database-local": "^1.1.0",
"@kadira/storybook-ui": "^3.3.2",
"autoprefixer": "^6.3.7",
"babel-core": "^6.11.4",
Expand Down
6 changes: 6 additions & 0 deletions src/client/manager/provider.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import React from 'react';
import { Provider } from '@kadira/storybook-ui';
import addons from '@kadira/storybook-addons';
import createChannel from '@kadira/storybook-channel-pagebus';
import createDatabase from '@kadira/storybook-database-local';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to move this to another repo? If there's a reason we can move the server code too. (I mean the middleware)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need this on RN storybook also. I'll move the middle ware tomorrow. Please hold this PR until then.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move it to the same module. We can import the middleware like this:

import middleware from '@kadira/storybook-database-local/dist/middleware'

import Preview from './preview';

export default class ReactProvider extends Provider {
Expand All @@ -12,6 +13,11 @@ export default class ReactProvider extends Provider {
this.dataId = UUID.v4();
this.channel = createChannel({ key: this.dataId });
addons.setChannel(this.channel);
this.database = addons.getDatabase();
if (!this.database) {
this.database = createDatabase({ url: `${location.origin}/db` });
addons.setDatabase(this.database);
}
}

getPanels() {
Expand Down
3 changes: 3 additions & 0 deletions src/server/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import program from 'commander';
import path from 'path';
import fs from 'fs';
import storybook from './middleware';
import datastore from '@kadira/storybook-database-local/dist/server/middleware';
import packageJson from '../../package.json';
import { parseList, getEnvConfig } from './utils';
import { track, dontTrack } from './track_usage';
Expand Down Expand Up @@ -64,7 +65,9 @@ if (program.staticDir) {
// Build the webpack configuration using the `baseConfig`
// custom `.babelrc` file and `webpack.config.js` files
const configDir = program.configDir || './.storybook';
const dbPath = path.resolve(configDir, 'datastore.json');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now, we should disable this by default.
We should enable saving data, if a user asked to do that via an option.

We can change that later, but until we figure things out this needs to be opt-in.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about -d -- enable-db flags for start-storybook command?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep. That's good.

app.use(storybook(configDir));
app.use('/db', datastore(dbPath));

app.listen(...listenAddr, function (error) {
if (error) {
Expand Down