Skip to content

Commit

Permalink
delete post API
Browse files Browse the repository at this point in the history
  • Loading branch information
Joe Lewis committed Dec 9, 2018
1 parent 99d6672 commit 07e9726
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 3 deletions.
4 changes: 2 additions & 2 deletions client/public/js/bundle.js
Expand Up @@ -13510,7 +13510,7 @@ eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../models.js */ \"./src/models.js\");\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/es/index.js\");\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar DraftList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(DraftList, _Component);\n\n function DraftList(props) {\n var _this;\n\n _classCallCheck(this, DraftList);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DraftList).call(this, props));\n _this.state = {\n posts: []\n };\n return _this;\n }\n\n _createClass(DraftList, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n var self = this;\n _models_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].loadDrafts(this.props.match.params.username).then(function () {\n _models_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drafts = _models_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drafts.map(function (post) {\n if (post.fields.user) {\n post.editurl = \"/writes/@\" + post.fields.user.username + \"/edit/\" + self.fields.slug;\n post.viewurl = \"/writes/@\" + post.fields.user.username + \"/posts/\" + self.fields.slug;\n } else {\n post.editurl = \"/writes/@\" + post.fields.session + \"/edit/\" + post.fields.slug;\n post.viewurl = \"/writes/@\" + post.fields.session + \"/posts/\" + post.fields.slug;\n }\n\n return post;\n });\n self.setState({\n posts: _models_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drafts\n });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"Card\"], {\n style: {\n minHeight: '100vh',\n border: '0'\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"Divider\"], {\n orientation: \"left\"\n }, \"Drafts\"), console.log(this.state), !this.state.posts.length && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"no-post-placeholder\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"Icon\"], {\n type: \"smile\",\n style: {\n margin: '0 10px'\n }\n }), \"You have no drafts yet. \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: \"#\"\n }, \"Start Writing!\"))), !!this.state.posts.length && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"List\"], {\n itemLayout: \"horizontal\",\n dataSource: this.state.posts,\n renderItem: function renderItem(item) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"List\"].Item, {\n actions: [react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_3__[\"Link\"], {\n to: item.editurl\n }, \"Edit\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_3__[\"Link\"], {\n to: item.viewurl\n }, \"View\")]\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"List\"].Item.Meta, {\n avatar: react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"Avatar\"], null, item.fields.title[0]),\n title: react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_3__[\"Link\"], {\n to: item.editurl\n }, item.fields.title),\n description: new Date(item.fields.created_date).toDateString()\n }));\n }\n }));\n }\n }]);\n\n return DraftList;\n}(react__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (DraftList);\n\n//# sourceURL=webpack:///./src/components/DraftList.js?");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../models.js */ \"./src/models.js\");\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/es/index.js\");\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar DraftList =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(DraftList, _Component);\n\n function DraftList(props) {\n var _this;\n\n _classCallCheck(this, DraftList);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DraftList).call(this, props));\n _this.state = {\n posts: []\n };\n return _this;\n }\n\n _createClass(DraftList, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n var self = this;\n _models_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].loadDrafts(this.props.match.params.username).then(function () {\n _models_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drafts = _models_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drafts.map(function (post) {\n if (post.fields.user) {\n post.editurl = \"/writes/@\" + post.fields.user.username + \"/edit/\" + self.fields.slug;\n post.viewurl = \"/writes/@\" + post.fields.user.username + \"/posts/\" + self.fields.slug;\n } else {\n post.editurl = \"/writes/@\" + post.fields.session + \"/edit/\" + post.fields.slug;\n post.viewurl = \"/writes/@\" + post.fields.session + \"/posts/\" + post.fields.slug;\n }\n\n return post;\n });\n self.setState({\n posts: _models_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drafts\n });\n });\n }\n }, {\n key: \"deletePost\",\n value: function deletePost(post) {\n _models_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deletePost(post.fields.slug);\n var posts = this.state.posts.filter(function (p) {\n return p.fields.slug != post.fields.slug;\n });\n this.setState({\n posts: posts\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"Card\"], {\n style: {\n minHeight: '100vh',\n border: '0'\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"Divider\"], {\n orientation: \"left\"\n }, \"Drafts\"), console.log(this.state), !this.state.posts.length && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"no-post-placeholder\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"Icon\"], {\n type: \"smile\",\n style: {\n margin: '0 10px'\n }\n }), \"You have no drafts yet. \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: \"#\"\n }, \"Start Writing!\"))), !!this.state.posts.length && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"List\"], {\n itemLayout: \"horizontal\",\n dataSource: this.state.posts,\n renderItem: function renderItem(item) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"List\"].Item, {\n actions: [react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_3__[\"Link\"], {\n to: item.editurl\n }, \"Edit\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_3__[\"Link\"], {\n to: item.viewurl\n }, \"View\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n onClick: function onClick() {\n _this2.deletePost(item);\n }\n }, \"Delete\")]\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"List\"].Item.Meta, {\n avatar: react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__[\"Avatar\"], null, item.fields.title[0]),\n title: react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_3__[\"Link\"], {\n to: item.editurl\n }, item.fields.title),\n description: new Date(item.fields.created_date).toDateString()\n }));\n }\n }));\n }\n }]);\n\n return DraftList;\n}(react__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (DraftList);\n\n//# sourceURL=webpack:///./src/components/DraftList.js?");

/***/ }),

Expand Down Expand Up @@ -13641,7 +13641,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * Client DB\n * Holds the information necessary for components\n * TODO: Use a proper state management library\n */\n\nvar model = {\n session: {},\n posts: [],\n drafts: [],\n currentDoc: {}\n};\n\nmodel.loadSession = function () {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get('/session/get').done(function (resp) {\n model.session.session_key = resp.session_key;\n model.session.user = resp.user;\n });\n};\n\nmodel.loadPosts = function (userkey) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get('/posts/' + userkey).done(function (resp) {\n model.posts = resp.posts;\n });\n};\n\nmodel.loadPost = function (userkey, slug) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get('/posts/' + userkey + '/' + slug).done(function (resp) {\n model.currentDoc = resp;\n });\n};\n\nmodel.editDraft = function (userkey, slug, postJSON) {\n // postJSON.fields.text = postJSON.fields.text ? JSON.stringify(postJSON.fields.text) : postJSON.fields.text;\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.ajax({\n url: '/drafts/' + userkey + '/edit/' + slug,\n method: 'POST',\n data: JSON.stringify(postJSON),\n dataType: 'json',\n contentType: \"application/json\"\n });\n};\n\nmodel.loadDrafts = function (userkey) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get('/drafts/' + userkey).done(function (resp) {\n model.drafts = resp.posts;\n });\n};\n\nmodel.createDraft = function () {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get('/create/draft');\n};\n\nwindow.model = model;\n/* harmony default export */ __webpack_exports__[\"default\"] = (model);\n\n//# sourceURL=webpack:///./src/models.js?");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * Client DB\n * Holds the information necessary for components\n * TODO: Use a proper state management library\n */\n\nvar model = {\n session: {},\n posts: [],\n drafts: [],\n currentDoc: {}\n};\n\nmodel.loadSession = function () {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get('/session/get').done(function (resp) {\n model.session.session_key = resp.session_key;\n model.session.user = resp.user;\n });\n};\n\nmodel.loadPosts = function (userkey) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get('/posts/' + userkey).done(function (resp) {\n model.posts = resp.posts;\n });\n};\n\nmodel.loadPost = function (userkey, slug) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get('/posts/' + userkey + '/' + slug).done(function (resp) {\n model.currentDoc = resp;\n });\n};\n\nmodel.editDraft = function (userkey, slug, postJSON) {\n // postJSON.fields.text = postJSON.fields.text ? JSON.stringify(postJSON.fields.text) : postJSON.fields.text;\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.ajax({\n url: '/drafts/' + userkey + '/edit/' + slug,\n method: 'POST',\n data: JSON.stringify(postJSON),\n dataType: 'json',\n contentType: \"application/json\"\n });\n};\n\nmodel.loadDrafts = function (userkey) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get('/drafts/' + userkey).done(function (resp) {\n model.drafts = resp.posts;\n });\n};\n\nmodel.createDraft = function () {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get('/create/draft');\n};\n\nmodel.deletePost = function (slug) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get('/posts/' + slug + '/delete').done(function (resp) {\n console.log(resp);\n });\n};\n\nwindow.model = model;\n/* harmony default export */ __webpack_exports__[\"default\"] = (model);\n\n//# sourceURL=webpack:///./src/models.js?");

/***/ }),

Expand Down
14 changes: 13 additions & 1 deletion client/src/components/DraftList.js
Expand Up @@ -30,6 +30,14 @@ class DraftList extends Component {
})
}

deletePost(post) {
Model.deletePost(post.fields.slug)
var posts = this.state.posts.filter(p => {
return p.fields.slug != post.fields.slug
})
this.setState({posts: posts})
}

render() {
return (
<Card style={{minHeight: '100vh', border: '0'}}>
Expand All @@ -46,7 +54,11 @@ class DraftList extends Component {
dataSource={this.state.posts}
renderItem={item => (
<List.Item
actions={[<Link to={item.editurl}>Edit</Link>, <Link to={item.viewurl}>View</Link>]}
actions={[
<Link to={item.editurl}>Edit</Link>,
<Link to={item.viewurl}>View</Link>,
<a onClick={() => {this.deletePost(item)}}>Delete</a>
]}
>
<List.Item.Meta
avatar={<Avatar>{item.fields.title[0]}</Avatar>}
Expand Down

0 comments on commit 07e9726

Please sign in to comment.