diff --git a/src/app/Coriolis.jsx b/src/app/Coriolis.jsx index 5e2f7afd..43444850 100644 --- a/src/app/Coriolis.jsx +++ b/src/app/Coriolis.jsx @@ -22,6 +22,7 @@ import ShipyardPage from './pages/ShipyardPage'; import ErrorDetails from './pages/ErrorDetails'; const zlib = require('pako'); +const request = require('superagent'); /** * Coriolis App @@ -65,11 +66,12 @@ export default class Coriolis extends React.Component { this.state = { noTouch: !('ontouchstart' in window || navigator.msMaxTouchPoints || navigator.maxTouchPoints), page: null, + announcements: [], language: getLanguage(Persist.getLangCode()), route: {}, sizeRatio: Persist.getSizeRatio() }; - + this._getAnnouncements() Router('', (r) => this._setPage(ShipyardPage, r)); Router('/import?', (r) => this._importBuild(r)); Router('/import/:data', (r) => this._importBuild(r)); @@ -108,6 +110,14 @@ export default class Coriolis extends React.Component { } } + _getAnnouncements() { + return request.get('https://orbis.zone/api/announcement') + .query({showInCoriolis: true}) + .then(announces => { + this.setState({ announcements: announces.body }) + }) + } + /** * Updates / Sets the page and route context * @param {[type]} page The page to be shown @@ -394,7 +404,7 @@ export default class Coriolis extends React.Component { return
{this.props.text}
; + } + +} diff --git a/src/app/components/Header.jsx b/src/app/components/Header.jsx index 900da5e7..4df4199b 100644 --- a/src/app/components/Header.jsx +++ b/src/app/components/Header.jsx @@ -16,6 +16,7 @@ import ModalExport from './ModalExport'; import ModalHelp from './ModalHelp'; import ModalImport from './ModalImport'; import Slider from './Slider'; +import Announcement from './Announcement'; import { outfitURL } from '../utils/UrlGenerators'; const SIZE_MIN = 0.65; @@ -76,6 +77,8 @@ export default class Header extends TranslatedComponent { this._openShips = this._openMenu.bind(this, 's'); this._openBuilds = this._openMenu.bind(this, 'b'); this._openComp = this._openMenu.bind(this, 'comp'); + this._openAnnounce = this._openMenu.bind(this, 'announce'); + this._getAnnouncementsMenu = this._getAnnouncementsMenu.bind(this); this._openSettings = this._openMenu.bind(this, 'settings'); this._showHelp = this._showHelp.bind(this); this.languageOptions = []; @@ -411,6 +414,29 @@ export default class Header extends TranslatedComponent { ); } + /** + * Generate the announcement menu + * @return {React.Component} Menu + */ + _getAnnouncementsMenu() { + let announcements; + let translate = this.context.language.translate; + + if (this.props.announcements) { + announcements = []; + for (let announce of this.props.announcements) { + announcements.push(