خطأ صغير في الكونسول بعد تحميل ملف CSV ناجح للعلامات

إذا قمت بتحميل ملف CSV مع علامات، ستعرض وحدة التحكم خطأ بعد تحميل ناجح.


إليك بعض التفاصيل.

المشكلة الأساسية هي أن النافذة المنبثقة تُغلق بسرعة كبيرة مع المنطق الحالي.

يحدث الخطأ في uppy-upload.js.
فشلت تعيين الخصائص لأن العنصر (uppy-upload) تم تدميره بالفعل.

كيف هذا ممكن؟ this._uppyInstance?.cancelAll();

للإشارة، يتم استدعاء _reset من _allUploadsComplete.

عند التحميل الناجح، هذا هو ترتيب الوظائف:
uploadDone_allUploadsComplete → [ _reset]

عند استدعاء uploadDone، يتم إغلاق النافذة المنبثقة على الفور.
هذا يعني أن عنصر uppy-upload سيتم تدميره في نهاية الإطار.
https://github.com/discourse/discourse/blob/main/app/assets/javascripts/admin/addon/components/tags-uploader.js#L22-L26

بالعودة إلى this._uppyInstance?.cancelAll();. سيؤدي هذا إلى تشغيل الحدث أدناه.
هذا هو سبب فشله. بسبب run(), سيتم تعيين الخصائص بعد تدمير العنصر.

هذا تراجع طفيف. تم تقديمه هنا:

uppy-upload.js

tags-upload.js

حلول عمل محتملة:

  • إغلاق النافذة المنبثقة بعد قليل
  uploadDone() {
    this.refresh();
    this.dialog
      .alert(I18n.t("tagging.upload_successful"))
      .finally(() => this.closeModal());
  }
  • نقل الفحص خارج حلقة run().
    this._uppyInstance.on("file-removed", (file, reason) => {
      // نحن نتعامل مع حدث إلغاء الكل على وجه التحديد، لذلك لا حاجة
      // للقيام بأي شيء هنا. يتم تشغيل هذا الحدث أيضًا عندما يتم التعامل مع بعض الملفات
      // بواسطة معالج تحميل
      if (reason === "cancel-all") {
        return;
      }

      run(() => {

لست متأكدًا مما إذا كان هناك حل أفضل. لذلك، أنا أنشر هنا.
هذا الكثير من النص لمشكلة بسيطة غير حظرية، لكنها لم تكن واضحة في البداية. :ابتسامة:

3 إعجابات