1
1
/* global extLib, utils, sendMessageForGa */
2
2
3
+ import { getBrowser } from 'helpmate/dist/browser/getBrowser.js' ;
4
+ import { copyToClipboard } from 'helpmate/dist/misc/copyToClipboard.js' ;
5
+
3
6
import {
4
7
APP_$_OPEN_SEARCH_ICONS
5
8
} from 'reducers/actionTypes.js' ;
6
9
7
- // TODO: DUPLICATE: This piece of code is duplicated in searchUi.js
8
- const copy = async function ( simpleText ) {
9
- try {
10
- await navigator . clipboard . writeText ( simpleText ) ;
11
- return true ;
12
- } catch ( e ) {
13
- return false ;
14
- }
15
- } ;
16
-
17
10
const timeout = function ( ms ) {
18
11
return new Promise ( resolve => setTimeout ( resolve , ms ) ) ;
19
12
} ;
@@ -30,12 +23,51 @@ const forceBlur = async function () {
30
23
document . body . removeChild ( input ) ;
31
24
} ;
32
25
33
- const commands = (
34
- [
35
- ( function ( ) {
36
- var editor = window . MagiCSSEditor ;
26
+ const extensionUrl = {
27
+ chrome : 'https://chrome.google.com/webstore/detail/ifhikkcafabcgolfjegfcgloomalapol' ,
28
+ edge : 'https://microsoftedge.microsoft.com/addons/detail/live-editor-for-css-less/ahibbdhoijcafelmfepfpcmmdifchpdg' ,
29
+ firefox : 'https://addons.mozilla.org/firefox/addon/live-editor-for-css-less-sass/' ,
30
+ opera : 'https://addons.opera.com/extensions/details/live-editor-for-css-and-less-magic-css/'
31
+ } ;
32
+ const getExecIconToShowForRateUs = async function ( ) {
33
+ let icon = null ;
34
+ const browserDetails = await getBrowser ( ) ;
35
+ const browserName = browserDetails . name ;
36
+ if (
37
+ browserName === 'chrome' ||
38
+ browserName === 'edge' ||
39
+ browserName === 'firefox' ||
40
+ browserName === 'opera'
41
+ ) {
42
+ if ( browserName === 'chrome' ) {
43
+ icon = {
44
+ browser : 'chrome' ,
45
+ href : extensionUrl . chrome + '/reviews'
46
+ } ;
47
+ } else if ( browserName === 'edge' ) {
48
+ icon = {
49
+ browser : 'edge' ,
50
+ href : extensionUrl . edge
51
+ } ;
52
+ } else if ( browserName === 'firefox' ) {
53
+ icon = {
54
+ browser : 'firefox' ,
55
+ href : extensionUrl . firefox + 'reviews/'
56
+ } ;
57
+ } else if ( browserName === 'opera' ) {
58
+ icon = {
59
+ browser : 'opera' ,
60
+ href : extensionUrl . opera + '#feedback-container'
61
+ } ;
62
+ }
63
+ }
64
+ return icon ;
65
+ } ;
37
66
38
- const iconOb = window . execIconToShowForRateUs ( editor ) ;
67
+ const getCommands = async ( ) => (
68
+ [
69
+ await ( async function ( ) {
70
+ const iconOb = await getExecIconToShowForRateUs ( ) ;
39
71
40
72
const
41
73
CHROME = 'chrome' ,
@@ -159,7 +191,7 @@ const commands = (
159
191
const textValue = editor . getTextValue ( ) ;
160
192
161
193
if ( textValue ) {
162
- const flag = await copy ( textValue ) ;
194
+ const flag = await copyToClipboard ( textValue ) ;
163
195
if ( flag ) {
164
196
utils . alertNote ( 'Copied code to clipboard' , 2500 ) ;
165
197
sendMessageForGa ( [ '_trackEvent' , 'commandPalette' , 'copiedCodeToClipboard' ] ) ;
@@ -287,38 +319,14 @@ const commands = (
287
319
sendMessageForGa ( [ '_trackEvent' , 'commandPalette' , 'openGithub' ] ) ;
288
320
}
289
321
} ,
290
- ...( function ( ) {
291
- // TODO: DUPLICATE: Code duplication for browser detection in commands.js, ext-lib.js, magicss.js and options.js
292
- var isChrome = false ,
293
- isEdge = false ,
294
- isFirefox = false ,
295
- isOpera = false ,
296
- isChromiumBased = false ;
297
-
298
- // Note that we are checking for "Edg/" which is the test required for identifying Chromium based Edge browser
299
- if ( / E d g \/ / . test ( navigator . appVersion ) ) { // Test for "Edge" before Chrome, because Microsoft Edge browser also adds "Chrome" in navigator.appVersion
300
- isEdge = true ;
301
- } else if ( / O P R \/ / . test ( navigator . appVersion ) ) { // Test for "Opera" before Chrome, because Opera browser also adds "Chrome" in navigator.appVersion
302
- isOpera = true ;
303
- } else if ( / C h r o m e / . test ( navigator . appVersion ) ) {
304
- isChrome = true ;
305
- } else if ( / F i r e f o x / . test ( navigator . userAgent ) ) { // For Mozilla Firefox browser, navigator.appVersion is not useful, so we need to fallback to navigator.userAgent
306
- isFirefox = true ;
307
- }
308
- if ( isEdge || isOpera || isChrome ) {
309
- isChromiumBased = true ; // eslint-disable-line no-unused-vars
310
- }
311
-
312
- var extensionUrl = {
313
- chrome : 'https://chrome.google.com/webstore/detail/ifhikkcafabcgolfjegfcgloomalapol' ,
314
- edge : 'https://microsoftedge.microsoft.com/addons/detail/live-editor-for-css-less/ahibbdhoijcafelmfepfpcmmdifchpdg' ,
315
- firefox : 'https://addons.mozilla.org/firefox/addon/live-editor-for-css-less-sass/' ,
316
- opera : 'https://addons.opera.com/extensions/details/live-editor-for-css-and-less-magic-css/'
317
- } ;
322
+ ...( await ( async function ( ) {
323
+ const browserDetails = await getBrowser ( ) ;
324
+ const browserName = browserDetails . name ;
318
325
319
326
return [
320
327
{
321
- skip : isChrome ? true : false ,
328
+ // skip: isChrome ? true : false,
329
+ skip : browserName === 'chrome' ,
322
330
operationId : 'link-chrome' ,
323
331
name : 'Magic CSS for Chrome' ,
324
332
iconCls : 'magicss-use-icon-chrome' ,
@@ -328,7 +336,7 @@ const commands = (
328
336
}
329
337
} ,
330
338
{
331
- skip : isEdge ? true : false ,
339
+ skip : browserName === 'edge' ,
332
340
operationId : 'link-edge' ,
333
341
name : 'Magic CSS for Edge' ,
334
342
iconCls : 'magicss-use-icon-edge-gray' ,
@@ -338,7 +346,7 @@ const commands = (
338
346
}
339
347
} ,
340
348
{
341
- skip : isFirefox ? true : false ,
349
+ skip : browserName === 'firefox' ,
342
350
operationId : 'link-firefox' ,
343
351
name : 'Magic CSS for Firefox' ,
344
352
iconCls : 'magicss-use-icon-firefox-gray' ,
@@ -348,7 +356,7 @@ const commands = (
348
356
}
349
357
} ,
350
358
{
351
- skip : isOpera ? true : false ,
359
+ skip : browserName === 'opera' ,
352
360
operationId : 'link-opera' ,
353
361
name : 'Magic CSS for Opera' ,
354
362
iconCls : 'magicss-use-logo-opera-gray' ,
@@ -358,7 +366,7 @@ const commands = (
358
366
}
359
367
}
360
368
] ;
361
- } ( ) ) ,
369
+ } ( ) ) ) ,
362
370
{
363
371
operationId : 'more-options' ,
364
372
name : 'More options' ,
@@ -380,4 +388,4 @@ const commands = (
380
388
}
381
389
} ) ;
382
390
383
- export { commands } ;
391
+ export { getCommands } ;
0 commit comments