mastodon/app/services
Sorin Davidoi ecab38fd66 Web Push Notifications (#3243)
* feat: Register push subscription

* feat: Notify when mentioned

* feat: Boost, favourite, reply, follow, follow request

* feat: Notification interaction

* feat: Handle change of public key

* feat: Unsubscribe if things go wrong

* feat: Do not send normal notifications if push is enabled

* feat: Focus client if open

* refactor: Move push logic to WebPushSubscription

* feat: Better title and body

* feat: Localize messages

* chore: Fix lint errors

* feat: Settings

* refactor: Lazy load

* fix: Check if push settings exist

* feat: Device-based preferences

* refactor: Simplify logic

* refactor: Pull request feedback

* refactor: Pull request feedback

* refactor: Create /api/web/push_subscriptions endpoint

* feat: Spec PushSubscriptionController

* refactor: WebPushSubscription => Web::PushSubscription

* feat: Spec Web::PushSubscription

* feat: Display first media attachment

* feat: Support direction

* fix: Stuff broken while rebasing

* refactor: Integration with session activations

* refactor: Cleanup

* refactor: Simplify implementation

* feat: Set VAPID keys via environment

* chore: Comments

* fix: Crash when no alerts

* fix: Set VAPID keys in testing environment

* fix: Follow link

* feat: Notification actions

* fix: Delete previous subscription

* chore: Temporary logs

* refactor: Move migration to a later date

* fix: Fetch the correct session activation and misc bugs

* refactor: Move migration to a later date

* fix: Remove follow request (no notifications)

* feat: Send administrator contact to push service

* feat: Set time-to-live

* fix: Do not show sensitive images

* fix: Reducer crash in error handling

* feat: Add badge

* chore: Fix lint error

* fix: Checkbox label overlap

* fix: Check for payload support

* fix: Rename action "type" (crash in latest Chrome)

* feat: Action to expand notification

* fix: Lint errors

* fix: Unescape notification body

* fix: Do not allow boosting if the status is hidden

* feat: Add VAPID keys to the production sample environment

* fix: Strip HTML tags from status

* refactor: Better error messages

* refactor: Handle browser not implementing the VAPID protocol (Samsung Internet)

* fix: Error when target_status is nil

* fix: Handle lack of image

* fix: Delete reference to invalid subscriptions

* feat: Better error handling

* fix: Unescape HTML characters after tags are striped

* refactor: Simpify code

* fix: Modify to work with #4091

* Sort strings alphabetically

* i18n: Updated Polish translation

it annoys me that it's not fully localized :P

* refactor: Use current_session in PushSubscriptionController

* fix: Rebase mistake

* fix: Set cacheName to mastodon

* refactor: Pull request feedback

* refactor: Remove logging statements

* chore(yarn): Fix conflicts with master

* chore(yarn): Copy latest from master

* chore(yarn): Readd offline-plugin

* refactor: Use save! and update!

* refactor: Send notifications async

* fix: Allow retry when push fails

* fix: Save track for failed pushes

* fix: Minify sw.js

* fix: Remove account_id from fabricator
2017-07-13 22:15:32 +02:00
..
concerns Rename FollowRemoteAccountService to ResolveRemoteAccountService (#3847) 2017-06-19 01:51:04 +02:00
pubsubhubbub Add spec for Pubsubhubbub::DistributionWorker. PuSH-deliver public items (#2954) 2017-05-10 02:55:43 +02:00
account_search_service.rb Rename FollowRemoteAccountService to ResolveRemoteAccountService (#3847) 2017-06-19 01:51:04 +02:00
after_block_service.rb Optimize MuteService and AfterBlockService (#2836) 2017-05-06 16:31:07 +02:00
authorize_follow_service.rb Rewrite Atom generation from stream entries to use Ox instead of Nokogiri (#1124) 2017-04-07 05:56:56 +02:00
base_service.rb Remove unused AtomBuilderHelper (#1364) 2017-04-11 19:31:22 +02:00
batched_remove_status_service.rb Batched remove status service (#3735) 2017-06-14 18:01:35 +02:00
block_domain_from_account_service.rb Add buttons to block and unblock domain (#3127) 2017-05-19 21:05:32 +02:00
block_domain_service.rb Use joins for account properties (#3167) 2017-05-20 15:13:51 +02:00
block_service.rb Rewrite Atom generation from stream entries to use Ox instead of Nokogiri (#1124) 2017-04-07 05:56:56 +02:00
fan_out_on_write_service.rb Refactor JSON templates to be generated with ActiveModelSerializers instead of Rabl (#4090) 2017-07-07 04:02:06 +02:00
favourite_service.rb Fix #3378 - If favourite/reblog already exists, return it instead of failing (#3641) 2017-06-08 15:07:39 +02:00
fetch_atom_service.rb rescue HTTP::ConnectionError (#3992) 2017-06-29 13:04:07 +02:00
fetch_link_card_service.rb Use charlock_holmes instead of nkf at FetchLinkCardService (#4080) 2017-07-08 22:44:31 +02:00
fetch_remote_account_service.rb Rescue exceptions related to Goldfinger (#4044) 2017-07-09 17:33:21 +02:00
fetch_remote_resource_service.rb Fix #4067 - Do not make HTTP round-trip when resolving local URL (#4160) 2017-07-12 00:39:15 +02:00
fetch_remote_status_service.rb Rescue exceptions related to Goldfinger at FetchRemoteStatusService (#4138) 2017-07-10 13:59:29 +02:00
follow_service.rb Rename FollowRemoteAccountService to ResolveRemoteAccountService (#3847) 2017-06-19 01:51:04 +02:00
mute_service.rb Optimize MuteService and AfterBlockService (#2836) 2017-05-06 16:31:07 +02:00
notify_service.rb Web Push Notifications (#3243) 2017-07-13 22:15:32 +02:00
post_status_service.rb Misc tidying and clean ups (#3445) 2017-05-31 20:38:17 +02:00
precompute_feed_service.rb Fix PrecomputeFeedService for filtered statuses (#4148) 2017-07-11 01:00:01 +02:00
process_feed_service.rb Revert "Wrap methods of ProcessFeedService::ProcessEntry in classes (#4151)" (#4157) 2017-07-11 18:19:16 +02:00
process_hashtags_service.rb Unify the method of extracting tags (#3138) 2017-05-19 20:19:14 +02:00
process_interaction_service.rb Add status destroy authorization to policy (#3453) 2017-05-30 22:56:31 +02:00
process_mentions_service.rb Rename FollowRemoteAccountService to ResolveRemoteAccountService (#3847) 2017-06-19 01:51:04 +02:00
reblog_service.rb Fix #3378 - If favourite/reblog already exists, return it instead of failing (#3641) 2017-06-08 15:07:39 +02:00
reject_follow_service.rb Rewrite Atom generation from stream entries to use Ox instead of Nokogiri (#1124) 2017-04-07 05:56:56 +02:00
remove_status_service.rb Fix regression from #3672 - Do not use pipeline around zscore (#3704) 2017-06-12 03:11:12 +02:00
resolve_remote_account_service.rb Rename FollowRemoteAccountService to ResolveRemoteAccountService (#3847) 2017-06-19 01:51:04 +02:00
search_service.rb Add specs (and refactor) of FetchRemoteResourceService and SearchService (#2812) 2017-05-05 17:26:04 +02:00
send_interaction_service.rb Raise an error if salmon request response is unsatisfactory (#3960) 2017-06-26 19:39:58 +02:00
subscribe_service.rb Services specs for subscribe and unsubscribe (#2928) 2017-05-09 00:45:02 +02:00
suspend_account_service.rb Fix account delete form not accepting password, update suspended (#3745) 2017-06-14 20:30:12 +02:00
unblock_domain_service.rb Unblock domain service specs/refactor (#2867) 2017-05-07 14:44:28 +02:00
unblock_service.rb Rewrite Atom generation from stream entries to use Ox instead of Nokogiri (#1124) 2017-04-07 05:56:56 +02:00
unfavourite_service.rb Rewrite Atom generation from stream entries to use Ox instead of Nokogiri (#1124) 2017-04-07 05:56:56 +02:00
unfollow_service.rb Fixed NoMethodError in UnfollowService (#1918) 2017-04-16 14:55:43 +02:00
unmute_service.rb Fix #231 - Muting 2017-03-02 18:49:32 +01:00
unsubscribe_service.rb Services specs for subscribe and unsubscribe (#2928) 2017-05-09 00:45:02 +02:00
update_remote_profile_service.rb Account deletion (#3728) 2017-06-14 18:01:27 +02:00
verify_salmon_service.rb Fix #2706 - Always respond with 200 to PuSH payloads (#2733) 2017-05-03 17:02:18 +02:00