• Extensions
  • Progressive Web App (PWA) and Push Notifications

1Dot I found a bug that whenever some notification post occurs like I mean Someone added Blue Tag so it shows share option there also and when user clicks on it it shares something object object thingy please remove from their or fix the object thingy.

yes i too noticed on Chrome Mobile

I have activated gmp PHP. But push notifications for PWA are not working and it says like this. How to fix this?

The gmp PHP extension doesn't seem to be enabled on your server. It's not strictly necessary, but can improve performance and is recommended. Some shared hosts might not support it though.

6 days later

I was able to install this extension just fine. However, when I try to enable it, I get the Oops message.
"Oops! Something went wrong. Please reload the page and try again."

    MikeJones Does this help?

    Next Doctrine\DBAL\Driver\PDO\Exception: SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'tcbpush_subscriptions' already exists in /home3/narraoom/twistedcyborg.com/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Exception.php:18
    Stack trace:
    #0 /home3/narraoom/twistedcyborg.com/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php(114): Doctrine\DBAL\Driver\PDO\Exception::new(Object(PDOException))
    #1 /home3/narraoom/twistedcyborg.com/vendor/illuminate/database/Connection.php(485): Doctrine\DBAL\Driver\PDOStatement->execute()
    #2 /home3/narraoom/twistedcyborg.com/vendor/illuminate/database/Connection.php(685): Illuminate\Database\Connection->Illuminate\Database\{closure}('create table
    t...', Array)
    #3 /home3/narraoom/twistedcyborg.com/vendor/illuminate/database/Connection.php(652): Illuminate\Database\Connection->runQueryCallback('create table t...', Array, Object(Closure))
    #4 /home3/narraoom/twistedcyborg.com/vendor/illuminate/database/Connection.php(486): Illuminate\Database\Connection->run('create table
    t...', Array, Object(Closure))
    #5 /home3/narraoom/twistedcyborg.com/vendor/illuminate/database/Schema/Blueprint.php(109): Illuminate\Database\Connection->statement('create table t...')
    #6 /home3/narraoom/twistedcyborg.com/vendor/illuminate/database/Schema/Builder.php(365): Illuminate\Database\Schema\Blueprint->build(Object(Illuminate\Database\MySqlConnection), Object(Illuminate\Database\Schema\Grammars\MySqlGrammar))
    #7 /home3/narraoom/twistedcyborg.com/vendor/illuminate/database/Schema/Builder.php(228): Illuminate\Database\Schema\Builder->build(Object(Illuminate\Database\Schema\Blueprint))
    #8 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Database/Migration.php(32): Illuminate\Database\Schema\Builder->create('push_subscripti...', Object(Closure))
    #9 [internal function]: Flarum\Database\Migration::Flarum\Database\{closure}(Object(Illuminate\Database\Schema\MySqlBuilder))
    #10 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Database/Migrator.php(202): call_user_func(Object(Closure), Object(Illuminate\Database\Schema\MySqlBuilder))
    #11 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Database/Migrator.php(133): Flarum\Database\Migrator->runClosureMigration(Array)
    #12 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Database/Migrator.php(116): Flarum\Database\Migrator->runUp('/home3/narraoom...', '2020_05_29_0000...', Object(Flarum\Extension\Extension))
    #13 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Database/Migrator.php(90): Flarum\Database\Migrator->runMigrationList('/home3/narraoom...', Array, Object(Flarum\Extension\Extension))
    #14 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Extension/Extension.php(482): Flarum\Database\Migrator->run('/home3/narraoom...', Object(Flarum\Extension\Extension))
    #15 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Extension/ExtensionManager.php(311): Flarum\Extension\Extension->migrate(Object(Flarum\Database\Migrator), 'up')
    #16 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Extension/ExtensionManager.php(182): Flarum\Extension\ExtensionManager->migrate(Object(Flarum\Extension\Extension))
    #17 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Api/Controller/UpdateExtensionController.php(46): Flarum\Extension\ExtensionManager->enable('askvortsov-pwa')
    #18 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/RouteHandlerFactory.php(41): Flarum\Api\Controller\UpdateExtensionController->handle(Object(Laminas\Diactoros\ServerRequest))
    #19 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php(27): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}(Object(Laminas\Diactoros\ServerRequest), Array)
    #20 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ExecuteRoute->process(Object(Laminas\Diactoros\ServerRequest), Object(Closure))
    #21 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Api/Middleware/ThrottleApi.php(33): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #22 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Api\Middleware\ThrottleApi->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #23 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php(44): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #24 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\CheckCsrfToken->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #25 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php(67): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #26 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ResolveRoute->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #27 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #28 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\SetLocale->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #29 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/AuthenticateWithHeader.php(56): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #30 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\AuthenticateWithHeader->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #31 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(31): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #32 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\AuthenticateWithSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #33 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #34 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\RememberFromCookie->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #35 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/StartSession.php(61): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #36 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\StartSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #37 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Api/Middleware/FakeHttpMethods.php(29): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #38 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Api\Middleware\FakeHttpMethods->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #39 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(28): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #40 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ParseJsonBody->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #41 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/HandleErrors.php(57): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #42 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\HandleErrors->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #43 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/InjectActorReference.php(25): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #44 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\InjectActorReference->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #45 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(76): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #46 /home3/narraoom/twistedcyborg.com/vendor/middlewares/request-handler/src/RequestHandler.php(84): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #47 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\RequestHandler->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #48 /home3/narraoom/twistedcyborg.com/vendor/middlewares/base-path-router/src/BasePathRouter.php(101): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #49 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\BasePathRouter->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #50 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php(36): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #51 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Laminas\Stratigility\Middleware\OriginalMessages->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #52 /home3/narraoom/twistedcyborg.com/vendor/middlewares/base-path/src/BasePath.php(73): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #53 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\BasePath->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #54 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Middleware/ProcessIp.php(24): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #55 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ProcessIp->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
    #56 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(76): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
    #57 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(65): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\EmptyPipelineHandler))
    #58 /home3/narraoom/twistedcyborg.com/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php(96): Laminas\Stratigility\MiddlewarePipe->handle(Object(Laminas\Diactoros\ServerRequest))
    #59 /home3/narraoom/twistedcyborg.com/vendor/flarum/core/src/Http/Server.php(44): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
    #60 /home3/narraoom/twistedcyborg.com/index.php(22): Flarum\Http\Server->listen()
    #61 {main}

    I have activated gmp PHP. But push notifications for PWA are not working and it says like this. How to fix this?

    The gmp PHP extension doesn't seem to be enabled on your server. It's not strictly necessary, but can improve performance and is recommended. Some shared hosts might not support it though.

      Hi , There are a few problems with this extension , although it will still work if i enable it, but will crash every time someone comments and posts

      it's say "The key needed for push notifications could not be generated. The full error message is: Unable to create the key"

      Logs :

      flarum.ERROR: ErrorException: [VAPID] Public key should be 65 bytes long when decoded. in /app/vendor/minishlink/web-push/src/VAPID.php:71
      Stack trace:
      #0 /app/vendor/minishlink/web-push/src/WebPush.php(88): Minishlink\WebPush\VAPID::validate()
      #1 /app/vendor/askvortsov/flarum-pwa/src/PushNotificationDriver.php(123): Minishlink\WebPush\WebPush->__construct()
      #2 /app/vendor/flarum/core/src/Notification/NotificationSyncer.php(110): Askvortsov\FlarumPWA\PushNotificationDriver->send()
      #3 /app/vendor/flarum/mentions/src/Listener/UpdateMentionsMetadataWhenVisible.php(66): Flarum\Notification\NotificationSyncer->sync()
      #4 /app/vendor/flarum/mentions/src/Listener/UpdateMentionsMetadataWhenVisible.php(46): Flarum\Mentions\Listener\UpdateMentionsMetadataWhenVisible->syncUserMentions()
      #5 /app/vendor/illuminate/events/Dispatcher.php(412): Flarum\Mentions\Listener\UpdateMentionsMetadataWhenVisible->handle()
      #6 /app/vendor/illuminate/events/Dispatcher.php(237): Illuminate\Events\Dispatcher->Illuminate\Events\{closure}()
      #7 /app/vendor/flarum/core/src/Foundation/DispatchEventsTrait.php(33): Illuminate\Events\Dispatcher->dispatch()
      #8 /app/vendor/flarum/core/src/Post/Command/PostReplyHandler.php(104): Flarum\Post\Command\PostReplyHandler->dispatchEventsFor()
      #9 /app/vendor/flarum/core/src/Notification/NotificationSyncer.php(148): Flarum\Post\Command\PostReplyHandler->Flarum\Post\Command\{closure}()
      #10 /app/vendor/flarum/core/src/Post/Command/PostReplyHandler.php(105): Flarum\Notification\NotificationSyncer->onePerUser()
      #11 /app/vendor/illuminate/bus/Dispatcher.php(122): Flarum\Post\Command\PostReplyHandler->handle()
      #12 /app/vendor/illuminate/pipeline/Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}()
      #13 /app/vendor/illuminate/pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
      #14 /app/vendor/illuminate/bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()
      #15 /app/vendor/illuminate/bus/Dispatcher.php(78): Illuminate\Bus\Dispatcher->dispatchNow()
      #16 /app/vendor/flarum/core/src/Api/Controller/CreatePostController.php(62): Illuminate\Bus\Dispatcher->dispatch()
      #17 /app/vendor/flarum/core/src/Api/Controller/AbstractSerializeController.php(110): Flarum\Api\Controller\CreatePostController->data()
      #18 /app/vendor/flarum/core/src/Api/Controller/AbstractCreateController.php(22): Flarum\Api\Controller\AbstractSerializeController->handle()
      #19 /app/vendor/flarum/core/src/Http/RouteHandlerFactory.php(41): Flarum\Api\Controller\AbstractCreateController->handle()
      #20 /app/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php(27): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}()
      #21 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ExecuteRoute->process()
      #22 /app/vendor/malago/flarum-achievements/src/Middlewares/MiddlewarePosted.php(27): Laminas\Stratigility\Next->handle()
      #23 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Malago\Achievements\Middlewares\MiddlewarePosted->process()
      #24 /app/vendor/flarum/core/src/Api/Middleware/ThrottleApi.php(33): Laminas\Stratigility\Next->handle()
      #25 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Api\Middleware\ThrottleApi->process()
      #26 /app/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php(44): Laminas\Stratigility\Next->handle()
      #27 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\CheckCsrfToken->process()
      #28 /app/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php(67): Laminas\Stratigility\Next->handle()#29 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ResolveRoute->process()
      #30 /app/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Laminas\Stratigility\Next->handle()
      #31 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\SetLocale->process()
      #32 /app/vendor/flarum/core/src/Http/Middleware/AuthenticateWithHeader.php(56): Laminas\Stratigility\Next->handle()
      #33 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\AuthenticateWithHeader->process()
      #34 /app/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(31): Laminas\Stratigility\Next->handle()
      #35 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\AuthenticateWithSession->process()
      #36 /app/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Laminas\Stratigility\Next->handle()
      #37 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\RememberFromCookie->process()
      #38 /app/vendor/flarum/core/src/Http/Middleware/StartSession.php(61): Laminas\Stratigility\Next->handle()#39 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\StartSession->process()
      #40 /app/vendor/flarum/core/src/Api/Middleware/FakeHttpMethods.php(29): Laminas\Stratigility\Next->handle()
      #41 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Api\Middleware\FakeHttpMethods->process()
      #42 /app/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(28): Laminas\Stratigility\Next->handle()
      #43 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ParseJsonBody->process()
      #44 /app/vendor/flarum/core/src/Http/Middleware/HandleErrors.php(57): Laminas\Stratigility\Next->handle()#45 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\HandleErrors->process()
      #46 /app/vendor/flarum/core/src/Http/Middleware/InjectActorReference.php(25): Laminas\Stratigility\Next->handle()
      #47 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\InjectActorReference->process()
      #48 /app/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(76): Laminas\Stratigility\Next->handle()
      #49 /app/vendor/middlewares/request-handler/src/RequestHandler.php(84): Laminas\Stratigility\MiddlewarePipe->process()
      #50 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\RequestHandler->process()
      #51 /app/vendor/middlewares/base-path-router/src/BasePathRouter.php(101): Laminas\Stratigility\Next->handle()
      #52 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\BasePathRouter->process()
      #53 /app/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php(36): Laminas\Stratigility\Next->handle()
      #54 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Laminas\Stratigility\Middleware\OriginalMessages->process()
      #55 /app/vendor/middlewares/base-path/src/BasePath.php(73): Laminas\Stratigility\Next->handle()
      #56 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\BasePath->process()
      #57 /app/vendor/flarum/core/src/Http/Middleware/ProcessIp.php(24): Laminas\Stratigility\Next->handle()
      #58 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ProcessIp->process()
      #59 /app/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(76): Laminas\Stratigility\Next->handle()
      #60 /app/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(65): Laminas\Stratigility\MiddlewarePipe->process()
      #61 /app/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php(96): Laminas\Stratigility\MiddlewarePipe->handle()
      #62 /app/vendor/flarum/core/src/Http/Server.php(44): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
      #63 /app/public/index.php(22): Flarum\Http\Server->listen()
      #64 {main}

      PHP Forum info :

      Flarum core 1.0.4
      PHP version: 8.0.8
      Loaded extensions: Core, date, libxml, openssl, pcre, zlib, filter, hash, json, pcntl, Reflection, SPL, session, standard, sodium, mysqlnd, PDO, xml, calendar, ctype, curl, dom, mbstring, FFI, fileinfo, ftp, gd, gettext, iconv, exif, mysqli, pdo_mysql, Phar, posix, readline, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, xmlreader, xmlwriter, xsl, Zend OPcache
      +-------------------------------------+--------------+--------+
      | Flarum Extensions                   |              |        |
      +-------------------------------------+--------------+--------+
      | ID                                  | Version      | Commit |
      +-------------------------------------+--------------+--------+
      | flarum-flags                        | v1.0.0       |        |
      | flarum-approval                     | v1.0.0       |        |
      | flarum-tags                         | v1.0.3       |        |
      | flarum-suspend                      | v1.0.0       |        |
      | flarum-markdown                     | v1.0.1       |        |
      | flarum-nicknames                    | v1.0.0       |        |
      | fof-oauth                           | 1.0.1        |        |
      | flarum-likes                        | v1.0.0       |        |
      | askvortsov-auto-moderator           | v0.1.1       |        |
      | fof-spamblock                       | 1.0.0        |        |
      | fof-upload                          | 1.0.1        |        |
      | fof-disposable-emails               | 1.0.0        |        |
      | fof-byobu                           | 1.0.0-beta.7 |        |
      | clarkwinkelmann-group-list          | 1.0.0        |        |
      | askvortsov-checklist                | v1.3.1       |        |
      | fof-user-directory                  | 1.0.2        |        |
      | fof-reactions                       | 1.0.0        |        |
      | clarkwinkelmann-author-change       | 1.0.1        |        |
      | askvortsov-discussion-templates     | v0.8.0       |        |
      | fof-default-user-preferences        | 1.0.0        |        |
      | askvortsov-categories               | v3.0.0       |        |
      | nomiscz-auth-steam                  | v1.0.1       |        |
      | flarum-subscriptions                | v1.0.0       |        |
      | therealsujitk-gifs                  | v4.0.0       |        |
      | askvortsov-help-tags                | v1.1.0       |        |
      | fof-username-request                | 1.0.0        |        |
      | malago-achievements                 | 0.4.1        |        |
      | fof-bbcode-details                  | 1.0.0        |        |
      | fof-drafts                          | 1.0.1        |        |
      | fof-best-answer                     | 1.0.1        |        |
      | fof-terms                           | 1.0.0        |        |
      | fof-pretty-mail                     | 1.0.1        |        |
      | fof-polls                           | 1.0.3        |        |
      | fof-ban-ips                         | 1.0.0        |        |
      | clarkwinkelmann-emojionearea        | 1.0.0        |        |
      | flarum-lock                         | v1.0.0       |        |
      | antoinefr-money                     | v1.0.0       |        |
      | sycho-profile-cover                 | v1.3.0       |        |
      | fof-share-social                    | 1.0.0        |        |
      | fof-nightmode                       | 1.0.0        |        |
      | flarum-bbcode                       | v1.0.0       |        |
      | flarum-emoji                        | v1.0.0       |        |
      | flarum-mentions                     | v1.0.0       |        |
      | flarum-statistics                   | v1.0.0       |        |
      | flarum-sticky                       | v1.0.0       |        |
      | migratetoflarum-canonical           | 1.0.0        |        |
      | v17development-seo                  | v1.8.0       |        |
      | fof-user-bio                        | 1.0.0        |        |
      | fof-ignore-users                    | 1.0.0        |        |
      | fof-socialprofile                   | 1.0.0        |        |
      | fof-profile-image-crop              | 1.0.0        |        |
      | fof-links                           | 1.0.0        |        |
      | fof-pages                           | 1.0.1        |        |
      | fof-recaptcha                       | 1.0.0        |        |
      | fof-formatting                      | 1.0.0        |        |
      | jslirola-login2seeplus              | v0.2         |        |
      | fof-prevent-necrobumping            | 1.0.0        |        |
      | askvortsov-rich-text                | v2.0.3       |        |
      | flarum-embed                        | v1.0.0       |        |
      | fof-split                           | 1.0.0        |        |
      | ianm-html-head                      | 1.0.0        |        |
      | fof-merge-discussions               | 1.0.0        |        |
      | sycho-advanced-extension-categories | v0.1.3       |        |
      | clarkwinkelmann-first-post-approval | 1.0.0        |        |
      | flarum-pusher                       | v1.0.0       |        |
      | ianm-synopsis                       | 1.0.0        |        |
      | nearata-no-self-likes               | v1.2.0       |        |
      | fof-webhooks                        | 1.0.2        |        |
      | askvortsov-moderator-warnings       | v0.6.0       |        |
      | the-turk-mathren                    | 0.3.7        |        |
      | v17development-user-badges          | v0.2.1       |        |
      | flarum-lang-english                 | v1.0.0       |        |
      | yannisme-confixtheme                | 2.0.2        |        |
      | fof-stopforumspam                   | 1.0.0        |        |
      | fof-linguist                        | 1.0.0        |        |
      +-------------------------------------+--------------+--------+
      21 days later

      On the FreeFlarum platform it also complains about Unable to create the key and if enabled users cannot create posts:

      Looking through the logs https://freeflarum.com/api/logs/ I can see the following:

      [2021-08-08 13:28:43] flarum.ERROR: ErrorException: [VAPID] Public key should be 65 bytes long when decoded. in /app/vendor/minishlink/web-push/src/VAPID.php:71
      Stack trace:
      #0 /app/vendor/minishlink/web-push/src/WebPush.php(88): Minishlink\WebPush\VAPID::validate()
      #1 /app/vendor/askvortsov/flarum-pwa/src/PushNotificationDriver.php(123): Minishlink\WebPush\WebPush->__construct()
      #2 /app/vendor/flarum/core/src/Notification/NotificationSyncer.php(110): Askvortsov\FlarumPWA\PushNotificationDriver->send()
      #3 /app/vendor/flarum/mentions/src/Listener/UpdateMentionsMetadataWhenVisible.php(66): Flarum\Notification\NotificationSyncer->sync()
      #4 /app/vendor/flarum/mentions/src/Listener/UpdateMentionsMetadataWhenVisible.php(46): Flarum\Mentions\Listener\UpdateMentionsMetadataWhenVisible->syncUserMentions()
      #5 /app/vendor/illuminate/events/Dispatcher.php(412): Flarum\Mentions\Listener\UpdateMentionsMetadataWhenVisible->handle()
      #6 /app/vendor/illuminate/events/Dispatcher.php(237): Illuminate\Events\Dispatcher->Illuminate\Events\{closure}()
      #7 /app/vendor/flarum/core/src/Foundation/DispatchEventsTrait.php(33): Illuminate\Events\Dispatcher->dispatch()
      #8 /app/vendor/flarum/core/src/Post/Command/PostReplyHandler.php(104): Flarum\Post\Command\PostReplyHandler->dispatchEventsFor()
      #9 /app/vendor/flarum/core/src/Notification/NotificationSyncer.php(148): Flarum\Post\Command\PostReplyHandler->Flarum\Post\Command\{closure}()
      #10 /app/vendor/flarum/core/src/Post/Command/PostReplyHandler.php(105): Flarum\Notification\NotificationSyncer->onePerUser()
      #11 /app/vendor/illuminate/bus/Dispatcher.php(122): Flarum\Post\Command\PostReplyHandler->handle()
      #12 /app/vendor/illuminate/pipeline/Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}()
      #13 /app/vendor/illuminate/pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
      #14 /app/vendor/illuminate/bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()
      #15 /app/vendor/illuminate/bus/Dispatcher.php(78): Illuminate\Bus\Dispatcher->dispatchNow()
      #16 /app/vendor/flarum/core/src/Discussion/Command/StartDiscussionHandler.php(82): Illuminate\Bus\Dispatcher->dispatch()
      #17 /app/vendor/illuminate/bus/Dispatcher.php(122): Flarum\Discussion\Command\StartDiscussionHandler->handle()
      #18 /app/vendor/illuminate/pipeline/Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}()
      #19 /app/vendor/illuminate/pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
      #20 /app/vendor/illuminate/bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()
      #21 /app/vendor/illuminate/bus/Dispatcher.php(78): Illuminate\Bus\Dispatcher->dispatchNow()
      #22 /app/vendor/flarum/core/src/Api/Controller/CreateDiscussionController.php(61): Illuminate\Bus\Dispatcher->dispatch()
      #23 /app/vendor/flarum/core/src/Api/Controller/AbstractSerializeController.php(110): Flarum\Api\Controller\CreateDiscussionController->data()
      #24 /app/vendor/flarum/core/src/Api/Controller/AbstractCreateController.php(22): Flarum\Api\Controller\AbstractSerializeController->handle()
      #25 /app/vendor/flarum/core/src/Http/RouteHandlerFactory.php(41): Flarum\Api\Controller\AbstractCreateController->handle()
      #26 /app/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php(27): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}()
      #27 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ExecuteRoute->process()
      #28 /app/vendor/flarum/core/src/Api/Middleware/ThrottleApi.php(33): Laminas\Stratigility\Next->handle()
      #29 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Api\Middleware\ThrottleApi->process()
      #30 /app/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php(44): Laminas\Stratigility\Next->handle()
      #31 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\CheckCsrfToken->process()
      #32 /app/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php(67): Laminas\Stratigility\Next->handle()
      #33 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ResolveRoute->process()
      #34 /app/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Laminas\Stratigility\Next->handle()
      #35 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\SetLocale->process()
      #36 /app/vendor/flarum/core/src/Http/Middleware/AuthenticateWithHeader.php(56): Laminas\Stratigility\Next->handle()
      #37 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\AuthenticateWithHeader->process()
      #38 /app/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(31): Laminas\Stratigility\Next->handle()
      #39 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\AuthenticateWithSession->process()
      #40 /app/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Laminas\Stratigility\Next->handle()
      #41 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\RememberFromCookie->process()
      #42 /app/vendor/flarum/core/src/Http/Middleware/StartSession.php(61): Laminas\Stratigility\Next->handle()
      #43 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\StartSession->process()
      #44 /app/vendor/flarum/core/src/Api/Middleware/FakeHttpMethods.php(29): Laminas\Stratigility\Next->handle()
      #45 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Api\Middleware\FakeHttpMethods->process()
      #46 /app/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(28): Laminas\Stratigility\Next->handle()
      #47 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ParseJsonBody->process()
      #48 /app/vendor/flarum/core/src/Http/Middleware/HandleErrors.php(57): Laminas\Stratigility\Next->handle()
      #49 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\HandleErrors->process()
      #50 /app/vendor/flarum/core/src/Http/Middleware/InjectActorReference.php(25): Laminas\Stratigility\Next->handle()
      #51 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\InjectActorReference->process()
      #52 /app/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(76): Laminas\Stratigility\Next->handle()
      #53 /app/vendor/middlewares/request-handler/src/RequestHandler.php(84): Laminas\Stratigility\MiddlewarePipe->process()
      #54 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\RequestHandler->process()
      #55 /app/vendor/middlewares/base-path-router/src/BasePathRouter.php(101): Laminas\Stratigility\Next->handle()
      #56 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\BasePathRouter->process()
      #57 /app/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php(36): Laminas\Stratigility\Next->handle()
      #58 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Laminas\Stratigility\Middleware\OriginalMessages->process()
      #59 /app/vendor/middlewares/base-path/src/BasePath.php(73): Laminas\Stratigility\Next->handle()
      #60 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Middlewares\BasePath->process()
      #61 /app/vendor/flarum/core/src/Http/Middleware/ProcessIp.php(24): Laminas\Stratigility\Next->handle()
      #62 /app/vendor/laminas/laminas-stratigility/src/Next.php(51): Flarum\Http\Middleware\ProcessIp->process()
      #63 /app/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(76): Laminas\Stratigility\Next->handle()
      #64 /app/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(65): Laminas\Stratigility\MiddlewarePipe->process()
      #65 /app/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php(96): Laminas\Stratigility\MiddlewarePipe->handle()
      #66 /app/vendor/flarum/core/src/Http/Server.php(44): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
      #67 /app/public/index.php(22): Flarum\Http\Server->listen()
      #68 {main}

      Is it just me or the link from the notification always goes to the first post instead of the reply it is notifying me for?

      Example:

      • I get a notification that a post I follow has a new reply
      • I click on the notification
      • It brings me to the first post on that discussion and not the one that was notified (or the last unread)
      • Email notifications have links to the corresponding post, I would like to know if it is possible to replicate this for the push notifications

      when post:

      POST https://mysite.com/api/posts
      
      Error: Call to a member function getStatusCode() on null in /www/wwwroot/mysite.com/vendor/askvortsov/flarum-pwa/src/PushNotificationDriver.php:143

      users can post successfully, but they will get a error message"oops ... "

      What's strange is that admin user won't get this error.

      Not sure if this is the right place for my question. 😅

      I have enable the PWA and then the webpage of http://localhost:8000/ got installed on my mac Launchpad. I tried to get rid of it, but cannot find it in the application folder, neither can I drag it to trash bin. Does anyone know, what can I do to uninstalled it? I believe I got it installed through chrome.

      I enabled PWA on my forum and set Push notifications on my mobile. But when there was a post on a discussion I am following, there is no notification.

        Update : Working on PC, but not on mobile. Tried both FF and Chrome.

        Thanks

        huuduy216 Make sure you allow the device to received notification

        yes, the app has notification permission

        huuduy216 Make sure push notification is enabled for said event (in user profile)

        For the same account, I get notification on PC.

          • [deleted]

          meetdilip I had this exact issue some time ago and unfortunately never resolved it. I'm ready to take another look though as I really could do with this working.

          I had a post repy today that did not notify my phone. I have everything enabled too. Was a bummer. I don't get enough posts/reply to test much 😆

          12 days later

          For users receiving the "Unable to generate key" message:

          You must upload at least one logo for your progressive web app to be installable.

          I just tried it at FreeFlarum and it resolved the error. It's also mentioned at the extension page, but I think that many people didn't realize that. I think that this should be put "more on eyes" (maybe in a warning box when the key fails to generate). Or there should be a condition to check whether or not at least one image is uploaded, and show a warning based on that.

          Edit: It seems that this doesn't always work. Not sure what is causing this