diff --git a/package-lock.json b/package-lock.json index 37f67e3..50f72a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2816,6 +2816,11 @@ } } }, + "css.gg": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/css.gg/-/css.gg-1.0.6.tgz", + "integrity": "sha512-Bv8GTVkeuSqqkgdCJ+tJopRxf/mp/wP6hkL13BdCSs3FadD0GWyU3gKdjuaaFkfxkgYK+GhjSX3EA+cXLHBFpA==" + }, "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", diff --git a/package.json b/package.json index 03d911f..e2c4667 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "lint": "npx prettier \"src/newsreader/js/**/*.js\" --check", "format": "npx prettier \"src/newsreader/js/**/*.js\" --write", "build": "npx webpack --config webpack.dev.babel.js", + "build:watch": "npx webpack --config webpack.dev.babel.js --watch", "build:prod": "npx webpack --config webpack.prod.babel.js", - "watch": "npx webpack --config webpack.dev.babel.js --watch", "test": "npx jest", "test:watch": "npm test -- --watch" }, @@ -19,6 +19,7 @@ "author": "Sonny", "license": "GPL-3.0-or-later", "dependencies": { + "css.gg": "^1.0.6", "js-cookie": "^2.2.1", "lodash": "^4.17.15", "object-assign": "^4.1.1", diff --git a/src/newsreader/js/components/Messages.js b/src/newsreader/js/components/Messages.js index a985381..843677c 100644 --- a/src/newsreader/js/components/Messages.js +++ b/src/newsreader/js/components/Messages.js @@ -1,15 +1,29 @@ import React from 'react'; -const Messages = props => { - const messages = props.messages.map((index, message) => { - return ( -
  • - {message.text} -
  • - ); - }); +class Messages extends React.Component { + state = { messages: this.props.messages }; - return ; -}; + close = ::this.close; + + close(index) { + const newMessages = this.state.messages.filter((message, currentIndex) => { + return currentIndex != index; + }); + + this.setState({ messages: newMessages }); + } + + render() { + const messages = this.state.messages.map((message, index) => { + return ( +
  • + {message.text} this.close(index)} /> +
  • + ); + }); + + return ; + } +} export default Messages; diff --git a/src/newsreader/js/pages/categories/components/CategoryCard.js b/src/newsreader/js/pages/categories/components/CategoryCard.js index 49bb8c8..a3a242d 100644 --- a/src/newsreader/js/pages/categories/components/CategoryCard.js +++ b/src/newsreader/js/pages/categories/components/CategoryCard.js @@ -6,11 +6,17 @@ const CategoryCard = props => { const { category } = props; const categoryRules = category.rules.map(rule => { - const faviconUrl = rule.favicon ? rule.favicon : '/static/icons/picture.svg'; + let favicon = null; + + if (rule.favicon) { + favicon = ; + } else { + favicon = ; + } return (
  • - + {favicon} {rule.name}
  • ); diff --git a/src/newsreader/js/pages/homepage/App.js b/src/newsreader/js/pages/homepage/App.js index e66a0bd..bdf0149 100644 --- a/src/newsreader/js/pages/homepage/App.js +++ b/src/newsreader/js/pages/homepage/App.js @@ -8,6 +8,7 @@ import { fetchCategories } from './actions/categories'; import Sidebar from './components/sidebar/Sidebar.js'; import FeedList from './components/feedlist/FeedList.js'; import PostModal from './components/PostModal.js'; +import Messages from '../../components/Messages.js'; class App extends React.Component { componentDidMount() { @@ -20,6 +21,10 @@ class App extends React.Component { + {this.props.error && ( + + )} + {!isEqual(this.props.post, {}) && ( { + const { error } = state.error; + if (!isEqual(state.selected.post, {})) { const ruleId = state.selected.post.rule; @@ -40,15 +47,14 @@ const mapStateToProps = state => { const category = state.categories.items[rule.category]; return { - post: state.selected.post, - rule, category, + error, + rule, + post: state.selected.post, }; } - return { - post: state.selected.post, - }; + return { error, post: state.selected.post }; }; const mapDispatchToProps = dispatch => ({ diff --git a/src/newsreader/js/pages/homepage/actions/categories.js b/src/newsreader/js/pages/homepage/actions/categories.js index 0fc63a6..d569f53 100644 --- a/src/newsreader/js/pages/homepage/actions/categories.js +++ b/src/newsreader/js/pages/homepage/actions/categories.js @@ -1,4 +1,5 @@ import { requestRules, receiveRules, fetchRulesByCategory } from './rules.js'; +import { handleAPIError } from './error.js'; import { CATEGORY_TYPE } from '../constants.js'; @@ -47,6 +48,10 @@ export const fetchCategory = category => { if (category.unread === 0) { return dispatch(fetchRulesByCategory(category)); } + }) + .catch(error => { + dispatch(receiveCategory({})); + dispatch(handleAPIError(error)); }); }; }; @@ -72,6 +77,11 @@ export const fetchCategories = () => { return Promise.all(promises); }) .then(responses => Promise.all(responses.map(response => response.json()))) - .then(nestedRules => dispatch(receiveRules(nestedRules.flat()))); + .then(nestedRules => dispatch(receiveRules(nestedRules.flat()))) + .catch(error => { + dispatch(receiveCategories([])); + dispatch(receiveRules([])); + dispatch(handleAPIError(error)); + }); }; }; diff --git a/src/newsreader/js/pages/homepage/actions/error.js b/src/newsreader/js/pages/homepage/actions/error.js new file mode 100644 index 0000000..6449f84 --- /dev/null +++ b/src/newsreader/js/pages/homepage/actions/error.js @@ -0,0 +1,6 @@ +export const RECEIVE_API_ERROR = 'RECEIVE_API_ERROR'; + +export const handleAPIError = error => ({ + type: RECEIVE_API_ERROR, + error, +}); diff --git a/src/newsreader/js/pages/homepage/actions/posts.js b/src/newsreader/js/pages/homepage/actions/posts.js index d1fc79b..b7ad5cb 100644 --- a/src/newsreader/js/pages/homepage/actions/posts.js +++ b/src/newsreader/js/pages/homepage/actions/posts.js @@ -1,3 +1,4 @@ +import { handleAPIError } from './error.js'; import { RULE_TYPE, CATEGORY_TYPE } from '../constants.js'; export const SELECT_POST = 'SELECT_POST'; @@ -50,6 +51,10 @@ export const markPostRead = (post, token) => { .then(updatedPost => { dispatch(receivePost({ ...updatedPost })); dispatch(postRead({ ...updatedPost }, section)); + }) + .catch(error => { + dispatch(receivePost({})); + dispatch(handleAPIError(error)); }); }; }; @@ -77,11 +82,8 @@ export const fetchPostsBySection = (section, page = false) => { .then(response => response.json()) .then(posts => dispatch(receivePosts(posts.results, posts.next))) .catch(error => { - if (error instanceof TypeError) { - console.log(`Unable to parse posts from request: ${error}`); - } - - dispatch(receivePosts({}, null)); + dispatch(receivePosts([])); + dispatch(handleAPIError(error)); }); }; }; diff --git a/src/newsreader/js/pages/homepage/actions/rules.js b/src/newsreader/js/pages/homepage/actions/rules.js index 0f45f1d..98b494e 100644 --- a/src/newsreader/js/pages/homepage/actions/rules.js +++ b/src/newsreader/js/pages/homepage/actions/rules.js @@ -1,5 +1,6 @@ import { fetchCategory } from './categories.js'; import { RULE_TYPE } from '../constants.js'; +import { handleAPIError } from './error.js'; export const SELECT_RULE = 'SELECT_RULE'; export const SELECT_RULES = 'SELECT_RULES'; @@ -51,6 +52,10 @@ export const fetchRule = rule => { if (rule.unread === 0) { return dispatch(fetchCategory({ ...category })); } + }) + .catch(error => { + dispatch(receiveRule({})); + dispatch(handleAPIError(error)); }); }; }; @@ -61,6 +66,10 @@ export const fetchRulesByCategory = category => { return fetch(`/api/categories/${category.id}/rules/`) .then(response => response.json()) - .then(rules => dispatch(receiveRules(rules))); + .then(rules => dispatch(receiveRules(rules))) + .catch(error => { + dispatch(receiveRules([])); + dispatch(handleAPIError(error)); + }); }; }; diff --git a/src/newsreader/js/pages/homepage/actions/selected.js b/src/newsreader/js/pages/homepage/actions/selected.js index f767d42..189cad6 100644 --- a/src/newsreader/js/pages/homepage/actions/selected.js +++ b/src/newsreader/js/pages/homepage/actions/selected.js @@ -1,3 +1,4 @@ +import { handleAPIError } from './error.js'; import { receiveCategory, requestCategory } from './categories.js'; import { receiveRule, requestRule } from './rules.js'; import { CATEGORY_TYPE, RULE_TYPE } from '../constants.js'; @@ -43,6 +44,10 @@ const markCategoryRead = (category, token) => { type: CATEGORY_TYPE, }) ); + }) + .catch(error => { + dispatch(receiveCategory({})); + dispatch(handleAPIError(error)); }); }; }; @@ -66,6 +71,10 @@ const markRuleRead = (rule, token) => { // Use the old rule to decrement category with old unread count dispatch(markSectionRead({ ...rule, type: RULE_TYPE })); + }) + .catch(error => { + dispatch(receiveRule({})); + dispatch(handleAPIError(error)); }); }; }; diff --git a/src/newsreader/js/pages/homepage/components/feedlist/FeedList.js b/src/newsreader/js/pages/homepage/components/feedlist/FeedList.js index 0477fa7..e873965 100644 --- a/src/newsreader/js/pages/homepage/components/feedlist/FeedList.js +++ b/src/newsreader/js/pages/homepage/components/feedlist/FeedList.js @@ -41,14 +41,7 @@ class FeedList extends React.Component { return ; }); - if (ruleItems.length > 0) { - return ( -
    - {ruleItems} - {this.props.isFetching && } -
    - ); - } else if (isEqual(this.props.selected, {})) { + if (isEqual(this.props.selected, {})) { return (
    @@ -57,7 +50,7 @@ class FeedList extends React.Component {
    ); - } else if (ruleItems.length === 0) { + } else if (ruleItems.length === 0 && !this.props.isFetching) { return (
    @@ -69,7 +62,10 @@ class FeedList extends React.Component { ); } else { return ( -
    {this.props.isFetching && }
    +
    + {ruleItems} + {this.props.isFetching && } +
    ); } } diff --git a/src/newsreader/js/pages/homepage/components/sidebar/RuleItem.js b/src/newsreader/js/pages/homepage/components/sidebar/RuleItem.js index a784462..879745f 100644 --- a/src/newsreader/js/pages/homepage/components/sidebar/RuleItem.js +++ b/src/newsreader/js/pages/homepage/components/sidebar/RuleItem.js @@ -19,16 +19,18 @@ class RuleItem extends React.Component { render() { const selected = isSelected(this.props.rule, this.props.selected, RULE_TYPE); const className = `rules__item ${selected ? 'rules__item--selected' : ''}`; - const favicon = this.props.rule.favicon - ? this.props.rule.favicon - : '/static/icons/picture.svg'; + let favicon = null; + + if (this.props.rule.favicon) { + favicon = ; + } else { + favicon = ; + } return (
  • this.handleSelect()}>
    - - - + {favicon}
    {this.props.rule.name}
    diff --git a/src/newsreader/js/pages/homepage/reducers/error.js b/src/newsreader/js/pages/homepage/reducers/error.js new file mode 100644 index 0000000..3d20b14 --- /dev/null +++ b/src/newsreader/js/pages/homepage/reducers/error.js @@ -0,0 +1,12 @@ +import { RECEIVE_API_ERROR } from '../actions/error.js'; + +const defaultState = {}; + +export const error = (state = { ...defaultState }, action) => { + switch (action.type) { + case RECEIVE_API_ERROR: + return { ...state, error: action.error }; + default: + return {}; + } +}; diff --git a/src/newsreader/js/pages/homepage/reducers/index.js b/src/newsreader/js/pages/homepage/reducers/index.js index f70ca2a..20dea78 100644 --- a/src/newsreader/js/pages/homepage/reducers/index.js +++ b/src/newsreader/js/pages/homepage/reducers/index.js @@ -1,10 +1,11 @@ import { combineReducers } from 'redux'; import { categories } from './categories.js'; +import { error } from './error.js'; import { rules } from './rules.js'; import { posts } from './posts.js'; import { selected } from './selected.js'; -const rootReducer = combineReducers({ categories, rules, posts, selected }); +const rootReducer = combineReducers({ categories, error, rules, posts, selected }); export default rootReducer; diff --git a/src/newsreader/js/pages/rules/components/RuleCard.js b/src/newsreader/js/pages/rules/components/RuleCard.js index 07d4e99..d74b8d1 100644 --- a/src/newsreader/js/pages/rules/components/RuleCard.js +++ b/src/newsreader/js/pages/rules/components/RuleCard.js @@ -4,19 +4,21 @@ import Card from '../../../components/Card.js'; const RuleCard = props => { const { rule } = props; + let favicon = null; - const faviconUrl = rule.favicon ? rule.favicon : '/static/icons/picture.svg'; - const stateIcon = !rule.error - ? '/static/icons/checkmark-circle.svg' - : '/static/icons/warning.svg'; + if (rule.favicon) { + favicon = ; + } else { + favicon = ; + } + + const stateIcon = !rule.error ? 'gg-check' : 'gg-danger'; const cardHeader = ( <> -
    - -

    {rule.name}

    -
    - + +

    {rule.name}

    + {favicon} ); diff --git a/src/newsreader/js/tests/homepage/actions/category.test.js b/src/newsreader/js/tests/homepage/actions/category.test.js index a6be5ad..8c0266c 100644 --- a/src/newsreader/js/tests/homepage/actions/category.test.js +++ b/src/newsreader/js/tests/homepage/actions/category.test.js @@ -5,6 +5,7 @@ import fetchMock from 'fetch-mock'; import * as actions from '../../../pages/homepage/actions/categories.js'; import * as constants from '../../../pages/homepage/constants.js'; import * as ruleActions from '../../../pages/homepage/actions/rules.js'; +import * as errorActions from '../../../pages/homepage/actions/error.js'; const middlewares = [thunk]; const mockStore = configureMockStore(middlewares); @@ -247,4 +248,69 @@ describe('category actions', () => { expect(store.getActions()).toEqual(expectedActions); }); + + it('should handle an unexpected response when fetching a category', () => { + const category = { + id: 1, + name: 'Tech', + unread: 1138, + }; + + const errorMessage = 'Key id not found'; + + fetchMock.getOnce('/api/categories/1', () => { + throw new TypeError(errorMessage); + }); + + const expectedActions = [ + { type: actions.REQUEST_CATEGORY }, + { type: actions.RECEIVE_CATEGORY, category: {} }, + { type: errorActions.RECEIVE_API_ERROR, error: TypeError(errorMessage) }, + ]; + + const store = mockStore({ + categories: { items: {}, isFetching: false }, + rules: { items: {}, isFetching: false }, + posts: { items: {}, isFetching: false }, + selected: { item: {}, next: false, lastReached: false, post: {} }, + error: { error: {} }, + }); + + return store.dispatch(actions.fetchCategory(category)).then(() => { + expect(store.getActions()).toEqual(expectedActions); + }); + }); + + it('should handle an unexpected response when multiple categories', () => { + const category = { + id: 1, + name: 'Tech', + unread: 1138, + }; + + const errorMessage = 'URL not found'; + + fetchMock.getOnce('/api/categories/', () => { + throw new Error(errorMessage); + }); + + const expectedActions = [ + { type: actions.REQUEST_CATEGORIES }, + { type: actions.RECEIVE_CATEGORIES, categories: [] }, + { type: ruleActions.RECEIVE_RULES, rules: [] }, + { type: errorActions.RECEIVE_API_ERROR, error: Error(errorMessage) }, + ]; + + const store = mockStore({ + categories: { items: {}, isFetching: false }, + rules: { items: {}, isFetching: false }, + posts: { items: {}, isFetching: false }, + selected: { item: {}, next: false, lastReached: false, post: {} }, + error: { error: {} }, + }); + + return store.dispatch(actions.fetchCategories()).then(() => { + expect(store.getActions()).toEqual(expectedActions); + }); + }); }); diff --git a/src/newsreader/js/tests/homepage/actions/post.test.js b/src/newsreader/js/tests/homepage/actions/post.test.js index 65967b4..e8f84de 100644 --- a/src/newsreader/js/tests/homepage/actions/post.test.js +++ b/src/newsreader/js/tests/homepage/actions/post.test.js @@ -3,12 +3,13 @@ import thunk from 'redux-thunk'; import fetchMock from 'fetch-mock'; import * as actions from '../../../pages/homepage/actions/posts.js'; +import * as errorActions from '../../../pages/homepage/actions/error.js'; import * as constants from '../../../pages/homepage/constants.js'; const middlewares = [thunk]; const mockStore = configureMockStore(middlewares); -describe('rule actions', () => { +describe('post actions', () => { afterEach(() => { fetchMock.restore(); }); @@ -322,4 +323,86 @@ describe('rule actions', () => { expect(store.getActions()).toEqual(expectedActions); }); + + it('should handle exceptions when marking a post read', () => { + const post = { + id: 2067, + remoteIdentifier: 'https://arstechnica.com/?p=1648607', + title: + 'This amazing glitch puts Star Fox 64 ships in an unmodified Zelda cartridge', + body: + '"Stale-reference manipulation," 300-character file names, and a clash between worlds.', + author: 'Kyle Orland', + publicationDate: '2020-01-24T19:50:12Z', + url: 'https://arstechnica.com/?p=1648607', + rule: 5, + read: false, + }; + + const rule = { + id: 4, + name: 'Ars Technica', + unread: 100, + category: 1, + url: 'http://feeds.arstechnica.com/arstechnica/index?fmt=xml', + favicon: 'https://cdn.arstechnica.net/favicon.ico', + }; + + const errorMessage = 'Permission denied'; + + fetchMock.patch(`/api/posts/${post.id}/`, () => { + throw new Error(errorMessage); + }); + + const store = mockStore({ + categories: { items: {}, isFetching: false }, + rules: { items: {}, isFetching: false }, + posts: { items: {}, isFetching: false }, + selected: { item: { ...rule }, next: false, lastReached: false, post: {} }, + }); + + const expectedActions = [ + { type: actions.RECEIVE_POST, post: {} }, + { type: errorActions.RECEIVE_API_ERROR, error: TypeError(errorMessage) }, + ]; + + return store.dispatch(actions.markPostRead(post, 'FAKE_TOKEN')).then(() => { + expect(store.getActions()).toEqual(expectedActions); + }); + }); + + it('should handle exceptions when fetching posts by section', () => { + const rule = { + id: 4, + name: 'Ars Technica', + unread: 100, + category: 1, + url: 'http://feeds.arstechnica.com/arstechnica/index?fmt=xml', + favicon: 'https://cdn.arstechnica.net/favicon.ico', + type: constants.RULE_TYPE, + }; + + const errorMessage = 'Page not found'; + + fetchMock.getOnce(`/api/rules/${rule.id}/posts/?read=false`, () => { + throw new Error(errorMessage); + }); + + const store = mockStore({ + categories: { items: {}, isFetching: false }, + rules: { items: {}, isFetching: false }, + posts: { items: {}, isFetching: false }, + selected: { item: { ...rule }, next: false, lastReached: false, post: {} }, + }); + + const expectedActions = [ + { type: actions.REQUEST_POSTS }, + { type: actions.RECEIVE_POSTS, posts: [] }, + { type: errorActions.RECEIVE_API_ERROR, error: Error(errorMessage) }, + ]; + + return store.dispatch(actions.fetchPostsBySection(rule)).then(() => { + expect(store.getActions()).toEqual(expectedActions); + }); + }); }); diff --git a/src/newsreader/js/tests/homepage/actions/rule.test.js b/src/newsreader/js/tests/homepage/actions/rule.test.js index 70a3a89..7e167e7 100644 --- a/src/newsreader/js/tests/homepage/actions/rule.test.js +++ b/src/newsreader/js/tests/homepage/actions/rule.test.js @@ -7,6 +7,7 @@ import { objectsFromArray } from '../../../utils.js'; import * as actions from '../../../pages/homepage/actions/rules.js'; import * as constants from '../../../pages/homepage/constants.js'; import * as categoryActions from '../../../pages/homepage/actions/categories.js'; +import * as errorActions from '../../../pages/homepage/actions/error.js'; const middlewares = [thunk]; const mockStore = configureMockStore(middlewares); @@ -253,4 +254,88 @@ describe('rule actions', () => { expect(store.getActions()).toEqual(expectedActions); }); }); + + it('should handle an unexpected response when fetching a rule', () => { + const rule = { + id: 1, + name: 'Test rule', + unread: 100, + category: 1, + url: 'http://feeds.arstechnica.com/arstechnica/index?fmt=xml', + favicon: 'https://cdn.arstechnica.net/favicon.ico', + }; + + const errorMessage = 'Too many requests'; + + fetchMock.getOnce('/api/rules/1', () => { + throw new TypeError(errorMessage); + }); + + const store = mockStore({ + categories: { items: {}, isFetching: false }, + rules: { items: {}, isFetching: false }, + posts: { items: {}, isFetching: false }, + selected: { item: {}, next: false, lastReached: false, post: {} }, + }); + + const expectedActions = [ + { type: actions.REQUEST_RULE }, + { type: actions.RECEIVE_RULE, rule: {} }, + { type: errorActions.RECEIVE_API_ERROR, error: TypeError(errorMessage) }, + ]; + + return store.dispatch(actions.fetchRule(rule)).then(() => { + expect(store.getActions()).toEqual(expectedActions); + }); + }); + + it('should handle an unexpected response when fetching rules by category', () => { + const category = { + id: 1, + name: 'Tech', + unread: 0, + }; + + const rules = [ + { + id: 1, + name: 'Ars Technica', + url: 'http://feeds.arstechnica.com/arstechnica/index?fmt=xml', + favicon: 'https://cdn.arstechnica.net/favicon.ico', + category: 1, + unread: 200, + }, + { + id: 2, + name: 'Hacker News', + url: 'https://news.ycombinator.com/rss', + favicon: 'https://news.ycombinator.com/favicon.ico', + category: 1, + unread: 350, + }, + ]; + + const errorMessage = 'Too many request'; + + fetchMock.getOnce('/api/categories/1/rules/', () => { + throw new Error(errorMessage); + }); + + const expectedActions = [ + { type: actions.REQUEST_RULES }, + { type: actions.RECEIVE_RULES, rules: [] }, + { type: errorActions.RECEIVE_API_ERROR, error: Error(errorMessage) }, + ]; + + const store = mockStore({ + categories: { items: {}, isFetching: false }, + rules: { items: {}, isFetching: false }, + posts: { items: {}, isFetching: false }, + selected: {}, + }); + + return store.dispatch(actions.fetchRulesByCategory(category)).then(() => { + expect(store.getActions()).toEqual(expectedActions); + }); + }); }); diff --git a/src/newsreader/js/tests/homepage/actions/selected.test.js b/src/newsreader/js/tests/homepage/actions/selected.test.js index a55d232..b0f163c 100644 --- a/src/newsreader/js/tests/homepage/actions/selected.test.js +++ b/src/newsreader/js/tests/homepage/actions/selected.test.js @@ -4,13 +4,14 @@ import fetchMock from 'fetch-mock'; import * as actions from '../../../pages/homepage/actions/selected.js'; import * as categoryActions from '../../../pages/homepage/actions/categories.js'; +import * as errorActions from '../../../pages/homepage/actions/error.js'; import * as ruleActions from '../../../pages/homepage/actions/rules.js'; import * as constants from '../../../pages/homepage/constants.js'; const middlewares = [thunk]; const mockStore = configureMockStore(middlewares); -describe('category actions', () => { +describe('selected actions', () => { afterEach(() => { fetchMock.restore(); }); @@ -138,4 +139,99 @@ describe('category actions', () => { expect(store.getActions()).toEqual(expectedActions); }); }); + + it('should handle exceptions when marking a category as read', () => { + const category = { id: 1, name: 'Test category', unread: 100 }; + const rules = { + 1: { + id: 1, + name: 'Ars Technica', + url: 'http://feeds.arstechnica.com/arstechnica/index?fmt=xml', + favicon: 'https://cdn.arstechnica.net/favicon.ico', + category: 1, + unread: 200, + }, + 2: { + id: 2, + name: 'Hacker News', + url: 'https://news.ycombinator.com/rss', + favicon: 'https://news.ycombinator.com/favicon.ico', + category: 1, + unread: 350, + }, + }; + + const errorMessage = 'Page not found'; + + fetchMock.postOnce('/api/categories/1/read/', () => { + throw new Error(errorMessage); + }); + + const expectedActions = [ + { type: categoryActions.REQUEST_CATEGORY }, + { type: categoryActions.RECEIVE_CATEGORY, category: {} }, + { type: errorActions.RECEIVE_API_ERROR, error: Error(errorMessage) }, + ]; + + const store = mockStore({ + categories: { items: {}, isFetching: false }, + rules: { items: { ...rules }, isFetching: false }, + posts: { items: {}, isFetching: false }, + selected: { + item: { ...category, type: actions.CATEGORY_TYPE }, + next: false, + lastReached: false, + post: {}, + }, + error: {}, + }); + + return store + .dispatch(actions.markRead({ ...category, type: constants.CATEGORY_TYPE }, 'TOKEN')) + .then(() => { + expect(store.getActions()).toEqual(expectedActions); + }); + }); + + it('should handle exceptions when marking a rule as read', () => { + const rule = { + id: 1, + name: 'Ars Technica', + url: 'http://feeds.arstechnica.com/arstechnica/index?fmt=xml', + favicon: 'https://cdn.arstechnica.net/favicon.ico', + category: 1, + unread: 200, + }; + + const errorMessage = 'Page not found'; + + fetchMock.postOnce('/api/rules/1/read/', () => { + throw new Error(errorMessage); + }); + + const expectedActions = [ + { type: ruleActions.REQUEST_RULE }, + { type: ruleActions.RECEIVE_RULE, rule: {} }, + { type: errorActions.RECEIVE_API_ERROR, error: Error(errorMessage) }, + ]; + + const store = mockStore({ + categories: { items: {}, isFetching: false }, + rules: { items: { [rule.id]: { ...rule } }, isFetching: false }, + posts: { items: {}, isFetching: false }, + selected: { + item: { ...rule, type: constants.RULE_TYPE }, + next: false, + lastReached: false, + post: {}, + }, + error: {}, + }); + + return store + .dispatch(actions.markRead({ ...rule, type: constants.RULE_TYPE }, 'TOKEN')) + .then(() => { + expect(store.getActions()).toEqual(expectedActions); + }); + }); }); diff --git a/src/newsreader/js/utils.js b/src/newsreader/js/utils.js index 9db723e..bba4717 100644 --- a/src/newsreader/js/utils.js +++ b/src/newsreader/js/utils.js @@ -1,11 +1,11 @@ export const formatDatetime = dateString => { const locale = navigator.language ? navigator.language : 'en-US'; const dateOptions = { - hour: '2-digit', - weekday: 'long', year: 'numeric', - month: 'long', + month: 'numeric', day: 'numeric', + minute: 'numeric', + hour: 'numeric', }; const date = new Date(dateString); diff --git a/src/newsreader/news/core/templates/core/category.html b/src/newsreader/news/core/templates/core/category.html index dfe7318..0771345 100644 --- a/src/newsreader/news/core/templates/core/category.html +++ b/src/newsreader/news/core/templates/core/category.html @@ -38,8 +38,12 @@ {% if category and rule.pk in category.rule_ids %}checked{% endif %} value="{{ rule.pk }}" /> - + {% if rule.favicon %} + + {% else %} + + {% endif %} + {{ rule.name }}
  • {% endfor %} diff --git a/src/newsreader/scss/components/card/_card.scss b/src/newsreader/scss/components/card/_card.scss index 6e544f6..a9f957e 100644 --- a/src/newsreader/scss/components/card/_card.scss +++ b/src/newsreader/scss/components/card/_card.scss @@ -31,7 +31,6 @@ } & .favicon { - height: 30px; - margin: 0 20px 0 0; + height: 20px; } } diff --git a/src/newsreader/scss/components/form/_form.scss b/src/newsreader/scss/components/form/_form.scss index d99c246..931fba9 100644 --- a/src/newsreader/scss/components/form/_form.scss +++ b/src/newsreader/scss/components/form/_form.scss @@ -24,7 +24,7 @@ } & .favicon { - height: 30px; + height: 20px; } } diff --git a/src/newsreader/scss/components/messages/_messages.scss b/src/newsreader/scss/components/messages/_messages.scss index 56af888..5779820 100644 --- a/src/newsreader/scss/components/messages/_messages.scss +++ b/src/newsreader/scss/components/messages/_messages.scss @@ -3,6 +3,9 @@ flex-direction: column; align-items: center; + position: fixed; + top: 0; + width: 100%; margin: 5px 0 20px 0; color: $white; @@ -10,6 +13,7 @@ &__item { width: 80%; + position: relative; padding: 20px 15px; margin: 5px 0; @@ -28,5 +32,12 @@ &--success { background-color: $success-green; } + + & .gg-close { + position: absolute; + top: 15px; + right: 15px; + --ggs: 2; + } } } diff --git a/src/newsreader/scss/components/rules/_rules.scss b/src/newsreader/scss/components/rules/_rules.scss index a1e9f67..029a070 100644 --- a/src/newsreader/scss/components/rules/_rules.scss +++ b/src/newsreader/scss/components/rules/_rules.scss @@ -14,10 +14,6 @@ padding: 0 2px 0 2px; } - & div { - padding: 0; - } - &:hover { cursor: pointer; background-color: darken($azureish-white, +10%); @@ -32,6 +28,16 @@ display: flex; align-items: center; width: 80%; + + & .gg-image { + --ggs: 80%; + margin: 0 5px 0 0; + min-width: 20px; + } + + & .favicon { + margin: 0 5px 0 0; + } } &__title { diff --git a/src/newsreader/scss/lib/_css.gg.scss b/src/newsreader/scss/lib/_css.gg.scss index fbdbaa7..389e533 100644 --- a/src/newsreader/scss/lib/_css.gg.scss +++ b/src/newsreader/scss/lib/_css.gg.scss @@ -1 +1 @@ -@import url("https://css.gg/c"); +@import "~css.gg/icons-scss/icons"; diff --git a/src/newsreader/scss/partials/_colors.scss b/src/newsreader/scss/partials/_colors.scss index 0259883..664ddf7 100644 --- a/src/newsreader/scss/partials/_colors.scss +++ b/src/newsreader/scss/partials/_colors.scss @@ -28,7 +28,7 @@ $light-orange: rgba(237, 212, 178, 1); $light-red: rgba(255, 118, 117, 1); $success-green: rgba(46,204,113, 1); -$error-red: rgba(231,76,60, 1); +$error-red: lighten(rgba(231, 76, 60, 1), 10%); $confirm-green: $success-green; $cancel-red: $error-red; diff --git a/src/newsreader/static/icons/rss.png b/src/newsreader/static/favicon.png similarity index 100% rename from src/newsreader/static/icons/rss.png rename to src/newsreader/static/favicon.png diff --git a/src/newsreader/static/icons/alarm.svg b/src/newsreader/static/icons/alarm.svg deleted file mode 100755 index 94c3105..0000000 --- a/src/newsreader/static/icons/alarm.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/angle-down.svg b/src/newsreader/static/icons/angle-down.svg deleted file mode 100644 index 1462342..0000000 --- a/src/newsreader/static/icons/angle-down.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/newsreader/static/icons/angle-right.svg b/src/newsreader/static/icons/angle-right.svg deleted file mode 100644 index ec7fbe9..0000000 --- a/src/newsreader/static/icons/angle-right.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/newsreader/static/icons/apartment.svg b/src/newsreader/static/icons/apartment.svg deleted file mode 100755 index ff14506..0000000 --- a/src/newsreader/static/icons/apartment.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/newsreader/static/icons/arrow-down-circle.svg b/src/newsreader/static/icons/arrow-down-circle.svg deleted file mode 100755 index c09ee4e..0000000 --- a/src/newsreader/static/icons/arrow-down-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/arrow-down.svg b/src/newsreader/static/icons/arrow-down.svg deleted file mode 100755 index d802122..0000000 --- a/src/newsreader/static/icons/arrow-down.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/arrow-left-circle.svg b/src/newsreader/static/icons/arrow-left-circle.svg deleted file mode 100755 index a135160..0000000 --- a/src/newsreader/static/icons/arrow-left-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/arrow-left.svg b/src/newsreader/static/icons/arrow-left.svg deleted file mode 100644 index c1168f6..0000000 --- a/src/newsreader/static/icons/arrow-left.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/arrow-right-circle.svg b/src/newsreader/static/icons/arrow-right-circle.svg deleted file mode 100755 index 9b8d2f5..0000000 --- a/src/newsreader/static/icons/arrow-right-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/arrow-right.svg b/src/newsreader/static/icons/arrow-right.svg deleted file mode 100755 index 21c0a0c..0000000 --- a/src/newsreader/static/icons/arrow-right.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/arrow-up-circle.svg b/src/newsreader/static/icons/arrow-up-circle.svg deleted file mode 100755 index 044fc48..0000000 --- a/src/newsreader/static/icons/arrow-up-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/arrow-up.svg b/src/newsreader/static/icons/arrow-up.svg deleted file mode 100755 index fa2d12e..0000000 --- a/src/newsreader/static/icons/arrow-up.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/bicycle.svg b/src/newsreader/static/icons/bicycle.svg deleted file mode 100755 index 2599f0d..0000000 --- a/src/newsreader/static/icons/bicycle.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/bold.svg b/src/newsreader/static/icons/bold.svg deleted file mode 100755 index 86271f6..0000000 --- a/src/newsreader/static/icons/bold.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/book.svg b/src/newsreader/static/icons/book.svg deleted file mode 100755 index cc4892e..0000000 --- a/src/newsreader/static/icons/book.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/bookmark.svg b/src/newsreader/static/icons/bookmark.svg deleted file mode 100755 index 6057646..0000000 --- a/src/newsreader/static/icons/bookmark.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/briefcase.svg b/src/newsreader/static/icons/briefcase.svg deleted file mode 100755 index 58d54b6..0000000 --- a/src/newsreader/static/icons/briefcase.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/bubble.svg b/src/newsreader/static/icons/bubble.svg deleted file mode 100755 index 87317cc..0000000 --- a/src/newsreader/static/icons/bubble.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/bug.svg b/src/newsreader/static/icons/bug.svg deleted file mode 100755 index 7cedf5a..0000000 --- a/src/newsreader/static/icons/bug.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/bullhorn.svg b/src/newsreader/static/icons/bullhorn.svg deleted file mode 100755 index bc8ffcc..0000000 --- a/src/newsreader/static/icons/bullhorn.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/bus.svg b/src/newsreader/static/icons/bus.svg deleted file mode 100755 index 1a3416f..0000000 --- a/src/newsreader/static/icons/bus.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/calendar-full.svg b/src/newsreader/static/icons/calendar-full.svg deleted file mode 100755 index c835eaa..0000000 --- a/src/newsreader/static/icons/calendar-full.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/newsreader/static/icons/camera-video.svg b/src/newsreader/static/icons/camera-video.svg deleted file mode 100755 index 99e6ebe..0000000 --- a/src/newsreader/static/icons/camera-video.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/camera.svg b/src/newsreader/static/icons/camera.svg deleted file mode 100755 index b1e662a..0000000 --- a/src/newsreader/static/icons/camera.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/car.svg b/src/newsreader/static/icons/car.svg deleted file mode 100755 index dd9af01..0000000 --- a/src/newsreader/static/icons/car.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/cart.svg b/src/newsreader/static/icons/cart.svg deleted file mode 100755 index cf0df35..0000000 --- a/src/newsreader/static/icons/cart.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/chart-bars.svg b/src/newsreader/static/icons/chart-bars.svg deleted file mode 100755 index 15b0f54..0000000 --- a/src/newsreader/static/icons/chart-bars.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/checkmark-circle.svg b/src/newsreader/static/icons/checkmark-circle.svg deleted file mode 100755 index e46b93f..0000000 --- a/src/newsreader/static/icons/checkmark-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/chevron-down-circle.svg b/src/newsreader/static/icons/chevron-down-circle.svg deleted file mode 100755 index e530413..0000000 --- a/src/newsreader/static/icons/chevron-down-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/chevron-down.svg b/src/newsreader/static/icons/chevron-down.svg deleted file mode 100644 index 5342155..0000000 --- a/src/newsreader/static/icons/chevron-down.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/chevron-left-circle.svg b/src/newsreader/static/icons/chevron-left-circle.svg deleted file mode 100755 index 495f43b..0000000 --- a/src/newsreader/static/icons/chevron-left-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/chevron-left.svg b/src/newsreader/static/icons/chevron-left.svg deleted file mode 100755 index 4117261..0000000 --- a/src/newsreader/static/icons/chevron-left.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/chevron-right-circle.svg b/src/newsreader/static/icons/chevron-right-circle.svg deleted file mode 100755 index b5bd4d4..0000000 --- a/src/newsreader/static/icons/chevron-right-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/chevron-right.svg b/src/newsreader/static/icons/chevron-right.svg deleted file mode 100644 index 14db8e8..0000000 --- a/src/newsreader/static/icons/chevron-right.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/chevron-up-circle.svg b/src/newsreader/static/icons/chevron-up-circle.svg deleted file mode 100755 index 9e8acdd..0000000 --- a/src/newsreader/static/icons/chevron-up-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/chevron-up.svg b/src/newsreader/static/icons/chevron-up.svg deleted file mode 100755 index 778bbaa..0000000 --- a/src/newsreader/static/icons/chevron-up.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/circle-minus.svg b/src/newsreader/static/icons/circle-minus.svg deleted file mode 100755 index 1e4a8c9..0000000 --- a/src/newsreader/static/icons/circle-minus.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/clock.svg b/src/newsreader/static/icons/clock.svg deleted file mode 100755 index 55169fe..0000000 --- a/src/newsreader/static/icons/clock.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/cloud-check.svg b/src/newsreader/static/icons/cloud-check.svg deleted file mode 100755 index 253b386..0000000 --- a/src/newsreader/static/icons/cloud-check.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/cloud-download.svg b/src/newsreader/static/icons/cloud-download.svg deleted file mode 100755 index 1cbe14c..0000000 --- a/src/newsreader/static/icons/cloud-download.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/cloud-sync.svg b/src/newsreader/static/icons/cloud-sync.svg deleted file mode 100755 index c239e0d..0000000 --- a/src/newsreader/static/icons/cloud-sync.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/cloud-upload.svg b/src/newsreader/static/icons/cloud-upload.svg deleted file mode 100755 index 9fcbabe..0000000 --- a/src/newsreader/static/icons/cloud-upload.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/cloud.svg b/src/newsreader/static/icons/cloud.svg deleted file mode 100755 index 24918b1..0000000 --- a/src/newsreader/static/icons/cloud.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/code.svg b/src/newsreader/static/icons/code.svg deleted file mode 100755 index fbdfd39..0000000 --- a/src/newsreader/static/icons/code.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/coffee-cup.svg b/src/newsreader/static/icons/coffee-cup.svg deleted file mode 100755 index 478ee27..0000000 --- a/src/newsreader/static/icons/coffee-cup.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/cog.svg b/src/newsreader/static/icons/cog.svg deleted file mode 100755 index 4b4948a..0000000 --- a/src/newsreader/static/icons/cog.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/construction.svg b/src/newsreader/static/icons/construction.svg deleted file mode 100755 index 72726ff..0000000 --- a/src/newsreader/static/icons/construction.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/crop.svg b/src/newsreader/static/icons/crop.svg deleted file mode 100755 index 1568611..0000000 --- a/src/newsreader/static/icons/crop.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/cross-circle.svg b/src/newsreader/static/icons/cross-circle.svg deleted file mode 100755 index dbc08af..0000000 --- a/src/newsreader/static/icons/cross-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/cross.svg b/src/newsreader/static/icons/cross.svg deleted file mode 100755 index 2edad61..0000000 --- a/src/newsreader/static/icons/cross.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/database.svg b/src/newsreader/static/icons/database.svg deleted file mode 100755 index 64236ad..0000000 --- a/src/newsreader/static/icons/database.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/diamond.svg b/src/newsreader/static/icons/diamond.svg deleted file mode 100755 index 679df4a..0000000 --- a/src/newsreader/static/icons/diamond.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/dice.svg b/src/newsreader/static/icons/dice.svg deleted file mode 100755 index 6859d8b..0000000 --- a/src/newsreader/static/icons/dice.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/newsreader/static/icons/dinner.svg b/src/newsreader/static/icons/dinner.svg deleted file mode 100755 index 0cf54d6..0000000 --- a/src/newsreader/static/icons/dinner.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/direction-ltr.svg b/src/newsreader/static/icons/direction-ltr.svg deleted file mode 100755 index 827ada0..0000000 --- a/src/newsreader/static/icons/direction-ltr.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/direction-rtl.svg b/src/newsreader/static/icons/direction-rtl.svg deleted file mode 100755 index 47ce7d4..0000000 --- a/src/newsreader/static/icons/direction-rtl.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/download.svg b/src/newsreader/static/icons/download.svg deleted file mode 100755 index 51b561f..0000000 --- a/src/newsreader/static/icons/download.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/drop.svg b/src/newsreader/static/icons/drop.svg deleted file mode 100755 index d726f67..0000000 --- a/src/newsreader/static/icons/drop.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/earth.svg b/src/newsreader/static/icons/earth.svg deleted file mode 100755 index 411b22c..0000000 --- a/src/newsreader/static/icons/earth.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/enter-down.svg b/src/newsreader/static/icons/enter-down.svg deleted file mode 100755 index 85794a1..0000000 --- a/src/newsreader/static/icons/enter-down.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/enter.svg b/src/newsreader/static/icons/enter.svg deleted file mode 100755 index 1130e28..0000000 --- a/src/newsreader/static/icons/enter.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/envelope.svg b/src/newsreader/static/icons/envelope.svg deleted file mode 100755 index f030873..0000000 --- a/src/newsreader/static/icons/envelope.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/exit-up.svg b/src/newsreader/static/icons/exit-up.svg deleted file mode 100755 index c67b28c..0000000 --- a/src/newsreader/static/icons/exit-up.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/exit.svg b/src/newsreader/static/icons/exit.svg deleted file mode 100755 index b54f4b5..0000000 --- a/src/newsreader/static/icons/exit.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/eye.svg b/src/newsreader/static/icons/eye.svg deleted file mode 100755 index f67edba..0000000 --- a/src/newsreader/static/icons/eye.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/favicon-placeholder.svg b/src/newsreader/static/icons/favicon-placeholder.svg deleted file mode 100644 index 2dac325..0000000 --- a/src/newsreader/static/icons/favicon-placeholder.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/newsreader/static/icons/file-add.svg b/src/newsreader/static/icons/file-add.svg deleted file mode 100755 index 5f0b06d..0000000 --- a/src/newsreader/static/icons/file-add.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/file-empty.svg b/src/newsreader/static/icons/file-empty.svg deleted file mode 100755 index c203b20..0000000 --- a/src/newsreader/static/icons/file-empty.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/film-play.svg b/src/newsreader/static/icons/film-play.svg deleted file mode 100755 index d2a9db0..0000000 --- a/src/newsreader/static/icons/film-play.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/flag.svg b/src/newsreader/static/icons/flag.svg deleted file mode 100755 index 2f91d68..0000000 --- a/src/newsreader/static/icons/flag.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/frame-contract.svg b/src/newsreader/static/icons/frame-contract.svg deleted file mode 100755 index 3a70458..0000000 --- a/src/newsreader/static/icons/frame-contract.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/frame-expand.svg b/src/newsreader/static/icons/frame-expand.svg deleted file mode 100755 index 40f6af0..0000000 --- a/src/newsreader/static/icons/frame-expand.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/funnel.svg b/src/newsreader/static/icons/funnel.svg deleted file mode 100755 index d2688f7..0000000 --- a/src/newsreader/static/icons/funnel.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/gift.svg b/src/newsreader/static/icons/gift.svg deleted file mode 100755 index 72c0bdc..0000000 --- a/src/newsreader/static/icons/gift.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/graduation-hat.svg b/src/newsreader/static/icons/graduation-hat.svg deleted file mode 100755 index abb6099..0000000 --- a/src/newsreader/static/icons/graduation-hat.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/hand.svg b/src/newsreader/static/icons/hand.svg deleted file mode 100755 index 1eacb25..0000000 --- a/src/newsreader/static/icons/hand.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/heart-pulse.svg b/src/newsreader/static/icons/heart-pulse.svg deleted file mode 100755 index 62e0c08..0000000 --- a/src/newsreader/static/icons/heart-pulse.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/heart.svg b/src/newsreader/static/icons/heart.svg deleted file mode 100755 index 660600b..0000000 --- a/src/newsreader/static/icons/heart.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/highlight.svg b/src/newsreader/static/icons/highlight.svg deleted file mode 100755 index eb706fa..0000000 --- a/src/newsreader/static/icons/highlight.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/history.svg b/src/newsreader/static/icons/history.svg deleted file mode 100755 index 4acfb22..0000000 --- a/src/newsreader/static/icons/history.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/home.svg b/src/newsreader/static/icons/home.svg deleted file mode 100755 index c259dc3..0000000 --- a/src/newsreader/static/icons/home.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/hourglass.svg b/src/newsreader/static/icons/hourglass.svg deleted file mode 100755 index 0e72fba..0000000 --- a/src/newsreader/static/icons/hourglass.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/inbox.svg b/src/newsreader/static/icons/inbox.svg deleted file mode 100755 index 2e0a9f8..0000000 --- a/src/newsreader/static/icons/inbox.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/indent-decrease.svg b/src/newsreader/static/icons/indent-decrease.svg deleted file mode 100755 index 9443dcf..0000000 --- a/src/newsreader/static/icons/indent-decrease.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/newsreader/static/icons/indent-increase.svg b/src/newsreader/static/icons/indent-increase.svg deleted file mode 100755 index 25666f4..0000000 --- a/src/newsreader/static/icons/indent-increase.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/newsreader/static/icons/italic.svg b/src/newsreader/static/icons/italic.svg deleted file mode 100755 index 6ddde14..0000000 --- a/src/newsreader/static/icons/italic.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/keyboard.svg b/src/newsreader/static/icons/keyboard.svg deleted file mode 100755 index ae51d9c..0000000 --- a/src/newsreader/static/icons/keyboard.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/newsreader/static/icons/laptop-phone.svg b/src/newsreader/static/icons/laptop-phone.svg deleted file mode 100755 index e67b5b3..0000000 --- a/src/newsreader/static/icons/laptop-phone.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/laptop.svg b/src/newsreader/static/icons/laptop.svg deleted file mode 100755 index 51fdb07..0000000 --- a/src/newsreader/static/icons/laptop.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/layers.svg b/src/newsreader/static/icons/layers.svg deleted file mode 100755 index 8cec392..0000000 --- a/src/newsreader/static/icons/layers.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/leaf.svg b/src/newsreader/static/icons/leaf.svg deleted file mode 100755 index 428a264..0000000 --- a/src/newsreader/static/icons/leaf.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/license.svg b/src/newsreader/static/icons/license.svg deleted file mode 100755 index cf95671..0000000 --- a/src/newsreader/static/icons/license.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/src/newsreader/static/icons/lighter.svg b/src/newsreader/static/icons/lighter.svg deleted file mode 100755 index 09c5e0c..0000000 --- a/src/newsreader/static/icons/lighter.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/line-spacing.svg b/src/newsreader/static/icons/line-spacing.svg deleted file mode 100755 index 8cf8f24..0000000 --- a/src/newsreader/static/icons/line-spacing.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/linearicons.svg b/src/newsreader/static/icons/linearicons.svg deleted file mode 100755 index bbf2a26..0000000 --- a/src/newsreader/static/icons/linearicons.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/link.svg b/src/newsreader/static/icons/link.svg deleted file mode 100644 index 7bb4a0e..0000000 --- a/src/newsreader/static/icons/link.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/list.svg b/src/newsreader/static/icons/list.svg deleted file mode 100755 index 6255ad9..0000000 --- a/src/newsreader/static/icons/list.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/newsreader/static/icons/location.svg b/src/newsreader/static/icons/location.svg deleted file mode 100755 index 272c1d9..0000000 --- a/src/newsreader/static/icons/location.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/lock.svg b/src/newsreader/static/icons/lock.svg deleted file mode 100755 index 76259cf..0000000 --- a/src/newsreader/static/icons/lock.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/magic-wand.svg b/src/newsreader/static/icons/magic-wand.svg deleted file mode 100755 index 55753d8..0000000 --- a/src/newsreader/static/icons/magic-wand.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/magnifier.svg b/src/newsreader/static/icons/magnifier.svg deleted file mode 100755 index 9c26539..0000000 --- a/src/newsreader/static/icons/magnifier.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/map-marker.svg b/src/newsreader/static/icons/map-marker.svg deleted file mode 100755 index 3a20637..0000000 --- a/src/newsreader/static/icons/map-marker.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/map.svg b/src/newsreader/static/icons/map.svg deleted file mode 100755 index 319e300..0000000 --- a/src/newsreader/static/icons/map.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/menu-circle.svg b/src/newsreader/static/icons/menu-circle.svg deleted file mode 100755 index f3544eb..0000000 --- a/src/newsreader/static/icons/menu-circle.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/menu.svg b/src/newsreader/static/icons/menu.svg deleted file mode 100755 index e0952e0..0000000 --- a/src/newsreader/static/icons/menu.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/mic.svg b/src/newsreader/static/icons/mic.svg deleted file mode 100755 index 9c08d2d..0000000 --- a/src/newsreader/static/icons/mic.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/moon.svg b/src/newsreader/static/icons/moon.svg deleted file mode 100755 index 3f150c6..0000000 --- a/src/newsreader/static/icons/moon.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/move.svg b/src/newsreader/static/icons/move.svg deleted file mode 100755 index 86c223d..0000000 --- a/src/newsreader/static/icons/move.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/music-note.svg b/src/newsreader/static/icons/music-note.svg deleted file mode 100755 index a4ab001..0000000 --- a/src/newsreader/static/icons/music-note.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/mustache.svg b/src/newsreader/static/icons/mustache.svg deleted file mode 100755 index 8c12f70..0000000 --- a/src/newsreader/static/icons/mustache.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/neutral.svg b/src/newsreader/static/icons/neutral.svg deleted file mode 100755 index 4f55a69..0000000 --- a/src/newsreader/static/icons/neutral.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/page-break.svg b/src/newsreader/static/icons/page-break.svg deleted file mode 100755 index 493c248..0000000 --- a/src/newsreader/static/icons/page-break.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/newsreader/static/icons/paperclip.svg b/src/newsreader/static/icons/paperclip.svg deleted file mode 100755 index 2afa342..0000000 --- a/src/newsreader/static/icons/paperclip.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/paw.svg b/src/newsreader/static/icons/paw.svg deleted file mode 100755 index 4170890..0000000 --- a/src/newsreader/static/icons/paw.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/pencil.svg b/src/newsreader/static/icons/pencil.svg deleted file mode 100755 index fb618b1..0000000 --- a/src/newsreader/static/icons/pencil.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/phone-handset.svg b/src/newsreader/static/icons/phone-handset.svg deleted file mode 100755 index cdadbe5..0000000 --- a/src/newsreader/static/icons/phone-handset.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/phone.svg b/src/newsreader/static/icons/phone.svg deleted file mode 100755 index 2883bc8..0000000 --- a/src/newsreader/static/icons/phone.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/picture.svg b/src/newsreader/static/icons/picture.svg deleted file mode 100755 index c927a37..0000000 --- a/src/newsreader/static/icons/picture.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/pie-chart.svg b/src/newsreader/static/icons/pie-chart.svg deleted file mode 100755 index a02c1a5..0000000 --- a/src/newsreader/static/icons/pie-chart.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/pilcrow.svg b/src/newsreader/static/icons/pilcrow.svg deleted file mode 100755 index 1a61c76..0000000 --- a/src/newsreader/static/icons/pilcrow.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/plus-circle.svg b/src/newsreader/static/icons/plus-circle.svg deleted file mode 100755 index a0cf6fa..0000000 --- a/src/newsreader/static/icons/plus-circle.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/pointer-down.svg b/src/newsreader/static/icons/pointer-down.svg deleted file mode 100755 index e2321c6..0000000 --- a/src/newsreader/static/icons/pointer-down.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/pointer-left.svg b/src/newsreader/static/icons/pointer-left.svg deleted file mode 100755 index e3aa356..0000000 --- a/src/newsreader/static/icons/pointer-left.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/pointer-right.svg b/src/newsreader/static/icons/pointer-right.svg deleted file mode 100755 index 011ffba..0000000 --- a/src/newsreader/static/icons/pointer-right.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/pointer-up.svg b/src/newsreader/static/icons/pointer-up.svg deleted file mode 100755 index 08f82a1..0000000 --- a/src/newsreader/static/icons/pointer-up.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/poop.svg b/src/newsreader/static/icons/poop.svg deleted file mode 100755 index 570fade..0000000 --- a/src/newsreader/static/icons/poop.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/power-switch.svg b/src/newsreader/static/icons/power-switch.svg deleted file mode 100755 index 9f47372..0000000 --- a/src/newsreader/static/icons/power-switch.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/printer.svg b/src/newsreader/static/icons/printer.svg deleted file mode 100755 index d338626..0000000 --- a/src/newsreader/static/icons/printer.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/pushpin.svg b/src/newsreader/static/icons/pushpin.svg deleted file mode 100755 index d88009d..0000000 --- a/src/newsreader/static/icons/pushpin.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/question-circle.svg b/src/newsreader/static/icons/question-circle.svg deleted file mode 100755 index 45e5929..0000000 --- a/src/newsreader/static/icons/question-circle.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/redo.svg b/src/newsreader/static/icons/redo.svg deleted file mode 100755 index ec68693..0000000 --- a/src/newsreader/static/icons/redo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/rocket.svg b/src/newsreader/static/icons/rocket.svg deleted file mode 100755 index 552cbcc..0000000 --- a/src/newsreader/static/icons/rocket.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/sad.svg b/src/newsreader/static/icons/sad.svg deleted file mode 100755 index ed63b85..0000000 --- a/src/newsreader/static/icons/sad.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/screen.svg b/src/newsreader/static/icons/screen.svg deleted file mode 100755 index 057f0d9..0000000 --- a/src/newsreader/static/icons/screen.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/select.svg b/src/newsreader/static/icons/select.svg deleted file mode 100755 index 3e8cfee..0000000 --- a/src/newsreader/static/icons/select.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/shirt.svg b/src/newsreader/static/icons/shirt.svg deleted file mode 100755 index f6dd52d..0000000 --- a/src/newsreader/static/icons/shirt.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/smartphone.svg b/src/newsreader/static/icons/smartphone.svg deleted file mode 100755 index 779f7d2..0000000 --- a/src/newsreader/static/icons/smartphone.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/smile.svg b/src/newsreader/static/icons/smile.svg deleted file mode 100755 index a1a0a0a..0000000 --- a/src/newsreader/static/icons/smile.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/sort-alpha-asc.svg b/src/newsreader/static/icons/sort-alpha-asc.svg deleted file mode 100755 index 56b8d3f..0000000 --- a/src/newsreader/static/icons/sort-alpha-asc.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/sort-amount-asc.svg b/src/newsreader/static/icons/sort-amount-asc.svg deleted file mode 100755 index d24c0e4..0000000 --- a/src/newsreader/static/icons/sort-amount-asc.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/spell-check.svg b/src/newsreader/static/icons/spell-check.svg deleted file mode 100755 index 1c4875c..0000000 --- a/src/newsreader/static/icons/spell-check.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/star-empty.svg b/src/newsreader/static/icons/star-empty.svg deleted file mode 100755 index fd5098c..0000000 --- a/src/newsreader/static/icons/star-empty.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/src/newsreader/static/icons/star-half.svg b/src/newsreader/static/icons/star-half.svg deleted file mode 100755 index c48aa79..0000000 --- a/src/newsreader/static/icons/star-half.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/star.svg b/src/newsreader/static/icons/star.svg deleted file mode 100755 index 3302123..0000000 --- a/src/newsreader/static/icons/star.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/store.svg b/src/newsreader/static/icons/store.svg deleted file mode 100755 index 9fce882..0000000 --- a/src/newsreader/static/icons/store.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/strikethrough.svg b/src/newsreader/static/icons/strikethrough.svg deleted file mode 100755 index 825d1d0..0000000 --- a/src/newsreader/static/icons/strikethrough.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/sun.svg b/src/newsreader/static/icons/sun.svg deleted file mode 100755 index b9d9038..0000000 --- a/src/newsreader/static/icons/sun.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/newsreader/static/icons/sync.svg b/src/newsreader/static/icons/sync.svg deleted file mode 100755 index 982223f..0000000 --- a/src/newsreader/static/icons/sync.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/tablet.svg b/src/newsreader/static/icons/tablet.svg deleted file mode 100755 index 8554d69..0000000 --- a/src/newsreader/static/icons/tablet.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/tag.svg b/src/newsreader/static/icons/tag.svg deleted file mode 100755 index f2a207b..0000000 --- a/src/newsreader/static/icons/tag.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/text-align-center.svg b/src/newsreader/static/icons/text-align-center.svg deleted file mode 100755 index 4ca60a9..0000000 --- a/src/newsreader/static/icons/text-align-center.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/text-align-justify.svg b/src/newsreader/static/icons/text-align-justify.svg deleted file mode 100755 index 814e51e..0000000 --- a/src/newsreader/static/icons/text-align-justify.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/text-align-left.svg b/src/newsreader/static/icons/text-align-left.svg deleted file mode 100755 index ee71585..0000000 --- a/src/newsreader/static/icons/text-align-left.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/text-align-right.svg b/src/newsreader/static/icons/text-align-right.svg deleted file mode 100755 index 4884054..0000000 --- a/src/newsreader/static/icons/text-align-right.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/newsreader/static/icons/text-format-remove.svg b/src/newsreader/static/icons/text-format-remove.svg deleted file mode 100755 index f472c8c..0000000 --- a/src/newsreader/static/icons/text-format-remove.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/text-format.svg b/src/newsreader/static/icons/text-format.svg deleted file mode 100755 index 5fe551c..0000000 --- a/src/newsreader/static/icons/text-format.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/text-size.svg b/src/newsreader/static/icons/text-size.svg deleted file mode 100755 index aef49f1..0000000 --- a/src/newsreader/static/icons/text-size.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/thumbs-down.svg b/src/newsreader/static/icons/thumbs-down.svg deleted file mode 100755 index efe684e..0000000 --- a/src/newsreader/static/icons/thumbs-down.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/thumbs-up.svg b/src/newsreader/static/icons/thumbs-up.svg deleted file mode 100755 index bcfaec2..0000000 --- a/src/newsreader/static/icons/thumbs-up.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/times.svg b/src/newsreader/static/icons/times.svg deleted file mode 100644 index 571a32a..0000000 --- a/src/newsreader/static/icons/times.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/newsreader/static/icons/train.svg b/src/newsreader/static/icons/train.svg deleted file mode 100755 index efdeef9..0000000 --- a/src/newsreader/static/icons/train.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/newsreader/static/icons/trash.svg b/src/newsreader/static/icons/trash.svg deleted file mode 100755 index 4b35080..0000000 --- a/src/newsreader/static/icons/trash.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/underline.svg b/src/newsreader/static/icons/underline.svg deleted file mode 100755 index 0d440e5..0000000 --- a/src/newsreader/static/icons/underline.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/undo.svg b/src/newsreader/static/icons/undo.svg deleted file mode 100755 index ba812e0..0000000 --- a/src/newsreader/static/icons/undo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/unlink.svg b/src/newsreader/static/icons/unlink.svg deleted file mode 100755 index 2c176da..0000000 --- a/src/newsreader/static/icons/unlink.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/newsreader/static/icons/upload.svg b/src/newsreader/static/icons/upload.svg deleted file mode 100755 index 12ac621..0000000 --- a/src/newsreader/static/icons/upload.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/user.svg b/src/newsreader/static/icons/user.svg deleted file mode 100755 index 5931e5f..0000000 --- a/src/newsreader/static/icons/user.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/users.svg b/src/newsreader/static/icons/users.svg deleted file mode 100755 index 743ef13..0000000 --- a/src/newsreader/static/icons/users.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/volume-high.svg b/src/newsreader/static/icons/volume-high.svg deleted file mode 100755 index 7e891c2..0000000 --- a/src/newsreader/static/icons/volume-high.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/newsreader/static/icons/volume-low.svg b/src/newsreader/static/icons/volume-low.svg deleted file mode 100755 index 4872d97..0000000 --- a/src/newsreader/static/icons/volume-low.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/static/icons/volume-medium.svg b/src/newsreader/static/icons/volume-medium.svg deleted file mode 100755 index 71b2fca..0000000 --- a/src/newsreader/static/icons/volume-medium.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/volume.svg b/src/newsreader/static/icons/volume.svg deleted file mode 100755 index edb1f6e..0000000 --- a/src/newsreader/static/icons/volume.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/newsreader/static/icons/warning.svg b/src/newsreader/static/icons/warning.svg deleted file mode 100755 index 21f9e68..0000000 --- a/src/newsreader/static/icons/warning.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/newsreader/static/icons/wheelchair.svg b/src/newsreader/static/icons/wheelchair.svg deleted file mode 100755 index 25cdac0..0000000 --- a/src/newsreader/static/icons/wheelchair.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/newsreader/templates/base.html b/src/newsreader/templates/base.html index 7f3f560..42d438b 100644 --- a/src/newsreader/templates/base.html +++ b/src/newsreader/templates/base.html @@ -4,7 +4,7 @@ Newreader - + {% block head %} {% endblock %} diff --git a/webpack.common.babel.js b/webpack.common.babel.js index 0a0602e..2c8471c 100644 --- a/webpack.common.babel.js +++ b/webpack.common.babel.js @@ -7,14 +7,14 @@ export default { main: ['./src/newsreader/js/index.js', './src/newsreader/scss/index.scss'], }, output: { - path: resolve(__dirname, 'src', 'newsreader', 'static', 'js'), - filename: '[name].bundle.js', + path: resolve(__dirname, 'src', 'newsreader', 'static'), + filename: 'js/[name].bundle.js', }, module: { rules: [ { test: /\.(js|jsx)$/, - exclude: /(node_modules|bower_components)/, + exclude: /node_modules/, use: { loader: 'babel-loader' }, }, { @@ -25,9 +25,11 @@ export default { }, plugins: [ new MiniCssExtractPlugin({ - filename: './src/newsreader/static/css/[name].css', + filename: 'css/main.css', allChunks: true, }), - new CleanWebpackPlugin(), + new CleanWebpackPlugin({ + cleanOnceBeforeBuildPatterns: ['**/*', '!favicon.png'], + }), ], };