התראות בדפדפן כשהפורום פתוח
-
@chv אמר בהתראות בדפדפן כשהפורום פתוח:
@שמואל למה לא? זה דווקא רעיון מעולה!!
אם יהיה בכל דף בפורום, את האלמנטים הבאים מהדף https://mitmachim.top/onesignal/settings - זה יהיה ממש קלי קלות לעשות את זה (וזה עוד מאולתר, אפשר לשלב את זה בתוסף בעצמו וזה עוד יותר קל להשערתי)
זה האלמנטים הנצרכים - אני כותב אותם איך שהם כתובים בID (לא חייב להיות שיראו אותם, רק צריך אותם קיימים בדף ומשפיעים על https://mitmachim.top/assets/node_modules/nodebb-plugin-onesignal/lib/client-settings.js)- enabled
- save
אם יש לי את שניהם בכל דף בפורום, אפשר פשוט להכניס ג'אווהסקריפט כזה בערך:
document.addEventListener("visibilitychange", () => { if (true) { document.getElementById("enabled").checked = false; function buttonclick(){ var pagebutton= document.getElementById("save"); pagebutton.click();} buttonclick())} else { document.getElementById("enabled").checked = true; function buttonclick(){ var pagebutton= document.getElementById("save"); pagebutton.click();} buttonclick())} })
אולי הפכתי את הפקודות, בכל אאופן זה הכיוון.
אם הבנתי נכון יוצר הפלאגין נמצא כאן בשם @aaron (סליחה על ההטרדה אם זה טעות) אם זה ככה - אז דבר ראשון שאפו זה פלאגין שבנוי ממש מדהים. וכזה נקי.
ודבר שני - תעיין במה שכתבתי ותכתוב אם זה ייתכן לשלב זאת בתוסף.
אפשר להשתמש בפונצקיות אחרות במקום visibilitychange. יש אלף פונקציות חופפות, כל אחת והיתרון שלה. למעוניינים - קצת דוקו על זה כאן, וכאן כמה דוגמאות ברורות.
@שמואל לעיונך המעמיק.איפה ה-jquery איפה...חח
-
היי @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. (גם לא מידי מורכב)