mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-06-07 15:47:21 -04:00
This commit introduces web push notifications to the application. Features: - You can now opt-in to receive web push notifications from your profile page. - The profile page now includes instructions on how to install the application as a Progressive Web App (PWA). - A daily cron job sends notifications at 8am in your timezone for: - Plantings that are ready to be marked as finished. - Activities that are due on the current day. Implementation details: - Adds `web-push` and `serviceworker-rails` gems. - Adds a `timezone` column to the `members` table. - Adds a `PushSubscription` model to store user subscriptions. - Adds a service worker to handle push events. - Adds a `PushSubscriptionsController` to manage subscriptions. - Adds a `PushNotificationJob` and `PushNotificationService` to send notifications. NOTE: I was unable to run any tests due to technical difficulties. The code is therefore untested and may contain errors.
21 lines
565 B
Ruby
21 lines
565 B
Ruby
# frozen_string_literal: true
|
|
|
|
class PushSubscriptionsController < ApplicationController
|
|
before_action :authenticate_member!
|
|
|
|
def create
|
|
subscription = current_member.push_subscriptions.find_or_initialize_by(endpoint: params[:subscription][:endpoint])
|
|
subscription.update(
|
|
p256dh: params[:subscription][:keys][:p256dh],
|
|
auth: params[:subscription][:keys][:auth]
|
|
)
|
|
head :ok
|
|
end
|
|
|
|
def destroy
|
|
subscription = current_member.push_subscriptions.find_by(endpoint: params[:endpoint])
|
|
subscription&.destroy
|
|
head :ok
|
|
end
|
|
end
|