From a22e0200f77dea682df4ad7b8359dcd21151efea Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com> Date: Wed, 22 Jan 2020 19:54:28 +0100 Subject: [PATCH] Revert: "Disable local timeline for fedibird.com" This reverts commit 5bd4ef68be201c68778242d817de52ce72c58131. --- app/javascript/mastodon/features/compose/index.js | 3 +++ .../mastodon/features/getting_started/index.js | 10 ++-------- app/javascript/mastodon/features/introduction/index.js | 5 +++++ .../mastodon/features/keyboard_shortcuts/index.js | 4 ++++ .../features/ui/components/navigation_panel.js | 1 + .../mastodon/features/ui/components/tabs_bar.js | 1 + app/javascript/mastodon/features/ui/index.js | 7 +++++++ app/javascript/mastodon/locales/en.json | 2 +- app/javascript/mastodon/locales/ja.json | 2 +- app/models/status.rb | 2 +- app/services/fan_out_on_write_service.rb | 2 ++ app/views/user_mailer/welcome.html.haml | 2 ++ app/views/user_mailer/welcome.text.erb | 1 + config/locales/en.yml | 2 +- config/locales/ja.yml | 2 +- 15 files changed, 33 insertions(+), 13 deletions(-) diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js index cad3f9b14b..1c15b216f7 100644 --- a/app/javascript/mastodon/features/compose/index.js +++ b/app/javascript/mastodon/features/compose/index.js @@ -105,6 +105,9 @@ class Compose extends React.PureComponent { {!columns.some(column => column.get('id') === 'NOTIFICATIONS') && ( <Link to='/notifications' className='drawer__tab' title={intl.formatMessage(messages.notifications)} aria-label={intl.formatMessage(messages.notifications)}><Icon id='bell' fixedWidth /></Link> )} + {!columns.some(column => column.get('id') === 'COMMUNITY') && ( + <Link to='/timelines/public/local' className='drawer__tab' title={intl.formatMessage(messages.community)} aria-label={intl.formatMessage(messages.community)}><Icon id='users' fixedWidth /></Link> + )} {!columns.some(column => column.get('id') === 'PUBLIC') && ( <Link to='/timelines/public' className='drawer__tab' title={intl.formatMessage(messages.public)} aria-label={intl.formatMessage(messages.public)}><Icon id='globe' fixedWidth /></Link> )} diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js index d9b246e688..7db344f09b 100644 --- a/app/javascript/mastodon/features/getting_started/index.js +++ b/app/javascript/mastodon/features/getting_started/index.js @@ -101,10 +101,11 @@ class GettingStarted extends ImmutablePureComponent { if (multiColumn) { navItems.push( <ColumnSubheading key={i++} text={intl.formatMessage(messages.discover)} />, + <ColumnLink key={i++} icon='users' text={intl.formatMessage(messages.community_timeline)} to='/timelines/public/local' />, <ColumnLink key={i++} icon='globe' text={intl.formatMessage(messages.public_timeline)} to='/timelines/public' />, ); - height += 34 + 48; + height += 34 + 48*2; if (profile_directory) { navItems.push( @@ -133,13 +134,6 @@ class GettingStarted extends ImmutablePureComponent { ); height += 48; - - navItems.push( - <ColumnLink key={i++} icon='info-circle' text={intl.formatMessage(messages.information_acct)} to='/accounts/2' />, - <ColumnLink key={i++} icon='hashtag' text={intl.formatMessage(messages.hashtag_qoto_journal)} to='/timelines/tag/QotoJornal' />, - ); - - height += 48*2; } navItems.push( diff --git a/app/javascript/mastodon/features/introduction/index.js b/app/javascript/mastodon/features/introduction/index.js index a961d3b976..754477bb99 100644 --- a/app/javascript/mastodon/features/introduction/index.js +++ b/app/javascript/mastodon/features/introduction/index.js @@ -44,6 +44,11 @@ const FrameFederation = ({ onNext }) => ( <p><FormattedMessage id='introduction.federation.home.text' defaultMessage='Posts from people you follow will appear in your home feed. You can follow anyone on any server!' /></p> </div> + <div> + <h3><FormattedMessage id='introduction.federation.local.headline' defaultMessage='Local' /></h3> + <p><FormattedMessage id='introduction.federation.local.text' defaultMessage='Public posts from people on the same server as you will appear in the local timeline.' /></p> + </div> + <div> <h3><FormattedMessage id='introduction.federation.federated.headline' defaultMessage='Federated' /></h3> <p><FormattedMessage id='introduction.federation.federated.text' defaultMessage='Public posts from other servers of the fediverse will appear in the federated timeline.' /></p> diff --git a/app/javascript/mastodon/features/keyboard_shortcuts/index.js b/app/javascript/mastodon/features/keyboard_shortcuts/index.js index 64889bcd4e..666baf621f 100644 --- a/app/javascript/mastodon/features/keyboard_shortcuts/index.js +++ b/app/javascript/mastodon/features/keyboard_shortcuts/index.js @@ -108,6 +108,10 @@ class KeyboardShortcuts extends ImmutablePureComponent { <td><kbd>g</kbd>+<kbd>n</kbd></td> <td><FormattedMessage id='keyboard_shortcuts.notifications' defaultMessage='to open notifications column' /></td> </tr> + <tr> + <td><kbd>g</kbd>+<kbd>l</kbd></td> + <td><FormattedMessage id='keyboard_shortcuts.local' defaultMessage='to open local timeline' /></td> + </tr> <tr> <td><kbd>g</kbd>+<kbd>t</kbd></td> <td><FormattedMessage id='keyboard_shortcuts.federated' defaultMessage='to open federated timeline' /></td> diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js index 3e85fffd96..f620586661 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.js +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js @@ -14,6 +14,7 @@ const NavigationPanel = () => ( <NavLink className='column-link column-link--transparent' to='/timelines/home' data-preview-title-id='column.home' data-preview-icon='home' ><Icon className='column-link__icon' id='home' fixedWidth /><FormattedMessage id='tabs_bar.home' defaultMessage='Home' /></NavLink> <NavLink className='column-link column-link--transparent' to='/notifications' data-preview-title-id='column.notifications' data-preview-icon='bell' ><NotificationsCounterIcon className='column-link__icon' /><FormattedMessage id='tabs_bar.notifications' defaultMessage='Notifications' /></NavLink> <FollowRequestsNavLink /> + <NavLink className='column-link column-link--transparent' to='/timelines/public/local' data-preview-title-id='column.community' data-preview-icon='users' ><Icon className='column-link__icon' id='users' fixedWidth /><FormattedMessage id='tabs_bar.local_timeline' defaultMessage='Local' /></NavLink> <NavLink className='column-link column-link--transparent' exact to='/timelines/public' data-preview-title-id='column.public' data-preview-icon='globe' ><Icon className='column-link__icon' id='globe' fixedWidth /><FormattedMessage id='tabs_bar.federated_timeline' defaultMessage='Federated' /></NavLink> <NavLink className='column-link column-link--transparent' to='/accounts/95378'><Icon className='column-link__icon' id='info-circle' fixedWidth /><FormattedMessage id='navigation_bar.information_acct' defaultMessage='Qoto info' /></NavLink> <NavLink className='column-link column-link--transparent' to='/timelines/tag/QotoJournal'><Icon className='column-link__icon' id='hashtag' fixedWidth /><FormattedMessage id='navigation_bar.hashtag_qoto_journal' defaultMessage='Qoto Journal' /></NavLink> diff --git a/app/javascript/mastodon/features/ui/components/tabs_bar.js b/app/javascript/mastodon/features/ui/components/tabs_bar.js index e5ad199499..1e53dd8aa0 100644 --- a/app/javascript/mastodon/features/ui/components/tabs_bar.js +++ b/app/javascript/mastodon/features/ui/components/tabs_bar.js @@ -10,6 +10,7 @@ import NotificationsCounterIcon from './notifications_counter_icon'; export const links = [ <NavLink className='tabs-bar__link' to='/timelines/home' data-preview-title-id='column.home' data-preview-icon='home' ><Icon id='home' fixedWidth /><FormattedMessage id='tabs_bar.home' defaultMessage='Home' /></NavLink>, <NavLink className='tabs-bar__link' to='/notifications' data-preview-title-id='column.notifications' data-preview-icon='bell' ><NotificationsCounterIcon /><FormattedMessage id='tabs_bar.notifications' defaultMessage='Notifications' /></NavLink>, + <NavLink className='tabs-bar__link' to='/timelines/public/local' data-preview-title-id='column.community' data-preview-icon='users' ><Icon id='users' fixedWidth /><FormattedMessage id='tabs_bar.local_timeline' defaultMessage='Local' /></NavLink>, <NavLink className='tabs-bar__link' exact to='/timelines/public' data-preview-title-id='column.public' data-preview-icon='globe' ><Icon id='globe' fixedWidth /><FormattedMessage id='tabs_bar.federated_timeline' defaultMessage='Federated' /></NavLink>, <NavLink className='tabs-bar__link' exact to='/lists' data-preview-title-id='column.lists' data-preview-icon='list-ul' ><Icon id='list-ul' fixedWidth /><FormattedMessage id='tabs_bar.lists' defaultMessage='Lists' /></NavLink>, <NavLink className='tabs-bar__link optional' to='/search' data-preview-title-id='tabs_bar.search' data-preview-icon='bell' ><Icon id='search' fixedWidth /><FormattedMessage id='tabs_bar.search' defaultMessage='Search' /></NavLink>, diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js index 04c843534f..ea77144260 100644 --- a/app/javascript/mastodon/features/ui/index.js +++ b/app/javascript/mastodon/features/ui/index.js @@ -90,6 +90,7 @@ const keyMap = { back: 'backspace', goToHome: 'g h', goToNotifications: 'g n', + goToLocal: 'g l', goToFederated: 'g t', goToDirect: 'g d', goToStart: 'g s', @@ -187,6 +188,7 @@ class SwitchingColumnsArea extends React.PureComponent { <WrappedRoute path='/timelines/home' component={HomeTimeline} content={children} componentParams={{ shouldUpdateScroll: this.shouldUpdateScroll }} /> <WrappedRoute path='/timelines/public' exact component={PublicTimeline} content={children} componentParams={{ shouldUpdateScroll: this.shouldUpdateScroll }} /> <WrappedRoute path='/timelines/public/remote/:domain' exact component={DomainTimeline} content={children} componentParams={{ shouldUpdateScroll: this.shouldUpdateScroll }} /> + <WrappedRoute path='/timelines/public/local' exact component={CommunityTimeline} content={children} componentParams={{ shouldUpdateScroll: this.shouldUpdateScroll }} /> <WrappedRoute path='/timelines/direct' component={DirectTimeline} content={children} componentParams={{ shouldUpdateScroll: this.shouldUpdateScroll }} /> <WrappedRoute path='/timelines/tag/:id' component={HashtagTimeline} content={children} componentParams={{ shouldUpdateScroll: this.shouldUpdateScroll }} /> <WrappedRoute path='/timelines/list/:id' component={ListTimeline} content={children} componentParams={{ shouldUpdateScroll: this.shouldUpdateScroll }} /> @@ -467,6 +469,10 @@ class UI extends React.PureComponent { this.context.router.history.push('/notifications'); } + handleHotkeyGoToLocal = () => { + this.context.router.history.push('/timelines/public/local'); + } + handleHotkeyGoToFederated = () => { this.context.router.history.push('/timelines/public'); } @@ -516,6 +522,7 @@ class UI extends React.PureComponent { back: this.handleHotkeyBack, goToHome: this.handleHotkeyGoToHome, goToNotifications: this.handleHotkeyGoToNotifications, + goToLocal: this.handleHotkeyGoToLocal, goToFederated: this.handleHotkeyGoToFederated, goToDirect: this.handleHotkeyGoToDirect, goToStart: this.handleHotkeyGoToStart, diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index cc72d9896b..b7031404b3 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -200,7 +200,7 @@ "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", "introduction.federation.action": "Next", "introduction.federation.federated.headline": "Federated", - "introduction.federation.federated.text": "Public posts from various Fediverse servers are displayed on the federation timeline.", + "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", "introduction.federation.home.headline": "Home", "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", "introduction.federation.local.headline": "Local", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index e832640c02..4e9e3ca3ae 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -200,7 +200,7 @@ "intervals.full.minutes": "{number}分", "introduction.federation.action": "次ã¸", "introduction.federation.federated.headline": "連åˆã‚¿ã‚¤ãƒ ライン", - "introduction.federation.federated.text": "Fediverseã®æ§˜ã€…ãªã‚µãƒ¼ãƒãƒ¼ã‹ã‚‰ã®å…¬é–‹æŠ•稿ãŒé€£åˆã‚¿ã‚¤ãƒ ラインã«è¡¨ç¤ºã•れã¾ã™ã€‚", + "introduction.federation.federated.text": "Fediverseã®ä»–ã®ã‚µãƒ¼ãƒãƒ¼ã‹ã‚‰ã®å…¬é–‹æŠ•稿ã¯é€£åˆã‚¿ã‚¤ãƒ ラインã«è¡¨ç¤ºã•れã¾ã™ã€‚", "introduction.federation.home.headline": "ホームタイムライン", "introduction.federation.home.text": "フォãƒãƒ¼ã—ã¦ã„ã‚‹äººã€…ã®æŠ•ç¨¿ã¯ãƒ›ãƒ¼ãƒ タイムラインã«è¡¨ç¤ºã•れã¾ã™ã€‚ã©ã“ã®ã‚µãƒ¼ãƒãƒ¼ã®èª°ã§ã‚‚フォãƒãƒ¼ã§ãã¾ã™ï¼", "introduction.federation.local.headline": "ãƒãƒ¼ã‚«ãƒ«ã‚¿ã‚¤ãƒ ライン", diff --git a/app/models/status.rb b/app/models/status.rb index 53a4fb5af9..7c7296b150 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -400,7 +400,7 @@ class Status < ApplicationRecord private def timeline_scope(local_only = false) - starting_scope = local_only ? Status.none : Status + starting_scope = local_only ? Status.local : Status starting_scope .with_public_visibility .without_reblogs diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index e03ed4ab78..3388054bac 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -190,6 +190,7 @@ class FanOutOnWriteService < BaseService Redis.current.publish('timeline:public', @payload) Redis.current.publish("timeline:public:remote:#{status.account.domain.mb_chars.downcase}", @payload) unless status.local? + Redis.current.publish('timeline:public:local', @payload) if status.local? end def deliver_to_media(status) @@ -197,6 +198,7 @@ class FanOutOnWriteService < BaseService Redis.current.publish('timeline:public:media', @payload) Redis.current.publish("timeline:public:remote:media:#{status.account.domain.mb_chars.downcase}", @payload) unless status.local? + Redis.current.publish('timeline:public:local:media', @payload) if status.local? end def deliver_to_own_conversation(status) diff --git a/app/views/user_mailer/welcome.html.haml b/app/views/user_mailer/welcome.html.haml index 6f5cfb6932..1f75ff48ae 100644 --- a/app/views/user_mailer/welcome.html.haml +++ b/app/views/user_mailer/welcome.html.haml @@ -138,5 +138,7 @@ %span= t 'user_mailer.welcome.tip_mobile_webapp' %li %span= t 'user_mailer.welcome.tip_following' + %li + %span= t 'user_mailer.welcome.tip_local_timeline', instance: @instance %li %span= t 'user_mailer.welcome.tip_federated_timeline' diff --git a/app/views/user_mailer/welcome.text.erb b/app/views/user_mailer/welcome.text.erb index 1bf7fbf450..e310d7ca6f 100644 --- a/app/views/user_mailer/welcome.text.erb +++ b/app/views/user_mailer/welcome.text.erb @@ -25,4 +25,5 @@ * <%= t 'user_mailer.welcome.tip_mobile_webapp' %> * <%= t 'user_mailer.welcome.tip_following' %> +* <%= t 'user_mailer.welcome.tip_local_timeline', instance: @instance %> * <%= t 'user_mailer.welcome.tip_federated_timeline' %> diff --git a/config/locales/en.yml b/config/locales/en.yml index d735e73a5f..da47151973 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1315,7 +1315,7 @@ en: edit_profile_step: You can customize your profile by uploading an avatar, header, changing your display name and more. If you’d like to review new followers before they’re allowed to follow you, you can lock your account. explanation: Here are some tips to get you started final_action: Start posting - final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the federation timeline and in hashtags. You may want to introduce yourself on the #Introduction hashtag or share professional work via the #QotoJournal hashtag.' + final_step: 'Start posting! Even without followers your public messages may be seen by others, for example on the federated timeline, local timeline, and in hashtags. You may want to introduce yourself on the #Introduction hashtag or share professional work via the #QotoJournal hashtag.' full_handle: Your full handle full_handle_hint: This is what you would tell your friends so they can message or follow you from another server. review_preferences_action: Change preferences diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 49b6af76e5..f4e265f01a 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1271,7 +1271,7 @@ ja: edit_profile_step: アイコンやヘッダーã®ç”»åƒã‚’アップãƒãƒ¼ãƒ‰ã—ãŸã‚Šã€è¡¨ç¤ºåを変更ã—ãŸã‚Šã—ã¦ã€è‡ªåˆ†ã®ãƒ—ãƒãƒ•ィールをカスタマイズã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã¾ãŸã€èª°ã‹ã‹ã‚‰ã®æ–°è¦ãƒ•ã‚©ãƒãƒ¼ã‚’許å¯ã™ã‚‹å‰ã«ãã®äººã®æ§˜åを見ã¦ãŠããŸã„å ´åˆã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’承èªåˆ¶ã«ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ explanation: å§‹ã‚ã‚‹ã«ã‚ãŸã£ã¦ã®ã‚¢ãƒ‰ãƒã‚¤ã‚¹ã§ã™ final_action: å§‹ã‚ã¾ã—ょㆠ- final_step: 'ã•ã‚ã€å§‹ã‚ã¾ã—ょã†ï¼ ãŸã¨ãˆãƒ•ã‚©ãƒãƒ¯ãƒ¼ãŒã¾ã ã„ãªãã¦ã‚‚ã€ã‚ãªãŸã®å…¬é–‹ã—ãŸæŠ•ç¨¿ã¯é€£åˆã‚¿ã‚¤ãƒ ラインやãƒãƒƒã‚·ãƒ¥ã‚¿ã‚°ãªã©ã‚’通ã˜ã¦èª°ã‹ã®ç›®ã«ã¨ã¾ã‚‹ã¯ãšã§ã™ã€‚自己紹介をã—ãŸã„ã¨ãã«ã¯ #qoto ãƒãƒƒã‚·ãƒ¥ã‚¿ã‚°ãŒä¾¿åˆ©ã‹ã‚‚ã—れã¾ã›ã‚“。' + final_step: 'ã•ã‚ã€å§‹ã‚ã¾ã—ょã†ï¼ ãŸã¨ãˆãƒ•ã‚©ãƒãƒ¯ãƒ¼ãŒã¾ã ã„ãªãã¦ã‚‚ã€ã‚ãªãŸã®å…¬é–‹ã—ãŸæŠ•ç¨¿ã¯ãƒãƒ¼ã‚«ãƒ«ã‚¿ã‚¤ãƒ ラインやãƒãƒƒã‚·ãƒ¥ã‚¿ã‚°ãªã©ã‚’通ã˜ã¦èª°ã‹ã®ç›®ã«ã¨ã¾ã‚‹ã¯ãšã§ã™ã€‚自己紹介をã—ãŸã„ã¨ãã«ã¯ #introductions ãƒãƒƒã‚·ãƒ¥ã‚¿ã‚°ãŒä¾¿åˆ©ã‹ã‚‚ã—れã¾ã›ã‚“。' full_handle: ã‚ãªãŸã®æ£å¼ãªãƒ¦ãƒ¼ã‚¶ãƒ¼ID full_handle_hint: 別ã®ã‚µãƒ¼ãƒãƒ¼ã®å‹é”ã¨ãƒ•ã‚©ãƒãƒ¼ã‚„メッセージをやりå–りã™ã‚‹éš›ã«ã¯ã€ã“れをä¼ãˆã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ review_preferences_action: è¨å®šã®å¤‰æ›´ -- GitLab