logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: c967802c4351f34d5c62e52b72c7d5c2d72ffba3
parent: 79609d62705fa7060c1d1ab78234b4aabdbd7e0f
Author: Eugen Rochko <eugen@zeonfederated.com>
Date:   Wed, 24 Feb 2016 18:44:03 +0100

Notify remote users about mentions

Diffstat:

Mapp/api/mastodon/entities.rb31+++++++++++++++++++++++++++++--
Mapp/api/mastodon/rest.rb6+++---
Mapp/services/post_status_service.rb9+++++++++
3 files changed, 41 insertions(+), 5 deletions(-)

diff --git a/app/api/mastodon/entities.rb b/app/api/mastodon/entities.rb @@ -1,17 +1,44 @@ module Mastodon module Entities class Account < Grape::Entity + include ApplicationHelper + + expose :id expose :username - expose :domain + + expose :domain do |account| + account.local? ? LOCAL_DOMAIN : account.domain + end + expose :display_name expose :note + + expose :url do |account| + account.local? ? profile_url(name: account.username) : account.url + end end class Status < Grape::Entity + include ApplicationHelper + format_with(:iso_timestamp) { |dt| dt.iso8601 } - expose :uri + expose :id + + expose :uri do |status| + status.local? ? unique_tag(status.stream_entry.created_at, status.stream_entry.activity_id, status.stream_entry.activity_type) : status.uri + end + + expose :url do |status| + status.local? ? status_url(name: status.account.username, id: status.id) : status.url + end + expose :text + expose :in_reply_to_id + + expose :reblog_of_id + expose :reblog, using: Mastodon::Entities::Status + expose :account, using: Mastodon::Entities::Account with_options(format_with: :iso_timestamp) do diff --git a/app/api/mastodon/rest.rb b/app/api/mastodon/rest.rb @@ -3,11 +3,11 @@ module Mastodon version 'v1', using: :path format :json - resource :statuses do + resource :timelines do desc 'Return a public timeline' - get :all do - present Status.all, with: Mastodon::Entities::Status + get :public do + # todo end desc 'Return the home timeline of a logged in user' diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb @@ -9,6 +9,11 @@ class PostStatusService < BaseService next unless local_account.nil? follow_remote_account_service.("acct:#{match.first}") end + + status.mentions.each do |mentioned_account| + next if mentioned_account.local? + send_interaction_service.(status.stream_entry, mentioned_account) + end end private @@ -16,4 +21,8 @@ class PostStatusService < BaseService def follow_remote_account_service @follow_remote_account_service ||= FollowRemoteAccountService.new end + + def send_interaction_service + @send_interaction_service ||= SendInteractionService.new + end end