فلاتر تبقى بعد تحديث الصفحة
أطلقنا العروض المحفوظة مؤخراً، والجزء الذي يستحق الكتابة ليس الميزة نفسها، بل ما اضطررنا لإصلاحه قبلها.
الفلاتر لم تكن حقيقية
كان في بريدنا الوارد ستة فلاتر — الحالة والقناة والمصدر والتصنيف والمُسنَد إليه والمرحلة — وكلّها تعيش في حالة React. كانت تعمل. تستطيع دمجها، وتستجيب القائمة، ويبدو كل شيء سليماً.
ثم تحدّث الصفحة فتختفي. لا تستطيع حفظ قائمة مفلترة في المفضّلة. ولا إرسالها إلى زميل. ولا فتح العرض نفسه صباح الغد دون إعادة بنائه.
وهذه ليست فجوة صغيرة في الصقل. الفلتر الذي تعيد بناءه كل صباح فلتر تتوقف عن استخدامه في النهاية، والفلتر الذي لا تستطيع إرساله لأحد فلتر لا يمكن أن يكون موضوع حديث. "انظر إلى العملاء الساخنين غير المُسندين في المارينا" جملة يريد مدير المبيعات قولها ومعها رابط.
الرابط أولاً، ثم العروض المحفوظة
لذا بدأ العمل على العروض المحفوظة من مكان غير لامع: نقل كل فلتر من حالة المكوّن إلى سلسلة الاستعلام في الرابط.
والقاعدة التصميمية التي استقرّينا عليها أن الفلتر عند قيمته الافتراضية يُحذف من
الرابط بدل كتابته فارغاً. فالرابط الذي يقول ?status=all&channel=all&grade=all
ضجيج؛ أما ?grade=hot فشيء تقرؤه بنظرة وتعدّله بيدك.
وحين صارت الفلاتر في الرابط، صار العرض المحفوظ شبه بديهي: اسم وسلسلة استعلام. وتطبيقه يستبدل كل معاملات الفلترة ويترك ما عداها، فلا يُغلق العرض المطبَّق محادثةً مفتوحة لديك.
خاص افتراضياً، ومنشور عن قصد
القرار الثاني كان عن من يملك حقّ النشر.
العروض خاصة افتراضياً. ويستطيع المدير نشر عرض للمكتب كلّه، ولا يستطيع تحرير المنشور إلا مدير. وهذا التفاوت مقصود: العرض الذي يعتمد عليه المكتب كل صباح لا ينبغي أن يتغيّر بهدوء لأن شخصاً عدّل فلتراً وأعاد الحفظ.
وتبيّن أن التعبير عن ذلك يحتاج منطقاً في الخدمة لا مجرّد تعليق على الدور. "يستطيع الأعضاء الكتابة، ولا يستطيع النشر إلا المديرون" جملة لا يقولها تعليق الحدّ الأدنى للدور. فبقي المتحكّم عند مستوى العضو، وعاش التمييز في الخدمة، مع اختبار يثبت الحدّين — عبر المستأجرين، وداخل المستأجر الواحد بين الخاص والمشترك.
الدرس العام
إن كانت قطعة حالة في منتجك تصف ما ينظر إليه المستخدم، فمكانها الرابط. ترتيب الفرز، والفلاتر، والتبويبات، والقسم المفتوح من تقرير، وخطوة التدفّق الإرشادي.
والاختبار بسيط: هل يستطيع أحد إرسال هذا لزميل بفائدة؟ إن كان الجواب نعم ولا يستطيع، فتلك هي العلّة — وهي عادةً أكبر من الميزة التي كنت على وشك بنائها فوقها.