|
39 | 39 | <IconRedo />
|
40 | 40 | </div>
|
41 | 41 | <div class="issuer">
|
42 |
| - {{ |
| 42 | + <img |
| 43 | + class="issuerFavicon" |
| 44 | + v-if="shouldShowFavicon() && entry.issuer.split('::')[1]" |
| 45 | + v-bind:src="getFaviconUrl(entry.issuer.split('::')[1])" |
| 46 | + /><IconMedal |
| 47 | + class="issuerFavicon" |
| 48 | + v-if="shouldShowFavicon() && !entry.issuer.split('::')[1]" |
| 49 | + /> |
| 50 | + {{ |
43 | 51 | entry.issuer.split("::")[0] +
|
44 | 52 | (theme === "compact" ? ` (${entry.account})` : "")
|
45 | 53 | }}
|
@@ -96,6 +104,7 @@ import IconRedo from "../../../svg/redo.svg";
|
96 | 104 | import IconQr from "../../../svg/qrcode.svg";
|
97 | 105 | import IconBars from "../../../svg/bars.svg";
|
98 | 106 | import IconPin from "../../../svg/pin.svg";
|
| 107 | +import IconMedal from "../../../svg/medal.svg"; |
99 | 108 |
|
100 | 109 | const computedPrototype = [
|
101 | 110 | mapState("accounts", [
|
@@ -137,6 +146,20 @@ export default Vue.extend({
|
137 | 146 | entry.type !== OTPType.steam
|
138 | 147 | );
|
139 | 148 | },
|
| 149 | + shouldShowFavicon() { |
| 150 | + return ( |
| 151 | + navigator.userAgent.indexOf("Firefox") === -1 && |
| 152 | + this.$store.state.menu.showFavicon |
| 153 | + ); |
| 154 | + }, |
| 155 | + getFaviconUrl(u: string) { |
| 156 | + // for MV3 |
| 157 | + // const url = new URL(chrome.runtime.getURL("/_favicon/")); |
| 158 | + // url.searchParams.set("pageUrl", "https://" + u); |
| 159 | + // url.searchParams.set("size", "16"); |
| 160 | + // return url.toString(); |
| 161 | + return "chrome://favicon/https://" + u; |
| 162 | + }, |
140 | 163 | showCode(code: string) {
|
141 | 164 | if (code === CodeState.Encrypted) {
|
142 | 165 | return this.i18n.encrypted;
|
@@ -261,6 +284,7 @@ export default Vue.extend({
|
261 | 284 | IconQr,
|
262 | 285 | IconBars,
|
263 | 286 | IconPin,
|
| 287 | + IconMedal, |
264 | 288 | },
|
265 | 289 | });
|
266 | 290 |
|
|
0 commit comments