diff --git a/resources/manifest.json b/resources/manifest.json index 8743527..b73e89e 100644 --- a/resources/manifest.json +++ b/resources/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Kuna.io Exchange Ticker", - "version": "0.3.0", + "version": "0.3.1", "short_name": "Kuna Ticker", "description": "Лучший способ следить за ценой Bitcoin к Гривне.", "content_security_policy": "script-src 'self' https://www.google-analytics.com; object-src 'self'", diff --git a/src/Background/BadgeController.ts b/src/Background/BadgeController.ts new file mode 100644 index 0000000..c3c0dc2 --- /dev/null +++ b/src/Background/BadgeController.ts @@ -0,0 +1,39 @@ +import * as Numeral from 'numeral'; + +import ExtensionPlatform from 'Core/Extension'; +import {TickerInterface} from 'Core/Interfaces/TickerInterface'; + +const browserAction = ExtensionPlatform.getExtension().browserAction; + +export default class BadgeController { + + static formatTickerPrice(price: number): string { + let priceNumeral = Numeral(price); + + if (price < 10) { + return '' + priceNumeral.format('0.[00]'); + } else if (price < 100) { + return '' + priceNumeral.format('0,0.[0]'); + } else if (price < 1000) { + return '' + priceNumeral.format('0,0.[0]'); + } else if (price < 10000) { + return '' + priceNumeral.format('0.0a'); + } else if (price < 1000000) { + return '' + priceNumeral.format('0a'); + } + + return '' + price; + } + + static updateBudgetTexts(ticker: TickerInterface) { + browserAction.setBadgeText({ + text: BadgeController.formatTickerPrice(ticker.price) + }); + + browserAction.setTitle({ + title: 'Kuna Ticker: ' + + `${ticker.baseCurrency} / ${ticker.quoteCurrency}` + + ` - ${Numeral(ticker.price).format(ticker.format)}` + }); + } +} diff --git a/src/Background/TickerStorage.ts b/src/Background/TickerStorage.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/Background/elseFiles.js b/src/Background/elseFiles.js deleted file mode 100644 index 93cc01a..0000000 --- a/src/Background/elseFiles.js +++ /dev/null @@ -1 +0,0 @@ -export default (name) => `Else name function: ${name}`; \ No newline at end of file diff --git a/src/Style/modules/dropdown.scss b/src/Style/modules/dropdown.scss deleted file mode 100644 index 2ec543a..0000000 --- a/src/Style/modules/dropdown.scss +++ /dev/null @@ -1,94 +0,0 @@ -.Dropdown { - - &-root { - position: relative; - font-size: 12px; - } - - &-control { - position: relative; - overflow: hidden; - box-sizing: border-box; - color: #333; - outline: none; - padding: 4px 52px 4px 8px; - transition: all 200ms ease; - width: 100%; - cursor: pointer; - background: rgb(230,230,230); - border-radius: 4px; - } - - &-arrow { - border-color: #999 transparent transparent; - border-style: solid; - border-width: 4px 4px 0; - content: ' '; - display: block; - height: 0; - margin-top: -2px; - position: absolute; - right: 8px; - top: 50%; - width: 0; - - .is-open & { - border-color: transparent transparent #999; - border-width: 0 4px 4px; - } - } -} - -.Dropdown-menu { - background-color: white; - border: 1px solid #e8e8e8; - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06); - box-sizing: border-box; - border-radius: 4px; - max-height: 130px; - overflow-y: auto; - position: absolute; - top: 100%; - margin-top: 2px; - width: 100%; - z-index: 1000; - -webkit-overflow-scrolling: touch; -} - -.Dropdown-menu .Dropdown-group > .Dropdown-title { - padding: 8px 10px; - color: rgba(51, 51, 51, 1); - font-weight: bold; - text-transform: capitalize; -} - -.Dropdown-option { - box-sizing: border-box; - color: rgba(51, 51, 51, 0.8); - cursor: pointer; - display: block; - padding: 8px 10px; -} - -.Dropdown-option:last-child { - border-bottom-right-radius: 2px; - border-bottom-left-radius: 2px; -} - -.Dropdown-option:hover { - background-color: #f2f9fc; - color: #333; -} - -.Dropdown-option.is-selected { - background-color: #f2f9fc; - color: #333; -} - -.Dropdown-noresults { - box-sizing: border-box; - color: #ccc; - cursor: default; - display: block; - padding: 8px 10px; -} diff --git a/src/Style/popup.scss b/src/Style/popup.scss index 4766772..8169175 100644 --- a/src/Style/popup.scss +++ b/src/Style/popup.scss @@ -1,7 +1,6 @@ @import "fonts"; @import "variable"; @import "cleaner"; -@import "modules/dropdown"; html { width: 300px; diff --git a/src/background.js b/src/background.js index e4187da..e78359e 100644 --- a/src/background.js +++ b/src/background.js @@ -6,6 +6,8 @@ import {Events} from 'Core/EventProtocol/Events'; import KunaApiClient from 'Core/Kuna/ApiClient'; import KunaTickerMap from 'Core/Kuna/TickerMap'; +import BadgeController from 'Background/BadgeController'; + const TickerStorage = {}; @@ -61,9 +63,14 @@ const updateTicker = (key) => { event: Events.UPDATE_TICKER, ticker: currentTicker }); + + if (currentTickerKey === currentTicker.key) { + BadgeController.updateBudgetTexts(TickerStorage[key]); + } }); }; + const tickerUpdater = () => { _.each(TickerStorage, (ticker) => updateTicker(ticker.key)); }; @@ -98,6 +105,14 @@ const extensionEventListener = (request, sender, sendResponse) => { sendResponse({ currentTicker: currentTickerKey }); + + + try { + BadgeController.updateBudgetTexts(TickerStorage[currentTickerKey]); + } catch (error) { + console.log(error); + } + break; } @@ -115,6 +130,10 @@ const initBackground = () => { tickerUpdater(); setInterval(tickerUpdater, 30000); + + ExtensionPlatform.getExtension().browserAction.setBadgeBackgroundColor({ + color: '#11a0ff' + }); }; document.addEventListener('DOMContentLoaded', initBackground); \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 6335ece..1c08126 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -114,10 +114,7 @@ const WebpackConfig = { alias: { Core: Path.join(__dirname, 'src/Core'), Popup: Path.join(__dirname, 'src/Popup'), - Background: Path.join(__dirname, 'src/Background'), - - // @depracated - Library: Path.join(__dirname, 'src/Library') + Background: Path.join(__dirname, 'src/Background') } }, devtool: 'inline-source-map',