@@ -3,32 +3,44 @@ import Component, { Input } from "@ember/component";
33import { fn } from " @ember/helper" ;
44import { on } from " @ember/modifier" ;
55import { action } from " @ember/object" ;
6+ import { getOwner } from " @ember/owner" ;
7+ import didInsert from " @ember/render-modifiers/modifiers/did-insert" ;
68import { inject as service } from " @ember/service" ;
79import DButton from " discourse/components/d-button" ;
810import { ajax } from " discourse/lib/ajax" ;
9- import UppyUploadMixin from " discourse/mixins /uppy-upload" ;
11+ import UppyUpload from " discourse/lib/uppy /uppy-upload" ;
1012import icon from " discourse-common/helpers/d-icon" ;
1113import discourseDebounce from " discourse-common/lib/debounce" ;
1214import I18n from " discourse-i18n" ;
1315import RagUploadProgress from " ./rag-upload-progress" ;
1416
15- export default class RagUploader extends Component . extend (UppyUploadMixin) {
17+ export default class RagUploader extends Component {
1618 @service appEvents;
17-
1819 @tracked term = null ;
1920 @tracked filteredUploads = null ;
2021 @tracked ragIndexingStatuses = null ;
2122 @tracked ragUploads = null ;
22- id = " discourse-ai-rag-uploader" ;
23- maxFiles = 20 ;
24- uploadUrl = " /admin/plugins/discourse-ai/rag-document-fragments/files/upload" ;
25- preventDirectS3Uploads = true ;
23+
24+ uppyUpload = new UppyUpload (getOwner (this ), {
25+ id: " discourse-ai-rag-uploader" ,
26+ maxFiles: 20 ,
27+ uploadUrl:
28+ " /admin/plugins/discourse-ai/rag-document-fragments/files/upload" ,
29+ preventDirectS3Uploads: true ,
30+ uploadDone : (uploadedFile ) => {
31+ const newUpload = uploadedFile .upload ;
32+ newUpload .status = " uploaded" ;
33+ newUpload .statusText = I18n .t (" discourse_ai.rag.uploads.uploaded" );
34+ this .ragUploads .pushObject (newUpload);
35+ this .debouncedSearch ();
36+ },
37+ });
2638
2739 didReceiveAttrs () {
2840 super .didReceiveAttrs (... arguments );
2941
30- if (this .inProgressUploads ? .length > 0 ) {
31- this ._uppyInstance ? . cancelAll ();
42+ if (this .uppyUpload . inProgressUploads ? .length > 0 ) {
43+ this .uppyUpload . cancelAllUploads ();
3244 }
3345
3446 this .ragUploads = this .target ? .rag_uploads || [];
@@ -45,7 +57,7 @@ export default class RagUploader extends Component.extend(UppyUploadMixin) {
4557 }
4658
4759 this .appEvents .on (
48- ` upload-mixin:${ this .id } :all-uploads-complete` ,
60+ ` upload-mixin:${ this .uppyUpload . config . id } :all-uploads-complete` ,
4961 this ,
5062 " _updateTargetWithUploads"
5163 );
@@ -54,7 +66,7 @@ export default class RagUploader extends Component.extend(UppyUploadMixin) {
5466 willDestroy () {
5567 super .willDestroy (... arguments );
5668 this .appEvents .off (
57- ` upload-mixin:${ this .id } :all-uploads-complete` ,
69+ ` upload-mixin:${ this .uppyUpload . config } :all-uploads-complete` ,
5870 this ,
5971 " _updateTargetWithUploads"
6072 );
@@ -64,22 +76,14 @@ export default class RagUploader extends Component.extend(UppyUploadMixin) {
6476 this .updateUploads (this .ragUploads );
6577 }
6678
67- uploadDone (uploadedFile ) {
68- const newUpload = uploadedFile .upload ;
69- newUpload .status = " uploaded" ;
70- newUpload .statusText = I18n .t (" discourse_ai.rag.uploads.uploaded" );
71- this .ragUploads .pushObject (newUpload);
72- this .debouncedSearch ();
73- }
74-
7579 @action
7680 submitFiles () {
77- this .fileInputEl . click ();
81+ this .uppyUpload . openPicker ();
7882 }
7983
8084 @action
8185 cancelUploading (upload ) {
82- this .appEvents . trigger ( ` upload-mixin: ${ this . id } :cancel-upload ` , {
86+ this .uppyUpload . cancelSingleUpload ( {
8387 fileId: upload .id ,
8488 });
8589 }
@@ -152,7 +156,7 @@ export default class RagUploader extends Component.extend(UppyUploadMixin) {
152156 </td >
153157 </tr >
154158 {{/each }}
155- {{#each this . inProgressUploads as | upload | }}
159+ {{#each this . uppyUpload. inProgressUploads as | upload | }}
156160 <tr >
157161 <td ><span class =" rag-uploader__rag-file-icon" >{{icon
158162 " file"
@@ -177,6 +181,7 @@ export default class RagUploader extends Component.extend(UppyUploadMixin) {
177181 </table >
178182
179183 <input
184+ {{didInsert this . uppyUpload.setup}}
180185 class =" hidden-upload-field"
181186 disabled ={{this .uploading }}
182187 type =" file"
0 commit comments