From 2259949e9bfba621a9ac50c9405b3f8b17688c54 Mon Sep 17 00:00:00 2001 From: Claire Date: Sun, 24 Nov 2024 19:48:17 +0100 Subject: [PATCH] Remove pinned accounts editor It was utterly broken and the underlying modals are getting redesigned --- .../flavours/glitch/actions/accounts.js | 106 +----------------- .../features/getting_started_misc/index.jsx | 10 -- .../containers/account_container.js | 25 ----- .../containers/search_container.js | 24 ---- .../features/pinned_accounts_editor/index.jsx | 82 -------------- .../features/ui/components/modal_root.jsx | 2 - .../features/ui/util/async-components.js | 4 - .../flavours/glitch/locales/en.json | 2 - .../flavours/glitch/reducers/index.ts | 2 - .../glitch/reducers/pinned_accounts_editor.js | 58 ---------- 10 files changed, 1 insertion(+), 314 deletions(-) delete mode 100644 app/javascript/flavours/glitch/features/pinned_accounts_editor/containers/account_container.js delete mode 100644 app/javascript/flavours/glitch/features/pinned_accounts_editor/containers/search_container.js delete mode 100644 app/javascript/flavours/glitch/features/pinned_accounts_editor/index.jsx delete mode 100644 app/javascript/flavours/glitch/reducers/pinned_accounts_editor.js diff --git a/app/javascript/flavours/glitch/actions/accounts.js b/app/javascript/flavours/glitch/actions/accounts.js index e8f81048a6..513b9e24a9 100644 --- a/app/javascript/flavours/glitch/actions/accounts.js +++ b/app/javascript/flavours/glitch/actions/accounts.js @@ -74,19 +74,6 @@ export const FOLLOW_REQUEST_AUTHORIZE_FAIL = 'FOLLOW_REQUEST_AUTHORIZE_FAIL'; export const FOLLOW_REQUEST_REJECT_REQUEST = 'FOLLOW_REQUEST_REJECT_REQUEST'; export const FOLLOW_REQUEST_REJECT_FAIL = 'FOLLOW_REQUEST_REJECT_FAIL'; -export const PINNED_ACCOUNTS_FETCH_REQUEST = 'PINNED_ACCOUNTS_FETCH_REQUEST'; -export const PINNED_ACCOUNTS_FETCH_SUCCESS = 'PINNED_ACCOUNTS_FETCH_SUCCESS'; -export const PINNED_ACCOUNTS_FETCH_FAIL = 'PINNED_ACCOUNTS_FETCH_FAIL'; - -export const PINNED_ACCOUNTS_SUGGESTIONS_FETCH_REQUEST = 'PINNED_ACCOUNTS_SUGGESTIONS_FETCH_REQUEST'; -export const PINNED_ACCOUNTS_SUGGESTIONS_FETCH_SUCCESS = 'PINNED_ACCOUNTS_SUGGESTIONS_FETCH_SUCCESS'; -export const PINNED_ACCOUNTS_SUGGESTIONS_FETCH_FAIL = 'PINNED_ACCOUNTS_SUGGESTIONS_FETCH_FAIL'; - -export const PINNED_ACCOUNTS_EDITOR_SUGGESTIONS_CLEAR = 'PINNED_ACCOUNTS_EDITOR_SUGGESTIONS_CLEAR'; -export const PINNED_ACCOUNTS_EDITOR_SUGGESTIONS_CHANGE = 'PINNED_ACCOUNTS_EDITOR_SUGGESTIONS_CHANGE'; - -export const PINNED_ACCOUNTS_EDITOR_RESET = 'PINNED_ACCOUNTS_EDITOR_RESET'; - export const ACCOUNT_REVEAL = 'ACCOUNT_REVEAL'; export * from './accounts_typed'; @@ -686,38 +673,6 @@ export function unpinAccountFail(error) { }; } -export function fetchPinnedAccounts() { - return (dispatch) => { - dispatch(fetchPinnedAccountsRequest()); - - api().get('/api/v1/endorsements', { params: { limit: 0 } }).then(response => { - dispatch(importFetchedAccounts(response.data)); - dispatch(fetchPinnedAccountsSuccess(response.data)); - }).catch(err => dispatch(fetchPinnedAccountsFail(err))); - }; -} - -export function fetchPinnedAccountsRequest() { - return { - type: PINNED_ACCOUNTS_FETCH_REQUEST, - }; -} - -export function fetchPinnedAccountsSuccess(accounts, next) { - return { - type: PINNED_ACCOUNTS_FETCH_SUCCESS, - accounts, - next, - }; -} - -export function fetchPinnedAccountsFail(error) { - return { - type: PINNED_ACCOUNTS_FETCH_FAIL, - error, - }; -} - export const updateAccount = ({ displayName, note, avatar, header, discoverable, indexable }) => (dispatch) => { const data = new FormData(); @@ -736,68 +691,9 @@ export const updateAccount = ({ displayName, note, avatar, header, discoverable, export const navigateToProfile = (accountId) => { return (_dispatch, getState) => { const acct = getState().accounts.getIn([accountId, 'acct']); - + if (acct) { browserHistory.push(`/@${acct}`); } }; }; - -export function fetchPinnedAccountsSuggestions(q) { - return (dispatch) => { - dispatch(fetchPinnedAccountsSuggestionsRequest()); - - const params = { - q, - resolve: false, - limit: 4, - following: true, - }; - - api().get('/api/v1/accounts/search', { params }).then(response => { - dispatch(importFetchedAccounts(response.data)); - dispatch(fetchPinnedAccountsSuggestionsSuccess(q, response.data)); - }).catch(err => dispatch(fetchPinnedAccountsSuggestionsFail(err))); - }; -} - -export function fetchPinnedAccountsSuggestionsRequest() { - return { - type: PINNED_ACCOUNTS_SUGGESTIONS_FETCH_REQUEST, - }; -} - -export function fetchPinnedAccountsSuggestionsSuccess(query, accounts) { - return { - type: PINNED_ACCOUNTS_SUGGESTIONS_FETCH_SUCCESS, - query, - accounts, - }; -} - -export function fetchPinnedAccountsSuggestionsFail(error) { - return { - type: PINNED_ACCOUNTS_SUGGESTIONS_FETCH_FAIL, - error, - }; -} - -export function clearPinnedAccountsSuggestions() { - return { - type: PINNED_ACCOUNTS_EDITOR_SUGGESTIONS_CLEAR, - }; -} - -export function changePinnedAccountsSuggestions(value) { - return { - type: PINNED_ACCOUNTS_EDITOR_SUGGESTIONS_CHANGE, - value, - }; -} - -export function resetPinnedAccountsEditor() { - return { - type: PINNED_ACCOUNTS_EDITOR_RESET, - }; -} - diff --git a/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx b/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx index 4a0dbb4a1c..137459ad4f 100644 --- a/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx +++ b/app/javascript/flavours/glitch/features/getting_started_misc/index.jsx @@ -8,11 +8,9 @@ import { connect } from 'react-redux'; import BlockIcon from '@/material-icons/400-24px/block.svg?react'; import InfoIcon from '@/material-icons/400-24px/info.svg?react'; import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react'; -import PersonCheckIcon from '@/material-icons/400-24px/person_check.svg?react'; import PushPinIcon from '@/material-icons/400-24px/push_pin.svg?react'; import StarIcon from '@/material-icons/400-24px/star-fill.svg?react'; import VolumeOffIcon from '@/material-icons/400-24px/volume_off.svg?react'; -import { openModal } from 'flavours/glitch/actions/modal'; import Column from 'flavours/glitch/features/ui/components/column'; import ColumnLink from 'flavours/glitch/features/ui/components/column_link'; import ColumnSubheading from 'flavours/glitch/features/ui/components/column_subheading'; @@ -27,7 +25,6 @@ const messages = defineMessages({ mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' }, pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, keyboard_shortcuts: { id: 'navigation_bar.keyboard_shortcuts', defaultMessage: 'Keyboard shortcuts' }, - featured_users: { id: 'navigation_bar.featured_users', defaultMessage: 'Featured users' }, }); class GettingStartedMisc extends ImmutablePureComponent { @@ -38,12 +35,6 @@ class GettingStartedMisc extends ImmutablePureComponent { dispatch: PropTypes.func.isRequired, }; - openFeaturedAccountsModal = () => { - this.props.dispatch(openModal({ - modalType: 'PINNED_ACCOUNTS_EDITOR', - })); - }; - render () { const { intl } = this.props; const { signedIn } = this.props.identity; @@ -54,7 +45,6 @@ class GettingStartedMisc extends ImmutablePureComponent { {signedIn && ()} {signedIn && ()} - {signedIn && ()} {signedIn && ()} {signedIn && ()} {signedIn && ()} diff --git a/app/javascript/flavours/glitch/features/pinned_accounts_editor/containers/account_container.js b/app/javascript/flavours/glitch/features/pinned_accounts_editor/containers/account_container.js deleted file mode 100644 index 29f89b95a2..0000000000 --- a/app/javascript/flavours/glitch/features/pinned_accounts_editor/containers/account_container.js +++ /dev/null @@ -1,25 +0,0 @@ -import { injectIntl } from 'react-intl'; - -import { connect } from 'react-redux'; - -import { pinAccount, unpinAccount } from 'flavours/glitch/actions/accounts'; -import Account from 'flavours/glitch/features/list_editor/components/account'; -import { makeGetAccount } from 'flavours/glitch/selectors'; - -const makeMapStateToProps = () => { - const getAccount = makeGetAccount(); - - const mapStateToProps = (state, { accountId, added }) => ({ - account: getAccount(state, accountId), - added: typeof added === 'undefined' ? state.getIn(['pinnedAccountsEditor', 'accounts', 'items']).includes(accountId) : added, - }); - - return mapStateToProps; -}; - -const mapDispatchToProps = (dispatch, { accountId }) => ({ - onRemove: () => dispatch(unpinAccount(accountId)), - onAdd: () => dispatch(pinAccount(accountId)), -}); - -export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Account)); diff --git a/app/javascript/flavours/glitch/features/pinned_accounts_editor/containers/search_container.js b/app/javascript/flavours/glitch/features/pinned_accounts_editor/containers/search_container.js deleted file mode 100644 index 010a7527de..0000000000 --- a/app/javascript/flavours/glitch/features/pinned_accounts_editor/containers/search_container.js +++ /dev/null @@ -1,24 +0,0 @@ -import { injectIntl } from 'react-intl'; - -import { connect } from 'react-redux'; - -import Search from 'flavours/glitch/features/list_editor/components/search'; - -import { - fetchPinnedAccountsSuggestions, - clearPinnedAccountsSuggestions, - changePinnedAccountsSuggestions, -} from '../../../actions/accounts'; - - -const mapStateToProps = state => ({ - value: state.getIn(['pinnedAccountsEditor', 'suggestions', 'value']), -}); - -const mapDispatchToProps = dispatch => ({ - onSubmit: value => dispatch(fetchPinnedAccountsSuggestions(value)), - onClear: () => dispatch(clearPinnedAccountsSuggestions()), - onChange: value => dispatch(changePinnedAccountsSuggestions(value)), -}); - -export default injectIntl(connect(mapStateToProps, mapDispatchToProps)(Search)); diff --git a/app/javascript/flavours/glitch/features/pinned_accounts_editor/index.jsx b/app/javascript/flavours/glitch/features/pinned_accounts_editor/index.jsx deleted file mode 100644 index 603d7209a7..0000000000 --- a/app/javascript/flavours/glitch/features/pinned_accounts_editor/index.jsx +++ /dev/null @@ -1,82 +0,0 @@ -import PropTypes from 'prop-types'; - -import { injectIntl, FormattedMessage } from 'react-intl'; - -import ImmutablePropTypes from 'react-immutable-proptypes'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { connect } from 'react-redux'; - -import spring from 'react-motion/lib/spring'; - -import { fetchPinnedAccounts, clearPinnedAccountsSuggestions, resetPinnedAccountsEditor } from 'flavours/glitch/actions/accounts'; -import Motion from 'flavours/glitch/features/ui/util/optional_motion'; - -import AccountContainer from './containers/account_container'; -import SearchContainer from './containers/search_container'; - -const mapStateToProps = state => ({ - accountIds: state.getIn(['pinnedAccountsEditor', 'accounts', 'items']), - searchAccountIds: state.getIn(['pinnedAccountsEditor', 'suggestions', 'items']), -}); - -const mapDispatchToProps = dispatch => ({ - onInitialize: () => dispatch(fetchPinnedAccounts()), - onClear: () => dispatch(clearPinnedAccountsSuggestions()), - onReset: () => dispatch(resetPinnedAccountsEditor()), -}); - -class PinnedAccountsEditor extends ImmutablePureComponent { - - static propTypes = { - onClose: PropTypes.func.isRequired, - intl: PropTypes.object.isRequired, - onInitialize: PropTypes.func.isRequired, - onClear: PropTypes.func.isRequired, - onReset: PropTypes.func.isRequired, - title: PropTypes.string.isRequired, - accountIds: ImmutablePropTypes.list.isRequired, - searchAccountIds: ImmutablePropTypes.list.isRequired, - }; - - componentDidMount () { - const { onInitialize } = this.props; - onInitialize(); - } - - componentWillUnmount () { - const { onReset } = this.props; - onReset(); - } - - render () { - const { accountIds, searchAccountIds, onClear } = this.props; - const showSearch = searchAccountIds.size > 0; - - return ( -
-

- - - -
-
- {accountIds.map(accountId => )} -
- - {showSearch &&
} - - - {({ x }) => - (
- {searchAccountIds.map(accountId => )} -
) - } -
-
-
- ); - } - -} - -export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(PinnedAccountsEditor)); diff --git a/app/javascript/flavours/glitch/features/ui/components/modal_root.jsx b/app/javascript/flavours/glitch/features/ui/components/modal_root.jsx index 506cccfbb2..adac4c5a5e 100644 --- a/app/javascript/flavours/glitch/features/ui/components/modal_root.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/modal_root.jsx @@ -13,7 +13,6 @@ import { EmbedModal, ListEditor, ListAdder, - PinnedAccountsEditor, CompareHistoryModal, FilterModal, InteractionModal, @@ -76,7 +75,6 @@ export const MODAL_COMPONENTS = { 'LIST_EDITOR': ListEditor, 'FOCAL_POINT': () => Promise.resolve({ default: FocalPointModal }), 'LIST_ADDER': ListAdder, - 'PINNED_ACCOUNTS_EDITOR': PinnedAccountsEditor, 'COMPARE_HISTORY': CompareHistoryModal, 'FILTER': FilterModal, 'SUBSCRIBED_LANGUAGES': SubscribedLanguagesModal, diff --git a/app/javascript/flavours/glitch/features/ui/util/async-components.js b/app/javascript/flavours/glitch/features/ui/util/async-components.js index 1354c21f09..3102877d94 100644 --- a/app/javascript/flavours/glitch/features/ui/util/async-components.js +++ b/app/javascript/flavours/glitch/features/ui/util/async-components.js @@ -46,10 +46,6 @@ export function Lists () { return import(/* webpackChunkName: "flavours/glitch/async/lists" */'../../lists'); } -export function PinnedAccountsEditor () { - return import(/* webpackChunkName: "flavours/glitch/async/pinned_accounts_editor" */'../../pinned_accounts_editor'); -} - export function DirectTimeline() { return import(/* webpackChunkName: "flavours/glitch/async/direct_timeline" */'../../direct_timeline'); } diff --git a/app/javascript/flavours/glitch/locales/en.json b/app/javascript/flavours/glitch/locales/en.json index e60a2d8720..2fe5b715fa 100644 --- a/app/javascript/flavours/glitch/locales/en.json +++ b/app/javascript/flavours/glitch/locales/en.json @@ -35,7 +35,6 @@ "confirmations.missing_media_description.edit": "Edit media", "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", "direct.group_by_conversations": "Group by conversation", - "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", "favourite_modal.favourite": "Favourite post?", "federation.federated.long": "Allow this post to reach other servers", "federation.federated.short": "Federated", @@ -51,7 +50,6 @@ "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", "navigation_bar.app_settings": "App settings", - "navigation_bar.featured_users": "Featured users", "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", "navigation_bar.misc": "Misc", "notification.markForDeletion": "Mark for deletion", diff --git a/app/javascript/flavours/glitch/reducers/index.ts b/app/javascript/flavours/glitch/reducers/index.ts index d8d50be7d2..99e8b2efd0 100644 --- a/app/javascript/flavours/glitch/reducers/index.ts +++ b/app/javascript/flavours/glitch/reducers/index.ts @@ -30,7 +30,6 @@ import { notificationPolicyReducer } from './notification_policy'; import { notificationRequestsReducer } from './notification_requests'; import notifications from './notifications'; import { pictureInPictureReducer } from './picture_in_picture'; -import pinnedAccountsEditor from './pinned_accounts_editor'; import polls from './polls'; import push_notifications from './push_notifications'; import { relationshipsReducer } from './relationships'; @@ -78,7 +77,6 @@ const reducers = { filters, conversations, suggestions, - pinnedAccountsEditor, polls, trends, markers: markersReducer, diff --git a/app/javascript/flavours/glitch/reducers/pinned_accounts_editor.js b/app/javascript/flavours/glitch/reducers/pinned_accounts_editor.js deleted file mode 100644 index 352db5733b..0000000000 --- a/app/javascript/flavours/glitch/reducers/pinned_accounts_editor.js +++ /dev/null @@ -1,58 +0,0 @@ -import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; - -import { - PINNED_ACCOUNTS_EDITOR_RESET, - PINNED_ACCOUNTS_FETCH_REQUEST, - PINNED_ACCOUNTS_FETCH_SUCCESS, - PINNED_ACCOUNTS_FETCH_FAIL, - PINNED_ACCOUNTS_SUGGESTIONS_FETCH_SUCCESS, - PINNED_ACCOUNTS_EDITOR_SUGGESTIONS_CLEAR, - PINNED_ACCOUNTS_EDITOR_SUGGESTIONS_CHANGE, - pinAccountSuccess, - unpinAccountSuccess, -} from '../actions/accounts'; - -const initialState = ImmutableMap({ - accounts: ImmutableMap({ - items: ImmutableList(), - loaded: false, - isLoading: false, - }), - - suggestions: ImmutableMap({ - value: '', - items: ImmutableList(), - }), -}); - -export default function listEditorReducer(state = initialState, action) { - switch(action.type) { - case PINNED_ACCOUNTS_EDITOR_RESET: - return initialState; - case PINNED_ACCOUNTS_FETCH_REQUEST: - return state.setIn(['accounts', 'isLoading'], true); - case PINNED_ACCOUNTS_FETCH_FAIL: - return state.setIn(['accounts', 'isLoading'], false); - case PINNED_ACCOUNTS_FETCH_SUCCESS: - return state.update('accounts', accounts => accounts.withMutations(map => { - map.set('isLoading', false); - map.set('loaded', true); - map.set('items', ImmutableList(action.accounts.map(item => item.id))); - })); - case PINNED_ACCOUNTS_SUGGESTIONS_FETCH_SUCCESS: - return state.setIn(['suggestions', 'items'], ImmutableList(action.accounts.map(item => item.id))); - case PINNED_ACCOUNTS_EDITOR_SUGGESTIONS_CHANGE: - return state.setIn(['suggestions', 'value'], action.value); - case PINNED_ACCOUNTS_EDITOR_SUGGESTIONS_CLEAR: - return state.update('suggestions', suggestions => suggestions.withMutations(map => { - map.set('items', ImmutableList()); - map.set('value', ''); - })); - case pinAccountSuccess.type: - return state.updateIn(['accounts', 'items'], list => list.unshift(action.payload.relationship.id)); - case unpinAccountSuccess.type: - return state.updateIn(['accounts', 'items'], list => list.filterNot(item => item === action.payload.relationship.id)); - default: - return state; - } -}