Welcome to mirror list, hosted at ThFree Co, Russian Federation.

BadgeManager.js « Manager « js « src - github.com/marius-wieschollek/passwords-webextension.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 793f636664d74654c7c26a884c260208d5b88280 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import SystemService from '@js/Services/SystemService';
import RecommendationManager from '@js/Manager/RecommendationManager';
import TabManager from '@js/Manager/TabManager';
import ServerManager from '@js/Manager/ServerManager';
import ErrorManager from '@js/Manager/ErrorManager';
import LocalisationService from '@js/Services/LocalisationService';

class BadgeManager {

    constructor() {
        this._api = null;
    }

    init() {
        this._api = SystemService.getBrowserApi();
        RecommendationManager.listen.on(
            async (r) => {
                await this._updateBrowserAction(r);
            }
        );
        TabManager.tabUpdated.on(
            async () => {
                let r = RecommendationManager.getRecommendations();
                await this._updateBrowserAction(r);
            }
        );
        ServerManager.isAuthorized.onChange(
            async (d) => {
                let r = RecommendationManager.getRecommendations();
                await this._updateBrowserAction(r);
            }
        );
    }

    /**
     *
     * @param {Password[]} recommended
     * @private
     */
    async _updateBrowserAction(recommended) {
        if(SystemService.hasBadge()) {
            await this._updateBadge(recommended);
            await this._updateTitle(recommended);
        } else {
            await this._updateTitle(recommended);
        }
    }

    /**
     *
     * @param {Password[]} recommended
     * @private
     */
    async _updateBadge(recommended) {
        let tabId = TabManager.currentTabId;
        if(tabId === 0) return;

        try {
            if(!ServerManager.isAuthorized.get()) {
                await this._api.browserAction.setBadgeText({text: '!', tabId});
            } else if(recommended.length !== 0) {
                await this._api.browserAction.setBadgeText({text: recommended.length.toString(), tabId});
            } else {
                await this._api.browserAction.setBadgeText({text: '', tabId});
            }

            if(SystemService.getBrowserPlatform() === 'firefox') {
                await this._api.browserAction.setBadgeTextColor({color: '#fff'});
            }

            await this._api.browserAction.setBadgeBackgroundColor({color: '#0082c9'});
        } catch(e) {
            ErrorManager.logError(e);
        }
    }

    /**
     *
     * @param {Password[]} recommended
     * @private
     */
    async _updateTitle(recommended) {
        let tabId = TabManager.currentTabId;
        if(tabId === 0) return;

        try {
            if(ServerManager.isAuthorized.get() && recommended.length !== 0) {
                let count = recommended.length.toString(),
                    title = LocalisationService.translate('BrowserActionTitleCounter', [count]);
                await this._api.browserAction.setTitle({title, tabId});
            } else {
                let title = LocalisationService.translate('browserActionTitle');
                await this._api.browserAction.setTitle({title, tabId});
            }
        } catch(e) {
            ErrorManager.logError(e);
        }
    }
}

export default new BadgeManager();