Merge commit '39b22ba91b
' into kb_migration
This commit is contained in:
commit
06f0656a7b
9 changed files with 58 additions and 38 deletions
|
@ -47,6 +47,12 @@ class NavigationPanel extends Component {
|
||||||
const { intl } = this.props;
|
const { intl } = this.props;
|
||||||
const { signedIn, disabledAccountId } = this.context.identity;
|
const { signedIn, disabledAccountId } = this.context.identity;
|
||||||
|
|
||||||
|
const explorer = (showTrends ? (
|
||||||
|
<ColumnLink transparent to='/explore' icon='hashtag' text={intl.formatMessage(messages.explore)} />
|
||||||
|
) : (
|
||||||
|
<ColumnLink transparent to='/search' icon='search' text={intl.formatMessage(messages.search)} />
|
||||||
|
));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='navigation-panel'>
|
<div className='navigation-panel'>
|
||||||
<div className='navigation-panel__logo'>
|
<div className='navigation-panel__logo'>
|
||||||
|
@ -55,18 +61,10 @@ class NavigationPanel extends Component {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{signedIn && (
|
{signedIn && (
|
||||||
<>
|
|
||||||
<ColumnLink transparent to='/home' icon='home' text={intl.formatMessage(messages.home)} />
|
<ColumnLink transparent to='/home' icon='home' text={intl.formatMessage(messages.home)} />
|
||||||
<ColumnLink transparent to='/notifications' icon={<NotificationsCounterIcon className='column-link__icon' />} text={intl.formatMessage(messages.notifications)} />
|
|
||||||
<FollowRequestsColumnLink />
|
|
||||||
</>
|
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{showTrends ? (
|
{!signedIn && explorer}
|
||||||
<ColumnLink transparent to='/explore' icon='hashtag' text={intl.formatMessage(messages.explore)} />
|
|
||||||
) : (
|
|
||||||
<ColumnLink transparent to='/search' icon='search' text={intl.formatMessage(messages.search)} />
|
|
||||||
)}
|
|
||||||
|
|
||||||
{(signedIn || timelinePreview) && (
|
{(signedIn || timelinePreview) && (
|
||||||
<>
|
<>
|
||||||
|
@ -75,6 +73,34 @@ class NavigationPanel extends Component {
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{signedIn && (
|
||||||
|
<>
|
||||||
|
<ListPanel />
|
||||||
|
<hr />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{signedIn && (
|
||||||
|
<>
|
||||||
|
<ColumnLink transparent to='/notifications' icon={<NotificationsCounterIcon className='column-link__icon' />} text={intl.formatMessage(messages.notifications)} />
|
||||||
|
<FollowRequestsColumnLink />
|
||||||
|
<ColumnLink transparent to='/conversations' icon='at' text={intl.formatMessage(messages.direct)} />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{signedIn && explorer}
|
||||||
|
|
||||||
|
{signedIn && (
|
||||||
|
<>
|
||||||
|
<ColumnLink transparent to='/bookmarks' icon='bookmark' text={intl.formatMessage(messages.bookmarks)} />
|
||||||
|
<ColumnLink transparent to='/favourites' icon='star' text={intl.formatMessage(messages.favourites)} />
|
||||||
|
<ColumnLink transparent to='/lists' icon='list-ul' text={intl.formatMessage(messages.lists)} />
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<ColumnLink transparent href='/settings/preferences' icon='cog' text={intl.formatMessage(messages.preferences)} />
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
{!signedIn && (
|
{!signedIn && (
|
||||||
<div className='navigation-panel__sign-in-banner'>
|
<div className='navigation-panel__sign-in-banner'>
|
||||||
<hr />
|
<hr />
|
||||||
|
@ -82,21 +108,6 @@ class NavigationPanel extends Component {
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{signedIn && (
|
|
||||||
<>
|
|
||||||
<ColumnLink transparent to='/conversations' icon='at' text={intl.formatMessage(messages.direct)} />
|
|
||||||
<ColumnLink transparent to='/bookmarks' icon='bookmark' text={intl.formatMessage(messages.bookmarks)} />
|
|
||||||
<ColumnLink transparent to='/favourites' icon='star' text={intl.formatMessage(messages.favourites)} />
|
|
||||||
<ColumnLink transparent to='/lists' icon='list-ul' text={intl.formatMessage(messages.lists)} />
|
|
||||||
|
|
||||||
<ListPanel />
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
<ColumnLink transparent href='/settings/preferences' icon='cog' text={intl.formatMessage(messages.preferences)} />
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<div className='navigation-panel__legal'>
|
<div className='navigation-panel__legal'>
|
||||||
<hr />
|
<hr />
|
||||||
<ColumnLink transparent to='/about' icon='ellipsis-h' text={intl.formatMessage(messages.about)} />
|
<ColumnLink transparent to='/about' icon='ellipsis-h' text={intl.formatMessage(messages.about)} />
|
||||||
|
|
|
@ -526,7 +526,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
|
||||||
:public
|
:public
|
||||||
elsif audience_cc.any? { |cc| ActivityPub::TagManager.instance.public_collection?(cc) }
|
elsif audience_cc.any? { |cc| ActivityPub::TagManager.instance.public_collection?(cc) }
|
||||||
:unlisted
|
:unlisted
|
||||||
elsif audience_cc.include?('as:LoginOnly')
|
elsif audience_to.include?('as:LoginOnly') || audience_to.include?('LoginUser')
|
||||||
:login
|
:login
|
||||||
elsif audience_to.include?(@account.followers_url)
|
elsif audience_to.include?(@account.followers_url)
|
||||||
:private
|
:private
|
||||||
|
|
|
@ -77,7 +77,7 @@ class ActivityPub::Parser::StatusParser
|
||||||
:public
|
:public
|
||||||
elsif audience_cc.any? { |cc| ActivityPub::TagManager.instance.public_collection?(cc) }
|
elsif audience_cc.any? { |cc| ActivityPub::TagManager.instance.public_collection?(cc) }
|
||||||
:unlisted
|
:unlisted
|
||||||
elsif audience_cc.include?('as:LoginOnly')
|
elsif audience_to.include?('as:LoginOnly') || audience_to.include?('LoginUser')
|
||||||
:login
|
:login
|
||||||
elsif audience_to.include?(@magic_values[:followers_collection])
|
elsif audience_to.include?(@magic_values[:followers_collection])
|
||||||
:private
|
:private
|
||||||
|
|
|
@ -90,8 +90,10 @@ class ActivityPub::TagManager
|
||||||
case status.visibility
|
case status.visibility
|
||||||
when 'public'
|
when 'public'
|
||||||
[COLLECTIONS[:public]]
|
[COLLECTIONS[:public]]
|
||||||
when 'unlisted', 'public_unlisted', 'login', 'private'
|
when 'unlisted', 'public_unlisted', 'private'
|
||||||
[account_followers_url(status.account)]
|
[account_followers_url(status.account)]
|
||||||
|
when 'login'
|
||||||
|
[account_followers_url(status.account), 'as:LoginOnly', 'LoginUser']
|
||||||
when 'direct', 'limited'
|
when 'direct', 'limited'
|
||||||
if status.account.silenced?
|
if status.account.silenced?
|
||||||
# Only notify followers if the account is locally silenced
|
# Only notify followers if the account is locally silenced
|
||||||
|
@ -128,8 +130,6 @@ class ActivityPub::TagManager
|
||||||
cc << account_followers_url(status.account)
|
cc << account_followers_url(status.account)
|
||||||
when 'unlisted', 'public_unlisted'
|
when 'unlisted', 'public_unlisted'
|
||||||
cc << COLLECTIONS[:public]
|
cc << COLLECTIONS[:public]
|
||||||
when 'login'
|
|
||||||
cc << 'as:LoginOnly'
|
|
||||||
end
|
end
|
||||||
|
|
||||||
cc + cc_private_visibility(status)
|
cc + cc_private_visibility(status)
|
||||||
|
|
|
@ -86,7 +86,7 @@ class Account < ApplicationRecord
|
||||||
|
|
||||||
enum protocol: { ostatus: 0, activitypub: 1 }
|
enum protocol: { ostatus: 0, activitypub: 1 }
|
||||||
enum suspension_origin: { local: 0, remote: 1 }, _prefix: true
|
enum suspension_origin: { local: 0, remote: 1 }, _prefix: true
|
||||||
enum searchability: { public: 0, unlisted: 1, private: 2, direct: 3, limited: 4, public_unlisted: 10 }, _suffix: :searchability
|
enum searchability: { public: 0, private: 1, direct: 2, limited: 3, unsupported: 4, public_unlisted: 10 }, _suffix: :searchability
|
||||||
|
|
||||||
validates :username, presence: true
|
validates :username, presence: true
|
||||||
validates_with UniqueUsernameValidator, if: -> { will_save_change_to_username? }
|
validates_with UniqueUsernameValidator, if: -> { will_save_change_to_username? }
|
||||||
|
|
|
@ -53,7 +53,7 @@ class Status < ApplicationRecord
|
||||||
update_index('statuses', :proper)
|
update_index('statuses', :proper)
|
||||||
|
|
||||||
enum visibility: { public: 0, unlisted: 1, private: 2, direct: 3, limited: 4, public_unlisted: 10, login: 11 }, _suffix: :visibility
|
enum visibility: { public: 0, unlisted: 1, private: 2, direct: 3, limited: 4, public_unlisted: 10, login: 11 }, _suffix: :visibility
|
||||||
enum searchability: { public: 0, private: 1, direct: 2, limited: 3, public_unlisted: 10 }, _suffix: :searchability
|
enum searchability: { public: 0, private: 1, direct: 2, limited: 3, unsupported: 4, public_unlisted: 10 }, _suffix: :searchability
|
||||||
|
|
||||||
belongs_to :application, class_name: 'Doorkeeper::Application', optional: true
|
belongs_to :application, class_name: 'Doorkeeper::Application', optional: true
|
||||||
|
|
||||||
|
@ -387,8 +387,9 @@ class Status < ApplicationRecord
|
||||||
# Fedibird code
|
# Fedibird code
|
||||||
# searchability || Status.searchabilities.invert.fetch([Account.searchabilities[account.searchability], Status.visibilities[visibility] || 0].max, nil) || 'direct'
|
# searchability || Status.searchabilities.invert.fetch([Account.searchabilities[account.searchability], Status.visibilities[visibility] || 0].max, nil) || 'direct'
|
||||||
# Reactions only (generic: direct)
|
# Reactions only (generic: direct)
|
||||||
|
return 'direct' if searchability && unsupported_searchability?
|
||||||
return searchability if searchability
|
return searchability if searchability
|
||||||
return account.searchability if account.local? && account.searchability
|
return account.searchability if account.local? && account.searchability && !account.unsupported_searchability?
|
||||||
|
|
||||||
'direct'
|
'direct'
|
||||||
end
|
end
|
||||||
|
@ -526,7 +527,15 @@ class Status < ApplicationRecord
|
||||||
def set_searchability
|
def set_searchability
|
||||||
return if searchability.nil?
|
return if searchability.nil?
|
||||||
|
|
||||||
self.searchability = [Status.searchabilities[searchability], Status.visibilities[visibility == 'public_unlisted' || visibility == 'login' ? 'public' : visibility]].max
|
if visibility == 'public' || visibility == 'public_unlisted' || visibility == 'login'
|
||||||
|
self.searchability = [Status.searchabilities[searchability], Status.visibilities['public']].max
|
||||||
|
elsif visibility == 'limited'
|
||||||
|
self.searchability = Status.searchabilities['limited']
|
||||||
|
else
|
||||||
|
s = [Status.searchabilities[searchability], Status.visibilities[visibility]].max
|
||||||
|
s = [s, 3].max
|
||||||
|
self.searchability = s
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_conversation
|
def set_conversation
|
||||||
|
|
|
@ -5,7 +5,7 @@ class REST::AccountSerializer < ActiveModel::Serializer
|
||||||
include FormattingHelper
|
include FormattingHelper
|
||||||
|
|
||||||
attributes :id, :username, :acct, :display_name, :locked, :bot, :discoverable, :group, :created_at,
|
attributes :id, :username, :acct, :display_name, :locked, :bot, :discoverable, :group, :created_at,
|
||||||
:note, :url, :avatar, :avatar_static, :header, :header_static, :searchability, :subscribable,
|
:note, :url, :avatar, :avatar_static, :header, :header_static, :subscribable,
|
||||||
:followers_count, :following_count, :statuses_count, :last_status_at, :other_settings,
|
:followers_count, :following_count, :statuses_count, :last_status_at, :other_settings,
|
||||||
:noindex
|
:noindex
|
||||||
|
|
||||||
|
|
|
@ -246,9 +246,9 @@ class ActivityPub::ProcessAccountService < BaseService
|
||||||
if audience_searchable_by.any? { |uri| ActivityPub::TagManager.instance.public_collection?(uri) }
|
if audience_searchable_by.any? { |uri| ActivityPub::TagManager.instance.public_collection?(uri) }
|
||||||
:public
|
:public
|
||||||
elsif audience_searchable_by.include?(@account.followers_url)
|
elsif audience_searchable_by.include?(@account.followers_url)
|
||||||
:unlisted # Followers only in kmyblue (generics: private)
|
:private # Followers only in kmyblue (generics: private)
|
||||||
else
|
else
|
||||||
:private # Reaction only in kmyblue (generics: direct)
|
:direct # Reaction only in kmyblue (generics: direct)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -234,7 +234,7 @@ class FanOutOnWriteService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
def broadcastable?
|
def broadcastable?
|
||||||
@status.public_visibility? && !@status.reblog? && !@account.silenced?
|
(@status.public_visibility? || @status.login_visibility?) && !@status.reblog? && !@account.silenced?
|
||||||
end
|
end
|
||||||
|
|
||||||
def broadcastable_unlisted?
|
def broadcastable_unlisted?
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue