first
This commit is contained in:
commit
fa9d154db9
260 files changed
+17643
No files matched your search
@@ -0,0 +1,42 @@
|
||||
document.querySelectorAll('form[data-chat-coach]').forEach(form=>{
|
||||
const input=form.querySelector('textarea[name="body"]');
|
||||
if(!input)return;
|
||||
const rapidWindowMs=2*60*1000;
|
||||
const autoDismissMs=3000;
|
||||
let dismissed=false;
|
||||
let dismissTimer=null;
|
||||
|
||||
const readLastTwoMessageTimes=()=>Array.from(document.querySelectorAll('[data-chat-coach-own][data-chat-coach-at]'))
|
||||
.map(node=>Number(node.dataset.chatCoachAt)*1000)
|
||||
.filter(Number.isFinite)
|
||||
.sort((a,b)=>a-b)
|
||||
.slice(-2);
|
||||
|
||||
const hint=document.createElement('aside');
|
||||
hint.className='chat-coach chat-coach-floating';hint.hidden=true;hint.setAttribute('role','status');hint.setAttribute('aria-live','polite');
|
||||
hint.innerHTML='<span class="chat-coach-icon" aria-hidden="true">✦</span><div><b>برای دریافت پاسخ دقیقتر</b><p>لطفاً همه توضیحات و سؤالهای خود را در یک پیام کامل بنویسید و سپس ارسال کنید.</p></div><button type="button" data-chat-coach-dismiss aria-label="بستن راهنما" title="بستن">×</button>';
|
||||
document.body.append(hint);
|
||||
|
||||
const dismiss=({focusInput=false}={})=>{
|
||||
dismissed=true;
|
||||
hint.hidden=true;
|
||||
if(dismissTimer)clearTimeout(dismissTimer);
|
||||
dismissTimer=null;
|
||||
if(focusInput)input.focus();
|
||||
};
|
||||
const showTemporarily=()=>{
|
||||
if(!hint.hidden)return;
|
||||
hint.hidden=false;
|
||||
dismissTimer=setTimeout(()=>dismiss(),autoDismissMs);
|
||||
};
|
||||
const detect=()=>{
|
||||
const [previous,last]=readLastTwoMessageTimes();
|
||||
const rapidPair=Number.isFinite(previous)&&Number.isFinite(last)&&last>=previous&&last-previous<=rapidWindowMs;
|
||||
if(!dismissed&&rapidPair)showTemporarily();
|
||||
else if(!rapidPair)hint.hidden=true;
|
||||
};
|
||||
hint.querySelector('[data-chat-coach-dismiss]').addEventListener('click',()=>dismiss({focusInput:true}));
|
||||
const conversation=document.querySelector('[data-conversation]');
|
||||
if(conversation)new MutationObserver(detect).observe(conversation,{childList:true,subtree:true});
|
||||
detect();
|
||||
});
|
||||
Reference in new issue
Block a user