[DigitalPoint] PWA

[DigitalPoint] PWA 1.2.3

No permission to download
Is there any technical way to add a back button like here on XF when it's in PWA mode to files that are opened via external links (like a new tab?)

For example, when users open a PDF in a new tab, they are confused about how to go back since the entire layout is hidden.

Users don't understand that they can swipe from left to right at the edge of the display to go back to a page and continue browsing.
 
Is there any technical way to add a back button like here on XF when it's in PWA mode to files that are opened via external links (like a new tab?)

For example, when users open a PDF in a new tab, they are confused about how to go back since the entire layout is hidden.

Users don't understand that they can swipe from left to right at the edge of the display to go back to a page and continue browsing.
Not with this addon, no.
 
Not with this addon, no.
Thanks

Does anybody have false-positive notifications? So far 5 users on my board complained that they received notifications randomly without nobody replying in that notified thread. I'm wondering if it's some sort of another add-on I have that triggers this or something else with PWA or maybe a CSRF token issue. I don't even know how to reproduce it since it's so random...
 
Thanks

Does anybody have false-positive notifications? So far 5 users on my board complained that they received notifications randomly without nobody replying in that notified thread. I'm wondering if it's some sort of another add-on I have that triggers this or something else with PWA or maybe a CSRF token issue. I don't even know how to reproduce it since it's so random...
Could be someone replied to a thread and then deleted the reply. For alerts you see on the site, XenForo handles that case since it can delete them, but you can’t unsend a push notification. I see that happen on this site once in awhile.
 
Could be someone replied to a thread and then deleted the reply. For alerts you see on the site, XenForo handles that case since it can delete them, but you can’t unsend a push notification. I see that happen on this site once in awhile.
I'm unsure if that's the case since these complaints are from users with access to a private node, in which there is an interaction with only one user (a moderator).

Comments aren't deleted that often if any at all. It's also easy to track since moderators, and users can't hard delete comments.

I tried to enable debugging for push notifications, and I see a few of these errors/log data


Code:
ErrorException: Debug: Push notification 410 error: Client error: `POST https://fcm.googleapis.com/fcm/send/dA1-1pCaFxw:APA91bH-E56DxUtLOhkl7PYHG2goArc_ZvSU6oh6r0rrn2DbdofTVZg_y_tlMhsBQDxoicrbB11JcWYfe8xjyZ70bSFQ4fqzMVFw2JpmNikv1vyGiUg133yVkjWSr7OueVK8-BBB4p4` resulted in a `410 Gone` response: push subscription has unsubscribed or expired. src/XF/Error.php:77
Generated by: Username 6/1/24 at 13:22

Stack trace
#0 src/XF.php(219): XF\Error->logError('Debug: Push not...', false)
#1 src/addons/DigitalPoint/PWA/XF/Service/PushNotification.php(68): XF::logError('Debug: Push not...')
#2 src/XF/Service/PushNotification.php(179): DigitalPoint\PWA\XF\Service\PushNotification->handleResults(Object(Generator))
#3 src/XF/Service/PusherTrait.php(194): XF\Service\PushNotification->sendNotifications()
#4 src/XF/Repository/UserAlert.php(165): XF\Service\Alert\Pusher->push()
#5 src/XF/Repository/UserAlert.php(116): XF\Repository\UserAlert->insertAlert(37034, 33191, [invalid], 'post', 1763024, 'quote', Array, Array)
#6 src/XF/Notifier/AbstractNotifier.php(63): XF\Repository\UserAlert->alert(Object(SV\ElasticSearchEssentials\XF\Entity\User), 33191, [invalid], 'post', 1763024, 'quote', Array, Array)
#7 src/XF/Notifier/Post/Quote.php(36): XF\Notifier\AbstractNotifier->basicAlert(Object(SV\ElasticSearchEssentials\XF\Entity\User), 33191, [invalid], 'post', 1763024, 'quote')
#8 src/XF/Service/AbstractNotifier.php(88): XF\Notifier\Post\Quote->sendAlert(Object(SV\ElasticSearchEssentials\XF\Entity\User))
#9 src/addons/Forum/RMGraphs/XF/Service/Post/Notifier.php(60): XF\Service\AbstractNotifier->notifyType(Object(XF\Notifier\Post\Quote), Array, 1.70454E+9)
#10 src/XF/Service/AbstractNotifier.php(46): Forum\RMGraphs\XF\Service\Post\Notifier->notifyType(Object(XF\Notifier\Post\Quote), Array, 1.70454E+9)
#11 src/addons/Forum/RMGraphs/XF/Service/Post/Notifier.php(44): XF\Service\AbstractNotifier->notify(3)
#12 src/XF/Service/AbstractNotifier.php(58): Forum\RMGraphs\XF\Service\Post\Notifier->notify(3)
#13 src/XF/Service/Thread/Replier.php(252): XF\Service\AbstractNotifier->notifyAndEnqueue(3)
#14 src/addons/Forum/RMGraphs/XF/Service/Thread/Replier.php(32): XF\Service\Thread\Replier->sendNotifications()
#15 src/XF/Pub/Controller/Thread.php(459): Forum\RMGraphs\XF\Service\Thread\Replier->sendNotifications()
#16 src/XF/Pub/Controller/Thread.php(618): XF\Pub\Controller\Thread->finalizeThreadReply(Object(SV\SignupAbuseBlocking\XF\Service\Thread\Replier))
#17 src/addons/ThemeHouse/AutoMergeDoublePost/XF/Pub/Controller/Thread.php(42): XF\Pub\Controller\Thread->actionAddReply(Object(XF\Mvc\ParameterBag))
#18 src/XF/Mvc/Dispatcher.php(352): ThemeHouse\AutoMergeDoublePost\XF\Pub\Controller\Thread->actionAddReply(Object(XF\Mvc\ParameterBag))
#19 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('XF:Thread', 'AddReply', Object(XF\Mvc\RouteMatch), Object(OzzModz\ThreadNotesBumpThread\XF\Pub\Controller\Thread), NULL)
#20 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(OzzModz\ThreadNotesBumpThread\XF\Pub\Controller\Thread), NULL)
#21 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#22 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#23 src/XF.php(524): XF\App->run()
#24 index.php(20): XF::runApp('XF\\Pub\\App')
#25 {main}

Request state
array(4) {
  ["url"] => string(25) "/threads/131617/add-reply"
  ["referrer"] => string(33) "https://domain.com/threads/131617/"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(10) {
    ["_xfToken"] => string(8) "********"
    ["message_html"] => string(675) "<blockquote data-quote="Mango562" data-source="post: 1763015" data-attributes="member: 37034"><p>somemessage</p><p><br></p><p> .</p></blockquote><p>some message   🤓</p>"
    ["attachment_hash"] => string(32) "a12ddbdf2779a3c99d689602563b058b"
    ["attachment_hash_combined"] => string(88) "{"type":"post","context":{"thread_id":131617},"hash":"a12ddbdf2779a3c99d689602563b058b"}"
    ["last_date"] => string(10) "1704492094"
    ["last_known_date"] => string(10) "1704492094"
    ["load_extra"] => string(1) "1"
    ["_xfRequestUri"] => string(16) "/threads/131617/"
    ["_xfWithData"] => string(1) "1"
    ["_xfResponseType"] => string(4) "json"
  }
}

Code:
ErrorException: Debug: Push notification 410 error: Client error: `POST https://fcm.googleapis.com/fcm/send/dA1-1pCaFxw:APA91bH-E56DxUtLOhkl7PYHG2goArc_ZvSU6oh6r0-rrn2DbdofTVZg_y_tlMhsBQDxoicrbB11JcWYfe8xjyZ70bSFQ4fqzMVFw2JpmNikv1vyGiUg133yVkjWSr7OueVK8-BBB4p4` resulted in a `410 Gone` response: push subscription has unsubscribed or expired. src/XF/Error.php:77
Generated by: Username 6/1/24 at 13:27

Stack trace
#0 src/XF.php(219): XF\Error->logError('Debug: Push not...', false)
#1 src/addons/DigitalPoint/PWA/XF/Service/PushNotification.php(68): XF::logError('Debug: Push not...')
#2 src/XF/Service/PushNotification.php(179): DigitalPoint\PWA\XF\Service\PushNotification->handleResults(Object(Generator))
#3 src/XF/Service/PusherTrait.php(194): XF\Service\PushNotification->sendNotifications()
#4 src/XF/Repository/UserAlert.php(165): XF\Service\Alert\Pusher->push()
#5 src/XF/Repository/UserAlert.php(103): XF\Repository\UserAlert->insertAlert(37034, 37015, 'username', 'post', 1763002, 'reaction', Array, Array)
#6 src/XF/Reaction/AbstractHandler.php(192): XF\Repository\UserAlert->alertFromUser(Object(SV\ElasticSearchEssentials\XF\Entity\User), Object(SV\ElasticSearchEssentials\XF\Entity\User), 'post', 1763002, 'reaction', Array)
#7 src/XF/Repository/Reaction.php(203): XF\Reaction\AbstractHandler->sendReactionAlert(Object(SV\ElasticSearchEssentials\XF\Entity\User), Object(SV\ElasticSearchEssentials\XF\Entity\User), 1763002, Object(SV\ElasticSearchEssentials\XF\Entity\Post), 1)
#8 src/XF/Repository/Reaction.php(144): XF\Repository\Reaction->insertReaction(1, 'post', 1763002, Object(SV\ElasticSearchEssentials\XF\Entity\User), true, false)
#9 src/XF/ControllerPlugin/Reaction.php(67): XF\Repository\Reaction->reactToContent(1, 'post', 1763002, Object(SV\ElasticSearchEssentials\XF\Entity\User), true)
#10 src/XF/ControllerPlugin/Reaction.php(21): XF\ControllerPlugin\Reaction->actionToggleReaction(Object(SV\ElasticSearchEssentials\XF\Entity\Post), 'posts/reactions', 'posts')
#11 src/XF/ControllerPlugin/Reaction.php(14): XF\ControllerPlugin\Reaction->actionReact(Object(SV\ElasticSearchEssentials\XF\Entity\Post), 'posts', 'posts/react', 'posts/reactions')
#12 src/XF/Pub/Controller/Post.php(381): XF\ControllerPlugin\Reaction->actionReactSimple(Object(SV\ElasticSearchEssentials\XF\Entity\Post), 'posts')
#13 src/XF/Mvc/Dispatcher.php(352): XF\Pub\Controller\Post->actionReact(Object(XF\Mvc\ParameterBag))
#14 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('XF:Post', 'React', Object(XF\Mvc\RouteMatch), Object(SV\MultiPrefix\XF\Pub\Controller\Post), NULL)
#15 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\MultiPrefix\XF\Pub\Controller\Post), NULL)
#16 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#17 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#18 src/XF.php(524): XF\App->run()
#19 index.php(20): XF::runApp('XF\\Pub\\App')
#20 {main}

Request state
array(4) {
  ["url"] => string(34) "/posts/1763002/react?reaction_id=1"
  ["referrer"] => string(33) "https://domain.com/threads/131617/"
  ["_GET"] => array(1) {
    ["reaction_id"] => string(1) "1"
  }
  ["_POST"] => array(4) {
    ["_xfRequestUri"] => string(16) "/threads/131617/"
    ["_xfWithData"] => string(1) "1"
    ["_xfToken"] => string(8) "********"
    ["_xfResponseType"] => string(4) "json"
  }
}



and these many of these:

Code:
ErrorException: Debug: User push subscription change src/XF/Error.php:77
Generated by:  7/1/24 at 12:20

Stack trace
#0 src/XF.php(219): XF\Error->logError('Debug: User pus...', false)
#1 src/addons/DigitalPoint/PWA/XF/Pub/Controller/Misc.php(21): XF::logError('Debug: User pus...')
#2 src/XF/Mvc/Dispatcher.php(352): DigitalPoint\PWA\XF\Pub\Controller\Misc->actionUpdatePushSubscription(Object(XF\Mvc\ParameterBag))
#3 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('XF:Misc', 'UpdatePushSubsc...', Object(XF\Mvc\RouteMatch), Object(SV\SignupAbuseBlocking\XF\Pub\Controller\Misc), NULL)
#4 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\SignupAbuseBlocking\XF\Pub\Controller\Misc), NULL)
#5 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#6 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#7 src/XF.php(524): XF\App->run()
#8 index.php(20): XF::runApp('XF\\Pub\\App')
#9 {main}

Request state
array(4) {
  ["url"] => string(40) "/index.php?misc/update-push-subscription"
  ["referrer"] => string(40) "https://domain.com/threads/131212/page-16"
  ["_GET"] => array(1) {
    ["misc/update-push-subscription"] => string(0) ""
  }
  ["_POST"] => array(7) {
    ["endpoint"] => string(188) "https://fcm.googleapis.com/fcm/send/f7Z6i1BPaBk:APA91bFmihWpDXD6cop71AYL0VKJtdrmiFQSGdRuquXhTx1Fp01xQVsWdqNG7LZMk4Lkrg3s31at0DRYEj2MoVepdm3-xwUGKwUdLp6TnZRq7seiVmhS5hGe2xPGM_XkthHt1FkW4l17"
    ["key"] => string(88) "BNyweVAcOw1bzuzH8RihLnkyL66ITa1ejfh6HPSH4jAcX39H7J1Q6vCLSrUb7hn10tvUpj4YHpSg+GxZMSmkT0Q="
    ["token"] => string(24) "SjIBI+59sXR3YS/xTwwRQQ=="
    ["encoding"] => string(9) "aes128gcm"
    ["unsubscribed"] => string(1) "0"
    ["_xfResponseType"] => string(4) "json"
    ["_xfToken"] => string(8) "********"
  }
}

Thanks!
 
I'm unsure if that's the case since these complaints are from users with access to a private node, in which there is an interaction with only one user (a moderator).

Comments aren't deleted that often if any at all. It's also easy to track since moderators, and users can't hard delete comments.

I tried to enable debugging for push notifications, and I see a few of these errors/log data


Code:
ErrorException: Debug: Push notification 410 error: Client error: `POST https://fcm.googleapis.com/fcm/send/dA1-1pCaFxw:APA91bH-E56DxUtLOhkl7PYHG2goArc_ZvSU6oh6r0rrn2DbdofTVZg_y_tlMhsBQDxoicrbB11JcWYfe8xjyZ70bSFQ4fqzMVFw2JpmNikv1vyGiUg133yVkjWSr7OueVK8-BBB4p4` resulted in a `410 Gone` response: push subscription has unsubscribed or expired. src/XF/Error.php:77
Generated by: Username 6/1/24 at 13:22

Stack trace
#0 src/XF.php(219): XF\Error->logError('Debug: Push not...', false)
#1 src/addons/DigitalPoint/PWA/XF/Service/PushNotification.php(68): XF::logError('Debug: Push not...')
#2 src/XF/Service/PushNotification.php(179): DigitalPoint\PWA\XF\Service\PushNotification->handleResults(Object(Generator))
#3 src/XF/Service/PusherTrait.php(194): XF\Service\PushNotification->sendNotifications()
#4 src/XF/Repository/UserAlert.php(165): XF\Service\Alert\Pusher->push()
#5 src/XF/Repository/UserAlert.php(116): XF\Repository\UserAlert->insertAlert(37034, 33191, [invalid], 'post', 1763024, 'quote', Array, Array)
#6 src/XF/Notifier/AbstractNotifier.php(63): XF\Repository\UserAlert->alert(Object(SV\ElasticSearchEssentials\XF\Entity\User), 33191, [invalid], 'post', 1763024, 'quote', Array, Array)
#7 src/XF/Notifier/Post/Quote.php(36): XF\Notifier\AbstractNotifier->basicAlert(Object(SV\ElasticSearchEssentials\XF\Entity\User), 33191, [invalid], 'post', 1763024, 'quote')
#8 src/XF/Service/AbstractNotifier.php(88): XF\Notifier\Post\Quote->sendAlert(Object(SV\ElasticSearchEssentials\XF\Entity\User))
#9 src/addons/Forum/RMGraphs/XF/Service/Post/Notifier.php(60): XF\Service\AbstractNotifier->notifyType(Object(XF\Notifier\Post\Quote), Array, 1.70454E+9)
#10 src/XF/Service/AbstractNotifier.php(46): Forum\RMGraphs\XF\Service\Post\Notifier->notifyType(Object(XF\Notifier\Post\Quote), Array, 1.70454E+9)
#11 src/addons/Forum/RMGraphs/XF/Service/Post/Notifier.php(44): XF\Service\AbstractNotifier->notify(3)
#12 src/XF/Service/AbstractNotifier.php(58): Forum\RMGraphs\XF\Service\Post\Notifier->notify(3)
#13 src/XF/Service/Thread/Replier.php(252): XF\Service\AbstractNotifier->notifyAndEnqueue(3)
#14 src/addons/Forum/RMGraphs/XF/Service/Thread/Replier.php(32): XF\Service\Thread\Replier->sendNotifications()
#15 src/XF/Pub/Controller/Thread.php(459): Forum\RMGraphs\XF\Service\Thread\Replier->sendNotifications()
#16 src/XF/Pub/Controller/Thread.php(618): XF\Pub\Controller\Thread->finalizeThreadReply(Object(SV\SignupAbuseBlocking\XF\Service\Thread\Replier))
#17 src/addons/ThemeHouse/AutoMergeDoublePost/XF/Pub/Controller/Thread.php(42): XF\Pub\Controller\Thread->actionAddReply(Object(XF\Mvc\ParameterBag))
#18 src/XF/Mvc/Dispatcher.php(352): ThemeHouse\AutoMergeDoublePost\XF\Pub\Controller\Thread->actionAddReply(Object(XF\Mvc\ParameterBag))
#19 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('XF:Thread', 'AddReply', Object(XF\Mvc\RouteMatch), Object(OzzModz\ThreadNotesBumpThread\XF\Pub\Controller\Thread), NULL)
#20 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(OzzModz\ThreadNotesBumpThread\XF\Pub\Controller\Thread), NULL)
#21 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#22 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#23 src/XF.php(524): XF\App->run()
#24 index.php(20): XF::runApp('XF\\Pub\\App')
#25 {main}

Request state
array(4) {
  ["url"] => string(25) "/threads/131617/add-reply"
  ["referrer"] => string(33) "https://domain.com/threads/131617/"
  ["_GET"] => array(0) {
  }
  ["_POST"] => array(10) {
    ["_xfToken"] => string(8) "********"
    ["message_html"] => string(675) "<blockquote data-quote="Mango562" data-source="post: 1763015" data-attributes="member: 37034"><p>somemessage</p><p><br></p><p> .</p></blockquote><p>some message   🤓</p>"
    ["attachment_hash"] => string(32) "a12ddbdf2779a3c99d689602563b058b"
    ["attachment_hash_combined"] => string(88) "{"type":"post","context":{"thread_id":131617},"hash":"a12ddbdf2779a3c99d689602563b058b"}"
    ["last_date"] => string(10) "1704492094"
    ["last_known_date"] => string(10) "1704492094"
    ["load_extra"] => string(1) "1"
    ["_xfRequestUri"] => string(16) "/threads/131617/"
    ["_xfWithData"] => string(1) "1"
    ["_xfResponseType"] => string(4) "json"
  }
}

Code:
ErrorException: Debug: Push notification 410 error: Client error: `POST https://fcm.googleapis.com/fcm/send/dA1-1pCaFxw:APA91bH-E56DxUtLOhkl7PYHG2goArc_ZvSU6oh6r0-rrn2DbdofTVZg_y_tlMhsBQDxoicrbB11JcWYfe8xjyZ70bSFQ4fqzMVFw2JpmNikv1vyGiUg133yVkjWSr7OueVK8-BBB4p4` resulted in a `410 Gone` response: push subscription has unsubscribed or expired. src/XF/Error.php:77
Generated by: Username 6/1/24 at 13:27

Stack trace
#0 src/XF.php(219): XF\Error->logError('Debug: Push not...', false)
#1 src/addons/DigitalPoint/PWA/XF/Service/PushNotification.php(68): XF::logError('Debug: Push not...')
#2 src/XF/Service/PushNotification.php(179): DigitalPoint\PWA\XF\Service\PushNotification->handleResults(Object(Generator))
#3 src/XF/Service/PusherTrait.php(194): XF\Service\PushNotification->sendNotifications()
#4 src/XF/Repository/UserAlert.php(165): XF\Service\Alert\Pusher->push()
#5 src/XF/Repository/UserAlert.php(103): XF\Repository\UserAlert->insertAlert(37034, 37015, 'username', 'post', 1763002, 'reaction', Array, Array)
#6 src/XF/Reaction/AbstractHandler.php(192): XF\Repository\UserAlert->alertFromUser(Object(SV\ElasticSearchEssentials\XF\Entity\User), Object(SV\ElasticSearchEssentials\XF\Entity\User), 'post', 1763002, 'reaction', Array)
#7 src/XF/Repository/Reaction.php(203): XF\Reaction\AbstractHandler->sendReactionAlert(Object(SV\ElasticSearchEssentials\XF\Entity\User), Object(SV\ElasticSearchEssentials\XF\Entity\User), 1763002, Object(SV\ElasticSearchEssentials\XF\Entity\Post), 1)
#8 src/XF/Repository/Reaction.php(144): XF\Repository\Reaction->insertReaction(1, 'post', 1763002, Object(SV\ElasticSearchEssentials\XF\Entity\User), true, false)
#9 src/XF/ControllerPlugin/Reaction.php(67): XF\Repository\Reaction->reactToContent(1, 'post', 1763002, Object(SV\ElasticSearchEssentials\XF\Entity\User), true)
#10 src/XF/ControllerPlugin/Reaction.php(21): XF\ControllerPlugin\Reaction->actionToggleReaction(Object(SV\ElasticSearchEssentials\XF\Entity\Post), 'posts/reactions', 'posts')
#11 src/XF/ControllerPlugin/Reaction.php(14): XF\ControllerPlugin\Reaction->actionReact(Object(SV\ElasticSearchEssentials\XF\Entity\Post), 'posts', 'posts/react', 'posts/reactions')
#12 src/XF/Pub/Controller/Post.php(381): XF\ControllerPlugin\Reaction->actionReactSimple(Object(SV\ElasticSearchEssentials\XF\Entity\Post), 'posts')
#13 src/XF/Mvc/Dispatcher.php(352): XF\Pub\Controller\Post->actionReact(Object(XF\Mvc\ParameterBag))
#14 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('XF:Post', 'React', Object(XF\Mvc\RouteMatch), Object(SV\MultiPrefix\XF\Pub\Controller\Post), NULL)
#15 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\MultiPrefix\XF\Pub\Controller\Post), NULL)
#16 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#17 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#18 src/XF.php(524): XF\App->run()
#19 index.php(20): XF::runApp('XF\\Pub\\App')
#20 {main}

Request state
array(4) {
  ["url"] => string(34) "/posts/1763002/react?reaction_id=1"
  ["referrer"] => string(33) "https://domain.com/threads/131617/"
  ["_GET"] => array(1) {
    ["reaction_id"] => string(1) "1"
  }
  ["_POST"] => array(4) {
    ["_xfRequestUri"] => string(16) "/threads/131617/"
    ["_xfWithData"] => string(1) "1"
    ["_xfToken"] => string(8) "********"
    ["_xfResponseType"] => string(4) "json"
  }
}



and these many of these:

Code:
ErrorException: Debug: User push subscription change src/XF/Error.php:77
Generated by:  7/1/24 at 12:20

Stack trace
#0 src/XF.php(219): XF\Error->logError('Debug: User pus...', false)
#1 src/addons/DigitalPoint/PWA/XF/Pub/Controller/Misc.php(21): XF::logError('Debug: User pus...')
#2 src/XF/Mvc/Dispatcher.php(352): DigitalPoint\PWA\XF\Pub\Controller\Misc->actionUpdatePushSubscription(Object(XF\Mvc\ParameterBag))
#3 src/XF/Mvc/Dispatcher.php(259): XF\Mvc\Dispatcher->dispatchClass('XF:Misc', 'UpdatePushSubsc...', Object(XF\Mvc\RouteMatch), Object(SV\SignupAbuseBlocking\XF\Pub\Controller\Misc), NULL)
#4 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(SV\SignupAbuseBlocking\XF\Pub\Controller\Misc), NULL)
#5 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#6 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#7 src/XF.php(524): XF\App->run()
#8 index.php(20): XF::runApp('XF\\Pub\\App')
#9 {main}

Request state
array(4) {
  ["url"] => string(40) "/index.php?misc/update-push-subscription"
  ["referrer"] => string(40) "https://domain.com/threads/131212/page-16"
  ["_GET"] => array(1) {
    ["misc/update-push-subscription"] => string(0) ""
  }
  ["_POST"] => array(7) {
    ["endpoint"] => string(188) "https://fcm.googleapis.com/fcm/send/f7Z6i1BPaBk:APA91bFmihWpDXD6cop71AYL0VKJtdrmiFQSGdRuquXhTx1Fp01xQVsWdqNG7LZMk4Lkrg3s31at0DRYEj2MoVepdm3-xwUGKwUdLp6TnZRq7seiVmhS5hGe2xPGM_XkthHt1FkW4l17"
    ["key"] => string(88) "BNyweVAcOw1bzuzH8RihLnkyL66ITa1ejfh6HPSH4jAcX39H7J1Q6vCLSrUb7hn10tvUpj4YHpSg+GxZMSmkT0Q="
    ["token"] => string(24) "SjIBI+59sXR3YS/xTwwRQQ=="
    ["encoding"] => string(9) "aes128gcm"
    ["unsubscribed"] => string(1) "0"
    ["_xfResponseType"] => string(4) "json"
    ["_xfToken"] => string(8) "********"
  }
}

Thanks!
This addon doesn’t send push notifications itself. So it’s really a question for XenForo as to why it may be sending push notifications.
 
So is it an XF bug?
If you have something related to push notifications being sent in error, it wouldn’t be something with this addon as it doesn’t send push notifications itself normally. Wouldn’t hurt to disable all your addons (including this one) to narrow it down.

The only place this addon send push notifications is via the admin area where an administrator can manually send push notifications in mass. Any push notification sent outside of that is not coming from this addon.
 
The only place this addon send push notifications is via the admin area where an administrator can manually send push notifications in mass. Any push notification sent outside of that is not coming from this addon.
I understand. So it's probably something that is causing many push notifications. I guess the debugging error log should be empty if everything works fine, right? It doesn't log all the correct push notifications that are sent, right?

["endpoint"] => string(188) "https://fcm.googleapis.com/fcm/send...2lncCuUTwEXU4FXeWSOZLnnj0iI2w7YX3XKIQNb3dnusC"
["key"] => string(88) "BFAni53xVcZ4f2rjRqwQQnyFks0xzA/nS8s7nwBT/OnH7gOgsYmxRlwmk94j+cAwjfLjUaNIJg/0QaLRsPysbxo="

It seems that all errors are using this Google API. Is there any way for me to understand where is it coming from?
 
I understand. So it's probably something that is causing many push notifications. I guess the debugging error log should be empty if everything works fine, right? It doesn't log all the correct push notifications that are sent, right?

["endpoint"] => string(188) "https://fcm.googleapis.com/fcm/send...2lncCuUTwEXU4FXeWSOZLnnj0iI2w7YX3XKIQNb3dnusC"
["key"] => string(88) "BFAni53xVcZ4f2rjRqwQQnyFks0xzA/nS8s7nwBT/OnH7gOgsYmxRlwmk94j+cAwjfLjUaNIJg/0QaLRsPysbxo="

It seems that all errors are using this Google API. Is there any way for me to understand where is it coming from?
The info from debugging is not indicative of anything wrong. So no, the debugging info is not going to help you understand what or why may or may not be sending push notifications. It’s for debugging, not for error trapping.

If a user receives a push notification, it’s a successful push.
 
Great little addon. Fixed the orientation issue by using the JSON manifest function .

Annoying though users have to reinstall, and with Chrome clear the site setting and browsing data, as it seems to harbor the manifest, so you end up installing the previous version thanks to Chrome browser cache.

One question. What variable would I need to change the version number of the App..

It always installs as version 1 ?

No biggy really, just useful to identify it to users why they reinstall.
 
Great little addon. Fixed the orientation issue by using the JSON manifest function .

Annoying though users have to reinstall, and with Chrome clear the site setting and browsing data, as it seems to harbor the manifest, so you end up installing the previous version thanks to Chrome browser cache.

One question. What variable would I need to change the version number of the App..

It always installs as version 1 ?

No biggy really, just useful to identify it to users why they reinstall.
Not sure… I haven’t seen a situation where a user needs to reinstall the PWA app. Did they tell you why they reinstalled? Like what error they were getting or anything?
 
Not sure… I haven’t seen a situation where a user needs to reinstall the PWA app. Did they tell you why they reinstalled? Like what error they were getting or anything?
It was me. I noticed when I made the changes it wasn't picked upin the app till it was reinstalled..

Even then, it seems the manifest stays in chrome in some way, as it tries to install the previous version.. even after deleting site data when prompted. I've read this cam be a chrome quirk it seems with PWA

I clear site settings and browser data for the site in chrome, wait a couple of minutes it then re appears.. installing the correct one..
 
There isn't really a "version" that's installed. Like the PWA app doesn't download content and keep that static/inside the "app". It's all dynamic, same as accessing from a browser. It sounds like you have something going on at the operating system level of your device somehow possibly (make sure your operating system and apps are up to date). PWA is literally just a browser process underneath it all.
 
This addon updates it when it comes to front. It doesn’t continually poll for it if the browser is kept in the front if that’s what you mean?
Is there an option/simple way to turn this off without code editing?

I'm already doing live updates with Pusher, so I don't need the additional call being made :)

Edit: Ah wait I see the template modification, it's ok to just disable that or does it do anything else critical?
 
Last edited:
2.2.14 changelog mentions that orientation thing was fixed so maybe no changes are required if installation is updated!
 
My host did something and the PHP was reverted back to 7.1 and now I am back o n 8.2 and everything is running however my Xenforo is showing the following errors which I wasnt getting before.

Here is one of them. All of them seem to have the PWA addon in it.

any ideas?

Stack trace​

#0 src/XF.php(219): XF\Error->logError('Push notificati...', false)
#1 src/addons/DigitalPoint/PWA/XF/Service/PushNotification.php(83): XF::logError('Push notificati...')
#2 src/XF/Service/PushNotification.php(179): DigitalPoint\PWA\XF\Service\PushNotification->handleResults(Object(Generator))
#3 src/XF/Service/PusherTrait.php(194): XF\Service\PushNotification->sendNotifications()
#4 src/XF/Repository/UserAlert.php(165): XF\Service\Alert\Pusher->push()
#5 src/XF/Repository/UserAlert.php(103): XF\Repository\UserAlert->insertAlert(1162, 29, 'Bobby', 'post', 4884521, 'reaction', Array, Array)
#6 src/XF/Reaction/AbstractHandler.php(187): XF\Repository\UserAlert->alertFromUser(Object(SV\BookmarkEssentials\XF\Entity\User), Object(SV\BookmarkEssentials\XF\Entity\User), 'post', 4884521, 'reaction', Array)
#7 src/XF/Repository/Reaction.php(203): XF\Reaction\AbstractHandler->sendReactionAlert(Object(SV\BookmarkEssentials\XF\Entity\User), Object(SV\BookmarkEssentials\XF\Entity\User), 4884521, Object(SV\ThreadReplyBanTeeth\XF\Entity\Post), 3)
#8 src/XF/Repository/Reaction.php(143): XF\Repository\Reaction->insertReaction(3, 'post', 4884521, Object(SV\BookmarkEssentials\XF\Entity\User), true, false)
#9 src/XF/ControllerPlugin/Reaction.php(62): XF\Repository\Reaction->reactToContent(3, 'post', 4884521, Object(SV\BookmarkEssentials\XF\Entity\User), true)
#10 src/XF/ControllerPlugin/Reaction.php(21): XF\ControllerPlugin\Reaction->actionToggleReaction(Object(SV\ThreadReplyBanTeeth\XF\Entity\Post), 'posts/reactions', 'posts')
#11 src/XF/ControllerPlugin/Reaction.php(14): XF\ControllerPlugin\Reaction->actionReact(Object(SV\ThreadReplyBanTeeth\XF\Entity\Post), 'posts', 'posts/react', 'posts/reactions')
#12 src/XF/Pub/Controller/Post.php(381): XF\ControllerPlugin\Reaction->actionReactSimple(Object(SV\ThreadReplyBanTeeth\XF\Entity\Post), 'posts')
#13 src/XF/Mvc/Dispatcher.php(352): XF\Pub\Controller\Post->actionReact(Object(XF\Mvc\ParameterBag))
#14 src/XF/Mvc/Dispatcher.php(258): XF\Mvc\Dispatcher->dispatchClass('XF:Post', 'React', Object(XF\Mvc\RouteMatch), Object(NF\GiftUpgrades\XF\Pub\Controller\Post), NULL)
#15 src/XF/Mvc/Dispatcher.php(115): XF\Mvc\Dispatcher->dispatchFromMatch(Object(XF\Mvc\RouteMatch), Object(NF\GiftUpgrades\XF\Pub\Controller\Post), NULL)
#16 src/XF/Mvc/Dispatcher.php(57): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#17 src/XF/App.php(2487): XF\Mvc\Dispatcher->run()
#18 src/XF.php(524): XF\App->run()
#19 index.php(20): XF::runApp('XF\\Pub\\App')
#20 {main}
 
That’s going to be a hosting issue. Also not caused by this addon btw… this addon first send push notifications in itself.
 
Thats my thinking too...

I think the PHP.ini defaulted back and just scratching for clues in solving it, thats the only issue I am having.
 
Top Bottom