@@ -22,6 +22,10 @@ let debounceInputAbortController = null;
22
22
let mutationObserver = null ;
23
23
24
24
/**
25
+ * @typedef Link
26
+ * @property {string } href
27
+ * @property {string } text
28
+ *
25
29
* @typedef DOM
26
30
* @property {string|undefined } renderingMode
27
31
* @property {string|undefined } doctypeName
@@ -65,7 +69,10 @@ let mutationObserver = null;
65
69
* @property {boolean } showVirtual
66
70
* @property {boolean } quirksMode
67
71
* @property {boolean } fullParser
68
- * @property {number } previewPrNumber
72
+ * @property {number|null } previewCorePrNumber
73
+ * @property {number|null } previewGutenbergPrNumber
74
+ * @property {Link|null } previewCoreLink
75
+ * @property {Link|null } previewGutenbergLink
69
76
* @property {boolean } checkingForPRPlaygroundLink
70
77
*
71
78
* @property {'breadcrumbs'|'insertionMode' } hoverInfo
@@ -113,6 +120,31 @@ const store = createStore(NS, {
113
120
quirksMode : Boolean ( localStorage . getItem ( `${ NS } -quirksMode` ) ) ,
114
121
fullParser : Boolean ( localStorage . getItem ( `${ NS } -fullParser` ) ) ,
115
122
123
+ previewCorePrNumber : null ,
124
+ previewGutenbergPrNumber : null ,
125
+
126
+ /** @type {Link|null } */
127
+ get previewCoreLink ( ) {
128
+ if ( ! store . state . previewCorePrNumber ) {
129
+ return null ;
130
+ }
131
+ return {
132
+ href : `https://github.com/WordPress/wordpress-develop/pull/${ store . state . previewCorePrNumber } ` ,
133
+ text : `wordpress-develop #${ store . state . previewCorePrNumber } ` ,
134
+ } ;
135
+ } ,
136
+
137
+ /** @type {Link|null } */
138
+ get previewGutenbergLink ( ) {
139
+ if ( ! store . state . previewGutenbergPrNumber ) {
140
+ return null ;
141
+ }
142
+ return {
143
+ href : `https://github.com/WordPress/gutenberg/pull/${ store . state . previewGutenbergPrNumber } ` ,
144
+ text : `Gutenberg #${ store . state . previewGutenbergPrNumber } ` ,
145
+ } ;
146
+ } ,
147
+
116
148
hoverInfo : /** @type {typeof store.state.hoverInfo } */ (
117
149
localStorage . getItem ( `${ NS } -hoverInfo` )
118
150
) ,
@@ -516,67 +548,41 @@ const store = createStore(NS, {
516
548
} ,
517
549
518
550
/** @param {InputEvent } e */
519
- handleCopyPrInput ( e ) {
551
+ handleCopyCorePrInput ( e ) {
520
552
const val = /** @type {HTMLInputElement } */ ( e . target ) . valueAsNumber ;
521
553
if ( Number . isFinite ( val ) && val > 0 ) {
522
- store . state . previewPrNumber = val ;
554
+ store . state . previewCorePrNumber = val ;
523
555
return ;
524
556
}
525
- store . state . previewPrNumber = val ;
557
+ store . state . previewCorePrNumber = null ;
526
558
} ,
527
559
528
- handleCopyPrClick : function * ( ) {
529
- const prNumber = store . state . previewPrNumber ;
530
- const playgroundLink = new URL ( store . state . playgroundLink ) ;
531
- if ( ! prNumber ) {
532
- alert ( 'Please enter a PR number.' ) ;
560
+ /** @param { InputEvent } e */
561
+ handleCopyGbPrInput ( e ) {
562
+ const val = /** @type { HTMLInputElement } */ ( e . target ) . valueAsNumber ;
563
+ if ( Number . isFinite ( val ) && val > 0 ) {
564
+ store . state . previewGutenbergPrNumber = val ;
533
565
return ;
534
566
}
535
- const url = new URL (
536
- 'https://playground.wordpress.net/plugin-proxy.php?org=WordPress&repo=wordpress-develop&workflow=Test%20Build%20Processes' ,
537
- ) ;
538
- url . searchParams . set ( 'artifact' , `wordpress-build-${ prNumber } ` ) ;
539
- url . searchParams . set ( 'pr' , prNumber . toString ( 10 ) ) ;
540
-
541
- try {
542
- playgroundLink . searchParams . set ( 'wp' , url . href ) ;
543
- yield navigator . clipboard . writeText ( playgroundLink . href ) ;
544
- } catch {
545
- alert ( 'Copy failed, make sure the browser window is focused.' ) ;
546
- }
567
+ store . state . previewGutenbergPrNumber = null ;
547
568
} ,
548
569
549
- handleCheckPrClick : function * ( ) {
550
- if ( store . state . checkingForPRPlaygroundLink ) {
551
- return ;
552
- }
570
+ handleCopyPrClick : function * ( ) {
571
+ const corePrNumber = store . state . previewCorePrNumber ;
572
+ const gbPrNumber = store . state . previewGutenbergPrNumber ;
553
573
554
- const prNumber = store . state . previewPrNumber ;
555
- if ( ! prNumber ) {
556
- alert ( 'Please enter a PR number.' ) ;
557
- return ;
574
+ const playgroundLink = new URL ( store . state . playgroundLink ) ;
575
+ if ( corePrNumber ) {
576
+ playgroundLink . searchParams . set ( 'core-pr' , String ( corePrNumber ) ) ;
577
+ }
578
+ if ( gbPrNumber ) {
579
+ playgroundLink . searchParams . set ( 'gutenberg-pr' , String ( gbPrNumber ) ) ;
558
580
}
559
581
560
582
try {
561
- store . state . checkingForPRPlaygroundLink = true ;
562
-
563
- const url = new URL (
564
- 'https://playground.wordpress.net/plugin-proxy.php?org=WordPress&repo=wordpress-develop&workflow=Test%20Build%20Processes' ,
565
- ) ;
566
- url . searchParams . set ( 'artifact' , `wordpress-build-${ prNumber } ` ) ;
567
- url . searchParams . set ( 'pr' , prNumber . toString ( 10 ) ) ;
568
- url . searchParams . set ( 'verify_only' , 'true' ) ;
569
- /** @type {Response } */
570
- const response = yield fetch ( url . href , {
571
- method : 'GET' ,
572
- } ) ;
573
- if ( ! response . ok ) {
574
- alert ( 'The PR number is not valid or has not been built yet.' ) ;
575
- return ;
576
- }
577
- alert ( 'The PR number looks good!' ) ;
578
- } finally {
579
- store . state . checkingForPRPlaygroundLink = false ;
583
+ yield navigator . clipboard . writeText ( playgroundLink . href ) ;
584
+ } catch {
585
+ alert ( 'Copy failed, make sure the browser window is focused.' ) ;
580
586
}
581
587
} ,
582
588
} ) ;
0 commit comments