@@ -36,6 +36,11 @@
|
||||
# followers_count :integer default(0), not null
|
||||
# following_count :integer default(0), not null
|
||||
# last_webfingered_at :datetime
|
||||
# inbox_url :string default(""), not null
|
||||
# outbox_url :string default(""), not null
|
||||
# shared_inbox_url :string default(""), not null
|
||||
# followers_url :string default(""), not null
|
||||
# protocol :integer default("ostatus"), not null
|
||||
#
|
||||
|
||||
class Account < ApplicationRecord
|
||||
@@ -49,6 +54,8 @@ class Account < ApplicationRecord
|
||||
include Remotable
|
||||
include EmojiHelper
|
||||
|
||||
enum protocol: [:ostatus, :activitypub]
|
||||
|
||||
# Local users
|
||||
has_one :user, inverse_of: :account
|
||||
|
||||
|
||||
@@ -26,8 +26,6 @@ class Web::PushSubscription < ApplicationRecord
|
||||
before_create :send_welcome_notification
|
||||
|
||||
def push(notification)
|
||||
return unless pushable? notification
|
||||
|
||||
name = display_name notification.from_account
|
||||
title = title_str(name, notification)
|
||||
body = body_str notification
|
||||
@@ -45,7 +43,7 @@ class Web::PushSubscription < ApplicationRecord
|
||||
title: title,
|
||||
dir: dir,
|
||||
image: image,
|
||||
badge: full_asset_url('badge.png'),
|
||||
badge: full_asset_url('badge.png', skip_pipeline: true),
|
||||
tag: notification.id,
|
||||
timestamp: notification.created_at,
|
||||
icon: notification.from_account.avatar_static_url,
|
||||
@@ -69,6 +67,10 @@ class Web::PushSubscription < ApplicationRecord
|
||||
)
|
||||
end
|
||||
|
||||
def pushable?(notification)
|
||||
data && data.key?('alerts') && data['alerts'][notification.type.to_s]
|
||||
end
|
||||
|
||||
def as_payload
|
||||
payload = {
|
||||
id: id,
|
||||
@@ -115,7 +117,7 @@ class Web::PushSubscription < ApplicationRecord
|
||||
when :mention then [
|
||||
{
|
||||
title: translate('push_notifications.mention.action_favourite'),
|
||||
icon: full_asset_url('emoji/2764.png'),
|
||||
icon: full_asset_url('emoji/2764.png', skip_pipeline: true),
|
||||
todo: 'request',
|
||||
method: 'POST',
|
||||
action: "/api/v1/statuses/#{notification.target_status.id}/favourite",
|
||||
@@ -148,16 +150,12 @@ class Web::PushSubscription < ApplicationRecord
|
||||
rtl?(body) ? 'rtl' : 'ltr'
|
||||
end
|
||||
|
||||
def pushable?(notification)
|
||||
data && data.key?('alerts') && data['alerts'][notification.type.to_s]
|
||||
end
|
||||
|
||||
def send_welcome_notification
|
||||
Webpush.payload_send(
|
||||
message: JSON.generate(
|
||||
title: translate('push_notifications.subscribed.title'),
|
||||
icon: full_asset_url('android-chrome-192x192.png'),
|
||||
badge: full_asset_url('badge.png'),
|
||||
icon: full_asset_url('android-chrome-192x192.png', skip_pipeline: true),
|
||||
badge: full_asset_url('badge.png', skip_pipeline: true),
|
||||
data: {
|
||||
content: translate('push_notifications.subscribed.body'),
|
||||
actions: [],
|
||||
|
||||
Reference in New Issue
Block a user