الدردشة بملء الشاشة كإعداد افتراضي لإعداد التعاون

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

بدلاً من الوصول إلى عرض مثل هذا:

سأصل مباشرة إلى الدردشة بملء الشاشة:

يبدو أنه لا توجد حاليًا طريقة لفتح الدردشة في وضع ملء الشاشة افتراضيًا. هل يمكن إضافة هذا كخيار؟

يمكن تقديمه كإعداد للموقع، أو معدّل للمظهر، أو محوّل للقيمة. طريقة لمنح مؤلفي المظهر أو مديري المواقع المرونة لدمج الدردشة كعرض تفاعل افتراضي.

5 إعجابات

يمكنك كتابة مُهيئ (initializer) مثل هذا:

export default {
  name: "default-full-page-chat",

  initialize() {
    if (!window.localStorage.getItem("discourse_chat_preferred_mode")) {
      window.localStorage.setItem("discourse_chat_preferred_mode", '\"FULL_PAGE_CHAT\"');
    }
  },
};

أعتقد أن هذا يجب أن يفعل ما تريد.

8 إعجابات

بالتأكيد، يعمل بشكل رائع! شكراً لك :blush:

7 إعجابات

أعلم أنه تم حله بالفعل، ولكن بدلاً من الوصول إلى localstorage مباشرة بهذه الطريقة، إذا كان بإمكانك الوصول إلى خدمات المكون الإضافي من سمة، يمكنك القيام بما يلي:

export default {
  name: "default-full-page-chat",

  initialize(container) {
    const chat = container.lookup("service:chat");
    if (!chat.userCanChat) {
      return;
    }

    const chatStateManager = container.lookup("service:chat-state-manager");
    chatStateManager.prefersFullPage();
  },
};

والذي يستدعي هذا:

سيكون هذا أكثر موثوقية على المدى الطويل، إذا كان يعمل (لم أختبر هذا :sweat_smile: ).

5 إعجابات

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

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

4 إعجابات

لدينا هذه، ولكن isDrawerPreferred دائمًا true إذا لم يتم تعيين أي تفضيل:

أعتقد أنه سيكون من الجيد لو كان لدينا مُحَصِّل hasNoPreferredMode لهذا الموقف الذي يتحقق فقط من المتجر، إليك طلب سحب:

4 إعجابات

حسنًا @manuel، تم دمج طلب السحب هذا الآن، لذا يمكنك استخدام واجهة برمجة تطبيقات المكون الإضافي التي وصفتها في Full-screen chat as default for collaboration setup - #4 by martin و hasNoPreferredMode من مدير حالة الدردشة.

إعجابَين (2)

مرحبًا @nolo، مجرد ملاحظة سريعة:

في وضع الدردشة بملء الشاشة، تحتاج عادةً إلى الخروج من وضع ملء الشاشة (أو تغيير واجهة مستخدم الدردشة بطريقة أخرى) قبل أن ترى خيارًا واضحًا للعودة إلى قائمة الدردشات أو التبديل إلى محادثة مع عضو آخر.

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

شكراً @martin، هذا يعمل بشكل رائع!

اختبار تجربة المستخدم في حالتي الحالية، يبدو الأمر أكثر بديهية في الواقع أن تكون الدردشة بملء الشاشة طوال الوقت. أريد أن تكون الدردشة هي وضع الاتصال الأساسي، والسماح بتصغيرها قد يؤدي إلى أن ينتهي المستخدمون على شاشة لم يختاروها عن قصد من قبل، مما قد يكون مربكًا.

أفكر في استخدام CSS فقط لإخفاء خيار التصغير، ما لم يكن هناك طريقة مباشرة أكثر لتعطيله؟


@jahan_gagan لست متأكدًا تمامًا مما كنت تشير إليه، هل هذا على مواقع تستخدم قائمة هامبرغر للتنقل؟ في إعداداتي، تتوفر جميع خيارات التنقل عبر الشريط الجانبي.

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

3 إعجابات

نعم، إخفاء زر الانهيار سيعمل، لكنني تحققت للتو وهناك طريقة أخرى قد ينتقل بها المستخدمون مرة أخرى إلى وضع الدرج. إذا ضغطت على مفتاح - عندما تكون في المنتدى، نفتح درج الدردشة:

وفي هذه الوظيفة نستدعي chatStateManager.prefersDrawer()، والتي تحدد تفضيل التخزين المحلي. أجرينا المزيد من المناقشات مؤخرًا داخليًا حول السماح بوضع الدردشة فقط في Discourse، بما في ذلك تجربة في هذا الاتجاه، بالإضافة إلى أفكار حول وضع الدرج.

لست متأكدًا متى سيأتي الوقت للتركيز على هذا الأمر بشكل أكبر، قد يكون لدى @mcwumbly بعض المدخلات هنا أو @lindsey.

إعجابَين (2)

شكرًا، هذا مفيد جدًا لمعرفته! لست متأكدًا بعد مما سأفعله الآن، ولكن نعم، سيكون رائعًا إذا كان هناك خيار مستقبلي لمواءمة هذا بالكامل مع إعدادات Discourse الشائعة.

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