خطأ في صفحة الدعوات - "لا يمكن قراءة خصائص غير محددة (قراءة 'slice')"

على أحدث إصدار مستقر، أرى خطأ JavaScript عند النقر فوق الزر “إنشاء رابط دعوة” في /u/user_name/invited/pending.
تُظهر وحدة التحكم:

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘slice’)
at h.shortKey (chunk.f105ceace2ad381ddb2f.d41d8cd9.js:241:61588)

إذا تم عرض كائن الدعوة قبل أن يتم ملء invite_key من الخادم، فإن invite_key يكون غير معرف ويتعطل عند استخدام .slice() على لا شيء.
في invite.js، تحاول الدالة shortKey اختصار مفتاح دعوة:

shortKey(key) {
return key.slice(0, 4) + “…”;
}

لا يمكنني تكراره على meta، لذلك ربما أراه لأن خادمي أو شبكتي ليست سريعة. ولكن التحقق مما إذا كان المفتاح موجودًا قبل استخدامه يبدو أنه يحل المشكلة:

return key ? key.slice(0, 4) + “…” : “”;;

لإصلاح بسيط، هل من الأفضل النشر هنا أم فتح طلب سحب (PR)؟

مفتاح الدعوة ليس فارغًا على الرغم من ذلك:

وهذا يتكرر عبر model.invites:

لقد ألقيت نظرة على الكود ولست متأكدًا من أين يمكن أن يأتي الكود المعبأ جزئيًا، حتى عندما أضفت تأخيرًا لمدة 400 مللي ثانية على الشبكة هنا، لا يمكنني إعادة إنتاج المشكلة.

أعتقد أننا بحاجة إلى نوع من إعادة الإنتاج هنا قبل التصحيح، وهذا التصحيح يسمح للناس بنسخ رابط دعوة معطل.

شكراً لك على النظر في الأمر وتوضيحه.

وضع التأخير في before_create يجب أن يكشف عنه.

لقد قمت بتحديثه إلى:

{{else}}
  {{icon "link"}}
+ {{#if invite.invite_key}}
    {{i18n
      "user.invited.invited_via_link"
      key=invite.shortKey
      count=invite.redemption_count
      max=invite.max_redemptions_allowed
    }}
+ {{else}}
+   <em>Generating link...</em>
+ {{/if}}
{{/if}}

أعتقد أن هذا سيكون جيدًا كطلب دمج (PR) شريطة أن يتم توطينه.

لا يزال هناك بعض الارتباك بشأن المكان الذي نقوم فيه بملء الدعوة (Invite) بكائن نصف ممتلئ، ولكنه أفضل من الفشل ويبدو صحيحًا بالنسبة لي.

هل ترى هذا الخطأ هنا في Meta؟ أتساءل عما إذا كان قد تم إصلاحه في latest. في هذه الحالة، نحتاج فقط إلى تحديد الالتزام الذي أصلحه، وإعادته إلى الإصدار المستقر.

تتم إضافة الدعوة إلى القائمة فورًا بعد استدعاء save() ولكن قبل أن يتم ملء invite_key من الخادم. لا تزال موجودة في latest، لذلك فتحت PR #35679

إعجاب واحد (1)