@@ -25,48 +25,10 @@ import {DomSanitizer} from "@angular/platform-browser";
25
25
template : `
26
26
<div class="kc-extension-popup">
27
27
<app-card [ks]="ks"
28
- (onImport)="import($event)"
29
28
[loading]="sending"
30
29
[disabled]="kcUnavailable"
31
30
></app-card>
32
31
</div>
33
-
34
- <!-- <p-card>-->
35
- <!-- <ng-template pTemplate="header">-->
36
- <!-- <div class="flex flex-row align-items-center justify-content-center">-->
37
- <!-- <input [(ngModel)]="packet.metadata.title"-->
38
- <!-- pInputText-->
39
- <!-- class="p-fluid w-full">-->
40
- <!-- </div>-->
41
- <!-- </ng-template>-->
42
-
43
-
44
- <!-- <div class="p-grid kc-extension-popup">-->
45
- <!-- <div class="col-12" *ngIf="packet?.selectedText">-->
46
- <!-- <p-checkbox [(ngModel)]="includeHighlightedText" class="mb-4" [binary]="true" label="Include Highlighted Text"></p-checkbox>-->
47
- <!-- <textarea class="w-full" id="selectedText" [disabled]="!includeHighlightedText" rows="5" [(ngModel)]="packet.selectedText"></textarea>-->
48
- <!-- </div>-->
49
-
50
- <!-- TODO: Eventually provide the ability to select a project directly from the extension-->
51
-
52
- <!-- <div *ngIf="kcUnavailable" class="col-12">-->
53
- <!-- <div class="flex justify-content-center align-items-center text-red-500">-->
54
- <!-- Knowledge Canvas Unavailable<br>-->
55
- <!-- Make sure "Browser Extensions" is enabled in the Import Settings menu-->
56
- <!-- </div>-->
57
- <!-- </div>-->
58
-
59
- <!-- <div class="col-12 flex justify-content-center align-items-center">-->
60
- <!-- <button pButton-->
61
- <!-- icon="pi pi-plus"-->
62
- <!-- class="w-full p-fluid shadow-5"-->
63
- <!-- [disabled]="kcUnavailable"-->
64
- <!-- [loading]="sending"-->
65
- <!-- pTooltip="Import"-->
66
- <!-- tooltipPosition="top"-->
67
- <!-- (click)="import($event)"></button>-->
68
- <!-- </div>-->
69
-
70
32
` ,
71
33
styles : [
72
34
`
@@ -117,7 +79,7 @@ export class AppComponent {
117
79
console . log ( 'Got Chrome Tab: ' , tab ) ;
118
80
119
81
this . ks = {
120
- thumbnail : '' ,
82
+ thumbnail : undefined ,
121
83
title : tab . title ,
122
84
description : '' ,
123
85
accessLink : tab . url ,
@@ -151,19 +113,39 @@ export class AppComponent {
151
113
for ( let m of tab . metadata . meta ) {
152
114
if ( m . key == 'og:image' ) {
153
115
this . ks . thumbnail = m . value ?? m . property ?? '' ;
154
- } else if ( m . key == 'og:description' ) {
116
+ fetch ( this . ks . thumbnail ) . then ( ( response ) => {
117
+ response . blob ( ) . then ( ( iconBlob ) => {
118
+ let objectURL = URL . createObjectURL ( iconBlob ) ;
119
+ let thumbnail = this . sanitizer . bypassSecurityTrustUrl ( objectURL ) ;
120
+ console . log ( `Got ks thumbnail: ${ thumbnail } from iconURL: ${ tab . favIconUrl } ` ) ;
121
+ this . ks . thumbnail = thumbnail ;
122
+ } )
123
+ } ) . catch ( ( reason ) => {
124
+ console . log ( 'Failed to fetch thumbnail because: ' , reason ) ;
125
+ } )
126
+ } else if ( m . key == 'og:description' || m . key == 'description' ) {
155
127
this . ks . description = m . value ?? m . property ?? '' ;
156
- }
157
-
158
- if ( m . key == 'keywords' ) {
128
+ } else if ( m . key == 'keywords' ) {
159
129
this . ks . topics = m . value ?. split ( ',' ) ;
160
130
}
161
131
}
162
132
}
163
133
} )
134
+
135
+ setTimeout ( ( ) => {
136
+ /*
137
+ * NOTE: Cannot use (click) listener in HTML elements due to an issue with Chrome
138
+ * See: https://stackoverflow.com/questions/70353636/angular-gives-refused-to-execute-inline-event-handler-error
139
+ * See: https://stackoverflow.com/questions/36324333/refused-to-execute-inline-event-handler-because-it-violates-csp-sandbox
140
+ */
141
+ // @ts -ignore
142
+ document . getElementById ( 'importBtn' ) . addEventListener ( 'click' , ( ) => {
143
+ this . import ( )
144
+ } ) ;
145
+ } , 1000 ) ;
164
146
}
165
147
166
- async import ( $event : any ) {
148
+ import ( ) {
167
149
this . sending = true ;
168
150
169
151
// Remove selected text if the user does not want it included
0 commit comments