התראות בדפדפן כשהפורום פתוח
-
היי @aaron ו @Itamar-Yehezkel פשוט תריצו את הקוד בדף של ההגדרות של התוסף - כלומר זה: https://mitmachim.top/onesignal/settings ותראו בעצמכם מה קורה
השורה הראשונה מוסיפה מאזין למצב ה"visibiliy" של הטאב. בכל שינוי של המצב של ה"visibility" - כלומר בפועל, בכל פעם שהיוזר עוזב את הטאב הנוכחי - זה שולח לקונסול false. וכשהוא חוזר זה שולח לקונסול true.
החלטתי לנצל את זה כדי - שכל פעם שהיוזר חוזר לטאב - זה יעשה uncheck באלמנט enable ("אפשר קבלת התראות") שהוא בנוי כ"checkbox" כך שאם שולחים לו את הפקודה .checked = false; זה עושה כמו שבחרת לא לסמן וי בתיבה (אני מקווה שאני לא מסביר דברים פשוטים)
לאחר מכן הפונקציה הזאת buttonclick (יכול להיות שסתם סרבלתי, בכל אופן זה עובד) לוחצת על הכפתור של השמירה ("שמור הגדרות") הID שלו זה save והסוג שלו הווא פשוט button.
וכן להיפך ברגע שחוזר לקונסול false מהפקודה דלעיל - היא מבצעת את השלבים האלה רק הפוך - במקום לעשות uncheck בתיבת הבחירה הזאת - היא מבצעת check ואז שוב - לחיצה על שמור הגדרות, ואז בעצם חוזר התוסף לשלוח התראות ליוזר.
מצרף צילום קטן להמחיש למי של הבין - על מה בדיוק אני מדבר (סליחה, עשיתי את זה בצייר )
@aaron יהיה עוד יותר קל אם הדף הזה ישלח תגובות JSON ועוד יותר טוב (כמובן..) אם יוכלו לשלוח אליו פקודות JSON (POST) ישירות דרך fetch - אם יש כזה דבר זה עניין של שתי שניות ממש - ולא יצטרכו את כל הסרבול שכתבתי למעלה. -
פוסט זה נמחק!
-
@aaron אוה! חיפשתי את השורה הזאת.. כמובן הרבה יותר פשוט..
@aaron אמר בהתראות בדפדפן כשהפורום פתוח:
מי שרוצה לשנות ולבדוק שיעדכן בתוצאות ואוסיף את זה בגיטהאב
אין לי איך לבדוק את זה בעצמי כי אני לא יכול לשנות את הJS של התוסף כאן.
@שמואל כמובן יכול..הערה קטנה על זה: לכאורה כן צריך התראות שולחן עבודה, גם כשמחוברים, רק כשהיוזר כבר על הטאב של הפורום זה לא נצרך ומעצבן. אם יש דרך לעשות שם בדיקה לפי יוזר כמו שעשית, אבל לבדוק אם הוא צופה בטאב - לא יודע...
אגב הג'ווהסקריפט שכתבתי למעלה לא מדויק, צ"ל כך:
document.addEventListener("visibilitychange", () => { console.log( document.hasFocus() ) if (true) { document.getElementById("enabled").checked = false; document.getElementById("save").click(); console.log('un-checked&saved'); } else { document.getElementById("enabled").checked = true; document.getElementById("save").click(); console.log('checked&saved'); } })
אם תריץ את זה בדף של הגדרות onesignal כאן בפורום תראה בעצמך את הפעולה שזה עושה אוטומטי במעבר לטאב אחר/חזרה לטאב.
-
@שמואל אמר בהתראות בדפדפן כשהפורום פתוח:
@aaron אמר בהתראות בדפדפן כשהפורום פתוח:
צריך להוסיף כאן בדיקה האם המשתמש אינו מחובר.
הבעיה הפשוטה בזה זה בזה שnodeBB מחשיב את המשתמש כמחובר גם 30 דקות אחרי שהוא לא.
צודק. אז חייבים לגשת ישירות לdb. (גם לא מידי מורכב)