| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 
							- import $ from 'jquery';
 
- import { config } from 'grav-config';
 
- import request from '../utils/request';
 
- const URI = `${config.base_url_relative}/ajax.json/task${config.param_sep}getNewsFeed`;
 
- class Feed {
 
-     constructor() {
 
-         this.data = null;
 
-     }
 
-     fetch(refresh = false, callback = function() {}) {
 
-         request(URI, {
 
-             method: 'post',
 
-             body: { refresh }
 
-         }, (response) => {
 
-             this.data = response;
 
-             callback(response);
 
-         });
 
-     }
 
-     refresh(refresh = false) {
 
-         const feed = $('#news-feed .widget-content');
 
-         if (!feed.length) { return; }
 
-         let loader = feed.find('.widget-loader');
 
-         loader.find('div').remove();
 
-         loader.find('.fa-warning').removeClass('fa-warning').addClass('fa-refresh fa-spin');
 
-         loader.show();
 
-         feed.find('> ul').hide();
 
-         if (!this.data || this.data.error || refresh) {
 
-             this.fetch(refresh, this.updateContent.bind(this));
 
-         } else {
 
-             this.updateContent();
 
-         }
 
-     }
 
-     updateContent() {
 
-         const feed = $('#news-feed .widget-content');
 
-         if (!feed.length) { return; }
 
-         let loader = feed.find('.widget-loader').hide();
 
-         let content = feed.find('> ul').empty().show();
 
-         if (this.data.error || this.data.status === 'error') {
 
-             loader.show().find('div').remove();
 
-             loader.find('.fa-refresh').removeClass('fa-refresh fa-spin').addClass('fa-warning');
 
-             loader.append(`<div>${this.data.error ? this.data.error.message : this.data.message || 'Unable to download news feed'}</div>`);
 
-             return;
 
-         }
 
-         if (this.data && this.data.feed_data) {
 
-             content.append(this.data.feed_data);
 
-         }
 
-     }
 
- }
 
- let feed = new Feed();
 
- $(document).ready(() => feed.refresh());
 
- $(document).on('click', '[data-refresh="feed"]', (event) => {
 
-     event.preventDefault();
 
-     feed.refresh(true);
 
- });
 
- export default feed;
 
 
  |