about summary refs log tree commit diff
path: root/app/services
AgeCommit message (Collapse)Author
2017-07-13Web Push Notifications (#3243)Sorin Davidoi
* 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-12Fix #4067 - Do not make HTTP round-trip when resolving local URL (#4160)Eugen Rochko
2017-07-11Revert "Wrap methods of ProcessFeedService::ProcessEntry in classes (#4151)" ↵nightpool
(#4157) This reverts commit 425acecfdb15093a265b191120fb2d4e4c4135c4.
2017-07-11Wrap methods of ProcessFeedService::ProcessEntry in classes (#4151)Akihiko Odaki (@fn_aki@pawoo.net)
ProcessFeedService::ProcessEntry had many methods, so wrap them in classes representing activities.
2017-07-11Remove redundant inclusion (#4150)Akihiko Odaki (@fn_aki@pawoo.net)
2017-07-11Fix PrecomputeFeedService for filtered statuses (#4148)Akihiko Odaki (@fn_aki@pawoo.net)
2017-07-10Rescue exceptions related to Goldfinger at FetchRemoteStatusService (#4138)abcang
2017-07-09Rescue exceptions related to Goldfinger (#4044)abcang
* Rescue exceptions related to Goldfinger * Exclude Goldfinger::SSLError
2017-07-08Use charlock_holmes instead of nkf at FetchLinkCardService (#4080)nullkal
* Specs for language detection * Use CharlockHolmes instead of NKF * Correct mistakes * Correct style * Set hint_enc instead of falling back and strip_tags * Improve specs * Add dependencies
2017-07-07Fix feed author not being enforced in ProcessFeedService (#4092)Eugen Rochko
Ensure the only allowed author of top-level entries in feed is the person the feed belongs to (a verified user). Ensure delete events only apply if the deleted item belonged to that user.
2017-07-07Refactor JSON templates to be generated with ActiveModelSerializers instead ↵Eugen Rochko
of Rabl (#4090)
2017-07-05Fix Nokogiri::HTML at FetchLinkCardService (#4072)abcang
2017-07-03Rescue exceptions caused by FetchLinkCardService (#4045)abcang
2017-06-30Do not raise an error if PrecomputeFeed could not find any status (#4015)Akihiko Odaki (@fn_aki@pawoo.net)
2017-06-29rescue HTTP::ConnectionError (#3992)abcang
2017-06-29Use multiple pairs for zadd in PrecomputeFeedService (#3990)Akihiko Odaki (@fn_aki@pawoo.net)
2017-06-28Overwrite old statuses with reblogs in PrecomputeFeedService (#3984)Akihiko Odaki (@fn_aki@pawoo.net)
2017-06-26Raise an error if salmon request response is unsatisfactory (#3960)ThibG
2017-06-20Fix conversations (fixes #3869) (#3870)ThibG
* Actually create conversations given explicit URIs * Try to get the parent toot in before validation, to avoid creating a new conversation
2017-06-20Filter direct statuses in Status.as_home_timeline (#3842)Akihiko Odaki (@fn_aki@pawoo.net)
The classes using Status.as_home_timeline, namely Feed and PrecomputeFeedService are expected to filter direct statuses as FanOutWriteService does, but their filtering were incomplete or missing. This commit solves the problem by filtering direct statuses in as_home_timeline as the other similar methods such as as_public_timeline does.
2017-06-19Rename FollowRemoteAccountService to ResolveRemoteAccountService (#3847)Eugen Rochko
Rename Activitypub to ActivityPub
2017-06-15Fix #3633 by not spawning RemoteProfileUpdateWorker from ↵ThibG
FetchRemoteAccountService (#3642)
2017-06-14Fix account delete form not accepting password, update suspended (#3745)Eugen Rochko
account before removing content for quicker feedback to end-users
2017-06-14Batched remove status service (#3735)Eugen Rochko
* Make Pubsubhubbub::DistributionWorker handle both single stream entry arguments, as well as arrays of stream entries * Add BatchedRemoveStatusService, make SuspendAccountService use it * Improve method names * Add test * Add more tests * Use PuSH payloads of 100 to have a clear mapping of 1000 input statuses -> 10 PuSH payloads It was nice while it lasted
2017-06-14Account deletion (#3728)Eugen Rochko
* Add form for account deletion * If avatar or header are gone from source, remove them * Add option to have SuspendAccountService remove user record, add tests * Exclude suspended accounts from search
2017-06-14Fix #2619 - When redis feed is empty, fall back to database (#3721)Eugen Rochko
* Fix #2619 - When redis feed is empty, fall back to database * Use redis value to return feed from database only while RegenerationWorker hasn't finished running * Fix specs * Replace usage of reject!
2017-06-12Fix regression from #3672 - Do not use pipeline around zscore (#3704)Eugen Rochko
2017-06-11Fix an error when TagManager.local_url? is called with a bad URI (#3701)ThibG
TagManager.local_url? was sometimes called with an URI with a nil host, leading to a crash in TagManager.local_url?. This fixes moves the already-existing uri.host.blank? check in front to avoid this case.
2017-06-11Fix removal of status sending the original status to mentioned users instead ↵Eugen Rochko
of delete Salmon (#3672) * Fix removal of status sending the original status to mentioned users instead of delete Salmon, add test * Create remove_status_service_spec.rb
2017-06-11Refactor UpdateRemoteProfileService (#3690)Yamagishi Kazutoshi
2017-06-08Fix #3378 - If favourite/reblog already exists, return it instead of failing ↵Eugen Rochko
(#3641)
2017-06-08Fixes #3605 by returning account from database in case of race condition (#3606)ThibG
2017-06-08Improve RuboCop rules (compatibility to Code Climate) (#3636)Yamagishi Kazutoshi
https://github.com/codeclimate/codeclimate-rubocop/blob/08f8de84ebfb39caa96391e23816877278f6441c/Gemfile.lock#L38 Code Climate is using RuboCop v0.46.0. Change several rules to maintain compatibility.
2017-06-07Fix Code Climate failed (regression from #3622) (#3624)Yamagishi Kazutoshi
2017-06-07Fixes #3388 by moving re-entrant `shared_status_from_xml` before transaction ↵ThibG
block (#3622) Steps to reproduce the original issue: 1. Have two remote accounts, A that you don't follow, and B that you follow. 2. Have A post a toot and reply to it. 3. Boost A's reply from remote account B. This used to cause the local instance to get A's reply but fail to link it to the original post.
2017-06-06Fix 500 errors on searching invalid URLs (#3613)unarist
2017-06-06Try fixing ThreadResolveWorker calls (#3599)ThibG
* Try fixing ThreadResolveWorker calls From my understanding of ActiveRecord, a transaction is commited as soon as the exit of the outmost ActiveRecord.transaction block. However, inner transaction blocks will exit without the transaction being commited. In this case, ThreadResolveWorker were fired *within* a transaction block, so moving the call out of it should do the trick. However, this is somewhat fragile, as this whole codepath could be called within yet another transaction. * Set status thread within the transaction block if it is immediately available from database
2017-06-05Don't follow account if it's already followed (#3575)René Klačan
Closes https://github.com/tootsuite/mastodon/issues/3102
2017-06-04change sidekiq queueing to bulk push (#3536)takayamaki
2017-06-03Remove WarmCacheService (#3527)Yamagishi Kazutoshi
WarmCacheService is no longer used (removed with 5442083b3c44c731679fc489568bf7f70a807a39 ).
2017-05-31Misc tidying and clean ups (#3445)Matt Jankowski
* Remove trailing whitespace in i18n mailers * Use query methods instead of #present? on AR attributes * Delegate Status#account_domain method * Delegate Mention #account_username and #account_acct methods
2017-05-30Add status destroy authorization to policy (#3453)Jack Jennings
* Add status destroy authorization to policy * Create explicit unreblog status authorization
2017-05-30Move status reblog authorization into policy (#3425)Jack Jennings
2017-05-29Extract authorization policy for viewing statuses (#3150)Jack Jennings
2017-05-27Avoid comparing domains when looking for an exact match of a local account ↵happycoloredbanana
(#3336)
2017-05-27Fix some nil errors (#3338)Eugen Rochko
* Fix nil input not handled well in AuthorExtractor concern * Fix hard error in ProcessFeedService when replied-to status has been deleted * Fix nil errors in ProcessInteractionService when favourited status cannot be found
2017-05-23don't notify me when my toot is faved by someone i muted (#3245)beatrix
2017-05-22Similarly to #2426, put creation of remote statuses in a transaction, (#3233)Eugen Rochko
so that public timeline/caching would not encounter incomplete data
2017-05-20Use joins for account properties (#3167)Akihiko Odaki
2017-05-19Add buttons to block and unblock domain (#3127)Eugen Rochko
* Add buttons to block and unblock domain * Relationship API now returns "domain_blocking" status for accounts, rename "block entire domain" to "hide entire domain", fix unblocking domain, do not block notifications from domain-blocked-but-followed people, do not send Salmons to domain blocked users * Add test * Personal domain blocks shouldn't affect Salmon after all, since in this direction of communication the control is very thin when it comes to public stuff. Best stay consistent and not affect federation in this way * Ignore followers and follow request from domain blocked folks, ensure account domain blocks are not created for empty domain, and avoid duplicates in validation * Purge followers when blocking domain (without soft-blocks, since they are useless here) * Add tests, fix local timeline being empty when having any domain blocks