@@ -44,23 +44,62 @@ const emptyState: ViewState = {
44
44
formKey : v4 ( ) ,
45
45
} ;
46
46
47
- const IconOption = ( props : any ) => (
48
- < components . Option { ...props } >
49
- < div ref = { props . innerRef } { ...props . innerProps } style = { { display : 'flex' , alignItems : 'center' } } >
50
- < img src = { props . data . avatarUrl } width = "24" height = "24" alt = { props . data . name || 'Avatar' } />
51
- < span style = { { marginLeft : '10px' } } > { props . data . name } </ span >
52
- </ div >
53
- </ components . Option >
54
- ) ;
55
-
56
- const IconValue = ( props : any ) => (
57
- < components . SingleValue { ...props } >
58
- < div style = { { display : 'flex' , alignItems : 'center' } } >
59
- < img src = { props . data . avatarUrl } width = "16" height = "16" alt = { props . data . name || 'Avatar' } />
60
- < span style = { { marginLeft : '10px' } } > { props . data . name } </ span >
61
- </ div >
62
- </ components . SingleValue >
63
- ) ;
47
+ const getFaviconUrl = ( siteData : any ) : string | null => {
48
+ if ( siteData ?. baseLinkUrl ) {
49
+ return `${ siteData . baseLinkUrl } /favicon.ico` ;
50
+ } else if ( siteData ?. host ) {
51
+ return `https://${ siteData . host } /favicon.ico` ;
52
+ }
53
+ return null ;
54
+ } ;
55
+
56
+ const IconOption = ( props : any ) => {
57
+ const fallbackImg = 'images/jira-icon.svg' ;
58
+ const avatarUrl = getFaviconUrl ( props . data ) || fallbackImg ;
59
+
60
+ return (
61
+ < components . Option { ...props } >
62
+ < div ref = { props . innerRef } { ...props . innerProps } style = { { display : 'flex' , alignItems : 'center' } } >
63
+ < img
64
+ src = { avatarUrl }
65
+ width = "24"
66
+ height = "24"
67
+ alt = { props . data ?. name || 'Avatar' }
68
+ onError = { ( e ) => {
69
+ if ( e . currentTarget . src !== fallbackImg ) {
70
+ e . currentTarget . src = fallbackImg ;
71
+ }
72
+ } }
73
+ />
74
+ < span style = { { marginLeft : '10px' } } > { props . data ?. name } </ span >
75
+ </ div >
76
+ </ components . Option >
77
+ ) ;
78
+ } ;
79
+
80
+ const IconValue = ( props : any ) => {
81
+ const fallbackImg = 'images/jira-icon.svg' ;
82
+ const avatarUrl = getFaviconUrl ( props . data ) || fallbackImg ;
83
+
84
+ return (
85
+ < components . SingleValue { ...props } >
86
+ < div style = { { display : 'flex' , alignItems : 'center' } } >
87
+ < img
88
+ src = { avatarUrl }
89
+ width = "16"
90
+ height = "16"
91
+ alt = { props . data ?. name || 'Avatar' }
92
+ onError = { ( e ) => {
93
+ if ( e . currentTarget . src !== fallbackImg ) {
94
+ e . currentTarget . src = fallbackImg ;
95
+ }
96
+ } }
97
+ />
98
+ < span style = { { marginLeft : '10px' } } > { props . data ?. name } </ span >
99
+ </ div >
100
+ </ components . SingleValue >
101
+ ) ;
102
+ } ;
64
103
65
104
export default class CreateIssuePage extends AbstractIssueEditorPage < Emit , Accept , { } , ViewState > {
66
105
private advancedFields : FieldUI [ ] = [ ] ;
0 commit comments