|
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