Pull in current user with verify_credentials, refactor "me"
This commit is contained in:
parent
f8a1c22adc
commit
d3952925d7
53 changed files with 303 additions and 194 deletions
|
@ -6,7 +6,6 @@ import {
|
|||
importFetchedAccounts,
|
||||
importErrorWhileFetchingAccountByUsername,
|
||||
} from './importer';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const ACCOUNT_FETCH_REQUEST = 'ACCOUNT_FETCH_REQUEST';
|
||||
export const ACCOUNT_FETCH_SUCCESS = 'ACCOUNT_FETCH_SUCCESS';
|
||||
|
@ -163,7 +162,7 @@ export function fetchAccountFail(id, error) {
|
|||
|
||||
export function followAccount(id, reblogs = true) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const alreadyFollowing = getState().getIn(['relationships', id, 'following']);
|
||||
const locked = getState().getIn(['accounts', id, 'locked'], false);
|
||||
|
@ -180,7 +179,7 @@ export function followAccount(id, reblogs = true) {
|
|||
|
||||
export function unfollowAccount(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(unfollowAccountRequest(id));
|
||||
|
||||
|
@ -246,7 +245,7 @@ export function unfollowAccountFail(error) {
|
|||
|
||||
export function blockAccount(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(blockAccountRequest(id));
|
||||
|
||||
|
@ -261,7 +260,7 @@ export function blockAccount(id) {
|
|||
|
||||
export function unblockAccount(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(unblockAccountRequest(id));
|
||||
|
||||
|
@ -319,7 +318,7 @@ export function unblockAccountFail(error) {
|
|||
|
||||
export function muteAccount(id, notifications) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(muteAccountRequest(id));
|
||||
|
||||
|
@ -334,7 +333,7 @@ export function muteAccount(id, notifications) {
|
|||
|
||||
export function unmuteAccount(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(unmuteAccountRequest(id));
|
||||
|
||||
|
@ -392,7 +391,7 @@ export function unmuteAccountFail(error) {
|
|||
|
||||
export function fetchFollowers(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchFollowersRequest(id));
|
||||
|
||||
|
@ -434,7 +433,7 @@ export function fetchFollowersFail(id, error) {
|
|||
|
||||
export function expandFollowers(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const url = getState().getIn(['user_lists', 'followers', id, 'next']);
|
||||
|
||||
|
@ -482,7 +481,7 @@ export function expandFollowersFail(id, error) {
|
|||
|
||||
export function fetchFollowing(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchFollowingRequest(id));
|
||||
|
||||
|
@ -524,7 +523,7 @@ export function fetchFollowingFail(id, error) {
|
|||
|
||||
export function expandFollowing(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const url = getState().getIn(['user_lists', 'following', id, 'next']);
|
||||
|
||||
|
@ -572,7 +571,7 @@ export function expandFollowingFail(id, error) {
|
|||
|
||||
export function fetchRelationships(accountIds) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const loadedRelationships = getState().get('relationships');
|
||||
const newAccountIds = accountIds.filter(id => loadedRelationships.get(id, null) === null);
|
||||
|
@ -617,7 +616,7 @@ export function fetchRelationshipsFail(error) {
|
|||
|
||||
export function fetchFollowRequests() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchFollowRequestsRequest());
|
||||
|
||||
|
@ -652,7 +651,7 @@ export function fetchFollowRequestsFail(error) {
|
|||
|
||||
export function expandFollowRequests() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const url = getState().getIn(['user_lists', 'follow_requests', 'next']);
|
||||
|
||||
|
@ -693,7 +692,7 @@ export function expandFollowRequestsFail(error) {
|
|||
|
||||
export function authorizeFollowRequest(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(authorizeFollowRequestRequest(id));
|
||||
|
||||
|
@ -729,7 +728,7 @@ export function authorizeFollowRequestFail(id, error) {
|
|||
|
||||
export function rejectFollowRequest(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(rejectFollowRequestRequest(id));
|
||||
|
||||
|
@ -764,7 +763,7 @@ export function rejectFollowRequestFail(id, error) {
|
|||
|
||||
export function pinAccount(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(pinAccountRequest(id));
|
||||
|
||||
|
@ -778,7 +777,7 @@ export function pinAccount(id) {
|
|||
|
||||
export function unpinAccount(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(unpinAccountRequest(id));
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import api, { getLinks } from '../api';
|
||||
import { fetchRelationships } from './accounts';
|
||||
import { importFetchedAccounts } from './importer';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const BLOCKS_FETCH_REQUEST = 'BLOCKS_FETCH_REQUEST';
|
||||
export const BLOCKS_FETCH_SUCCESS = 'BLOCKS_FETCH_SUCCESS';
|
||||
|
@ -13,7 +12,7 @@ export const BLOCKS_EXPAND_FAIL = 'BLOCKS_EXPAND_FAIL';
|
|||
|
||||
export function fetchBlocks() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchBlocksRequest());
|
||||
|
||||
|
@ -49,8 +48,8 @@ export function fetchBlocksFail(error) {
|
|||
|
||||
export function expandBlocks() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const url = getState().getIn(['user_lists', 'blocks', 'next']);
|
||||
|
||||
if (url === null) {
|
||||
|
|
|
@ -11,7 +11,6 @@ import { showAlertForError } from './alerts';
|
|||
import { showAlert } from './alerts';
|
||||
import { defineMessages } from 'react-intl';
|
||||
import { openModal, closeModal } from './modal';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
let cancelFetchComposeSuggestionsAccounts;
|
||||
|
||||
|
@ -153,7 +152,7 @@ export function handleComposeSubmit(dispatch, getState, response, status) {
|
|||
|
||||
export function submitCompose(routerHistory, group) {
|
||||
return function (dispatch, getState) {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const status = getState().getIn(['compose', 'text'], '');
|
||||
const media = getState().getIn(['compose', 'media_attachments']);
|
||||
|
@ -211,7 +210,7 @@ export function submitComposeFail(error) {
|
|||
|
||||
export function uploadCompose(files) {
|
||||
return function (dispatch, getState) {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const uploadLimit = 4;
|
||||
const media = getState().getIn(['compose', 'media_attachments']);
|
||||
|
@ -252,7 +251,7 @@ export function uploadCompose(files) {
|
|||
|
||||
export function changeUploadCompose(id, params) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(changeUploadComposeRequest());
|
||||
|
||||
|
@ -440,7 +439,7 @@ export function updateTagHistory(tags) {
|
|||
|
||||
export function hydrateCompose() {
|
||||
return (dispatch, getState) => {
|
||||
const me = getState().getIn(['meta', 'me']);
|
||||
const me = getState().get('me');
|
||||
const history = tagHistory.get(me);
|
||||
|
||||
if (history !== null) {
|
||||
|
@ -453,7 +452,7 @@ function insertIntoTagHistory(recognizedTags, text) {
|
|||
return (dispatch, getState) => {
|
||||
const state = getState();
|
||||
const oldHistory = state.getIn(['compose', 'tagHistory']);
|
||||
const me = state.getIn(['meta', 'me']);
|
||||
const me = state.get('me');
|
||||
const names = recognizedTags.map(tag => text.match(new RegExp(`#${tag.name}`, 'i'))[0].slice(1));
|
||||
const intersectedOldHistory = oldHistory.filter(name => names.findIndex(newName => newName.toLowerCase() === name.toLowerCase()) === -1);
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ import {
|
|||
importFetchedStatuses,
|
||||
importFetchedStatus,
|
||||
} from './importer';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const CONVERSATIONS_MOUNT = 'CONVERSATIONS_MOUNT';
|
||||
export const CONVERSATIONS_UNMOUNT = 'CONVERSATIONS_UNMOUNT';
|
||||
|
@ -25,7 +24,7 @@ export const unmountConversations = () => ({
|
|||
});
|
||||
|
||||
export const markConversationRead = conversationId => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch({
|
||||
type: CONVERSATIONS_READ,
|
||||
|
@ -36,8 +35,8 @@ export const markConversationRead = conversationId => (dispatch, getState) => {
|
|||
};
|
||||
|
||||
export const expandConversations = ({ maxId } = {}) => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(expandConversationsRequest());
|
||||
|
||||
const params = { max_id: maxId };
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import api, { getLinks } from '../api';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const DOMAIN_BLOCK_REQUEST = 'DOMAIN_BLOCK_REQUEST';
|
||||
export const DOMAIN_BLOCK_SUCCESS = 'DOMAIN_BLOCK_SUCCESS';
|
||||
|
@ -19,7 +18,7 @@ export const DOMAIN_BLOCKS_EXPAND_FAIL = 'DOMAIN_BLOCKS_EXPAND_FAIL';
|
|||
|
||||
export function blockDomain(domain) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(blockDomainRequest(domain));
|
||||
|
||||
|
@ -58,7 +57,7 @@ export function blockDomainFail(domain, error) {
|
|||
|
||||
export function unblockDomain(domain) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(unblockDomainRequest(domain));
|
||||
|
||||
|
@ -97,7 +96,7 @@ export function unblockDomainFail(domain, error) {
|
|||
|
||||
export function fetchDomainBlocks() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchDomainBlocksRequest());
|
||||
|
||||
|
@ -133,8 +132,8 @@ export function fetchDomainBlocksFail(error) {
|
|||
|
||||
export function expandDomainBlocks() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const url = getState().getIn(['domain_lists', 'blocks', 'next']);
|
||||
|
||||
if (!url) {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import api, { getLinks } from '../api';
|
||||
import { importFetchedStatuses } from './importer';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const FAVOURITED_STATUSES_FETCH_REQUEST = 'FAVOURITED_STATUSES_FETCH_REQUEST';
|
||||
export const FAVOURITED_STATUSES_FETCH_SUCCESS = 'FAVOURITED_STATUSES_FETCH_SUCCESS';
|
||||
|
@ -12,7 +11,7 @@ export const FAVOURITED_STATUSES_EXPAND_FAIL = 'FAVOURITED_STATUSES_EXPAND_FA
|
|||
|
||||
export function fetchFavouritedStatuses() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
if (getState().getIn(['status_lists', 'favourites', 'isLoading'])) {
|
||||
return;
|
||||
|
@ -56,8 +55,8 @@ export function fetchFavouritedStatusesFail(error) {
|
|||
|
||||
export function expandFavouritedStatuses() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const url = getState().getIn(['status_lists', 'favourites', 'next'], null);
|
||||
|
||||
if (url === null || getState().getIn(['status_lists', 'favourites', 'isLoading'])) {
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
import api from '../api';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const FILTERS_FETCH_REQUEST = 'FILTERS_FETCH_REQUEST';
|
||||
export const FILTERS_FETCH_SUCCESS = 'FILTERS_FETCH_SUCCESS';
|
||||
export const FILTERS_FETCH_FAIL = 'FILTERS_FETCH_FAIL';
|
||||
|
||||
export const fetchFilters = () => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch({
|
||||
type: FILTERS_FETCH_REQUEST,
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import api from '../api';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const GROUP_CREATE_REQUEST = 'GROUP_CREATE_REQUEST';
|
||||
export const GROUP_CREATE_SUCCESS = 'GROUP_CREATE_SUCCESS';
|
||||
|
@ -28,7 +27,7 @@ export const submit = (routerHistory) => (dispatch, getState) => {
|
|||
|
||||
|
||||
export const create = (title, description, coverImage, routerHistory) => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(createRequest());
|
||||
|
||||
|
@ -39,13 +38,13 @@ export const create = (title, description, coverImage, routerHistory) => (dispat
|
|||
if (coverImage !== null) {
|
||||
formData.append('cover_image', coverImage);
|
||||
}
|
||||
|
||||
|
||||
api(getState).post('/api/v1/groups', formData, { headers: { 'Content-Type': 'multipart/form-data' } }).then(({ data }) => {
|
||||
dispatch(createSuccess(data));
|
||||
routerHistory.push(`/groups/${data.id}`);
|
||||
}).catch(err => dispatch(createFail(err)));
|
||||
};
|
||||
|
||||
|
||||
|
||||
export const createRequest = id => ({
|
||||
type: GROUP_CREATE_REQUEST,
|
||||
|
@ -63,7 +62,7 @@ export const createFail = error => ({
|
|||
});
|
||||
|
||||
export const update = (groupId, title, description, coverImage, routerHistory) => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(updateRequest());
|
||||
|
||||
|
@ -74,13 +73,13 @@ export const update = (groupId, title, description, coverImage, routerHistory) =
|
|||
if (coverImage !== null) {
|
||||
formData.append('cover_image', coverImage);
|
||||
}
|
||||
|
||||
|
||||
api(getState).put(`/api/v1/groups/${groupId}`, formData, { headers: { 'Content-Type': 'multipart/form-data' } }).then(({ data }) => {
|
||||
dispatch(updateSuccess(data));
|
||||
routerHistory.push(`/groups/${data.id}`);
|
||||
}).catch(err => dispatch(updateFail(err)));
|
||||
};
|
||||
|
||||
|
||||
|
||||
export const updateRequest = id => ({
|
||||
type: GROUP_UPDATE_REQUEST,
|
||||
|
@ -110,4 +109,4 @@ export const reset = () => ({
|
|||
export const setUp = (group) => ({
|
||||
type: GROUP_EDITOR_SETUP,
|
||||
group,
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import api, { getLinks } from '../api';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
import { importFetchedAccounts } from './importer';
|
||||
import { fetchRelationships } from './accounts';
|
||||
|
||||
|
@ -52,7 +51,7 @@ export const GROUP_REMOVE_STATUS_SUCCESS = 'GROUP_REMOVE_STATUS_SUCCESS';
|
|||
export const GROUP_REMOVE_STATUS_FAIL = 'GROUP_REMOVE_STATUS_FAIL';
|
||||
|
||||
export const fetchGroup = id => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchGroupRelationships([id]));
|
||||
|
||||
|
@ -85,7 +84,7 @@ export const fetchGroupFail = (id, error) => ({
|
|||
|
||||
export function fetchGroupRelationships(groupIds) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const loadedRelationships = getState().get('group_relationships');
|
||||
const newGroupIds = groupIds.filter(id => loadedRelationships.get(id, null) === null);
|
||||
|
@ -129,7 +128,7 @@ export function fetchGroupRelationshipsFail(error) {
|
|||
};
|
||||
|
||||
export const fetchGroups = (tab) => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchGroupsRequest());
|
||||
|
||||
|
@ -158,7 +157,7 @@ export const fetchGroupsFail = error => ({
|
|||
|
||||
export function joinGroup(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(joinGroupRequest(id));
|
||||
|
||||
|
@ -172,8 +171,8 @@ export function joinGroup(id) {
|
|||
|
||||
export function leaveGroup(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(leaveGroupRequest(id));
|
||||
|
||||
api(getState).delete(`/api/v1/groups/${id}/accounts`).then(response => {
|
||||
|
@ -228,7 +227,7 @@ export function leaveGroupFail(error) {
|
|||
|
||||
export function fetchMembers(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchMembersRequest(id));
|
||||
|
||||
|
@ -270,7 +269,7 @@ export function fetchMembersFail(id, error) {
|
|||
|
||||
export function expandMembers(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const url = getState().getIn(['user_lists', 'groups', id, 'next']);
|
||||
|
||||
|
@ -318,7 +317,7 @@ export function expandMembersFail(id, error) {
|
|||
|
||||
export function fetchRemovedAccounts(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchRemovedAccountsRequest(id));
|
||||
|
||||
|
@ -360,7 +359,7 @@ export function fetchRemovedAccountsFail(id, error) {
|
|||
|
||||
export function expandRemovedAccounts(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const url = getState().getIn(['user_lists', 'groups_removed_accounts', id, 'next']);
|
||||
|
||||
|
@ -408,7 +407,7 @@ export function expandRemovedAccountsFail(id, error) {
|
|||
|
||||
export function removeRemovedAccount(groupId, id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(removeRemovedAccountRequest(groupId, id));
|
||||
|
||||
|
@ -447,7 +446,7 @@ export function removeRemovedAccountFail(groupId, id, error) {
|
|||
|
||||
export function createRemovedAccount(groupId, id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(createRemovedAccountRequest(groupId, id));
|
||||
|
||||
|
@ -486,7 +485,7 @@ export function createRemovedAccountFail(groupId, id, error) {
|
|||
|
||||
export function groupRemoveStatus(groupId, id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(groupRemoveStatusRequest(groupId, id));
|
||||
|
||||
|
@ -521,4 +520,4 @@ export function groupRemoveStatusFail(groupId, id, error) {
|
|||
id,
|
||||
error,
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import api from '../api';
|
||||
import { importFetchedAccounts, importFetchedStatus } from './importer';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const REBLOG_REQUEST = 'REBLOG_REQUEST';
|
||||
export const REBLOG_SUCCESS = 'REBLOG_SUCCESS';
|
||||
|
@ -36,7 +35,7 @@ export const UNPIN_FAIL = 'UNPIN_FAIL';
|
|||
|
||||
export function reblog(status) {
|
||||
return function (dispatch, getState) {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(reblogRequest(status));
|
||||
|
||||
|
@ -53,7 +52,7 @@ export function reblog(status) {
|
|||
|
||||
export function unreblog(status) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(unreblogRequest(status));
|
||||
|
||||
|
@ -118,7 +117,7 @@ export function unreblogFail(status, error) {
|
|||
|
||||
export function favourite(status) {
|
||||
return function (dispatch, getState) {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(favouriteRequest(status));
|
||||
|
||||
|
@ -133,7 +132,7 @@ export function favourite(status) {
|
|||
|
||||
export function unfavourite(status) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(unfavouriteRequest(status));
|
||||
|
||||
|
@ -198,7 +197,7 @@ export function unfavouriteFail(status, error) {
|
|||
|
||||
export function fetchReblogs(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchReblogsRequest(id));
|
||||
|
||||
|
@ -235,7 +234,7 @@ export function fetchReblogsFail(id, error) {
|
|||
|
||||
export function fetchFavourites(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchFavouritesRequest(id));
|
||||
|
||||
|
@ -272,7 +271,7 @@ export function fetchFavouritesFail(id, error) {
|
|||
|
||||
export function pin(status) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(pinRequest(status));
|
||||
|
||||
|
@ -312,8 +311,8 @@ export function pinFail(status, error) {
|
|||
|
||||
export function unpin (status) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(unpinRequest(status));
|
||||
|
||||
api(getState).post(`/api/v1/statuses/${status.get('id')}/unpin`).then(response => {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import api from '../api';
|
||||
import { importFetchedAccounts } from './importer';
|
||||
import { showAlertForError } from './alerts';
|
||||
import { me } from 'gabsocial/initial_state'
|
||||
|
||||
export const LIST_FETCH_REQUEST = 'LIST_FETCH_REQUEST';
|
||||
export const LIST_FETCH_SUCCESS = 'LIST_FETCH_SUCCESS';
|
||||
|
@ -51,7 +50,7 @@ export const LIST_ADDER_LISTS_FETCH_SUCCESS = 'LIST_ADDER_LISTS_FETCH_SUCCESS';
|
|||
export const LIST_ADDER_LISTS_FETCH_FAIL = 'LIST_ADDER_LISTS_FETCH_FAIL';
|
||||
|
||||
export const fetchList = id => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
if (getState().getIn(['lists', id])) {
|
||||
return;
|
||||
|
@ -81,7 +80,7 @@ export const fetchListFail = (id, error) => ({
|
|||
});
|
||||
|
||||
export const fetchLists = () => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchListsRequest());
|
||||
|
||||
|
@ -130,7 +129,7 @@ export const changeListEditorTitle = value => ({
|
|||
});
|
||||
|
||||
export const createList = (title, shouldReset) => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(createListRequest());
|
||||
|
||||
|
@ -158,7 +157,7 @@ export const createListFail = error => ({
|
|||
});
|
||||
|
||||
export const updateList = (id, title, shouldReset) => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(updateListRequest(id));
|
||||
|
||||
|
@ -192,7 +191,7 @@ export const resetListEditor = () => ({
|
|||
});
|
||||
|
||||
export const deleteList = id => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(deleteListRequest(id));
|
||||
|
||||
|
@ -218,7 +217,7 @@ export const deleteListFail = (id, error) => ({
|
|||
});
|
||||
|
||||
export const fetchListAccounts = listId => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchListAccountsRequest(listId));
|
||||
|
||||
|
@ -247,7 +246,7 @@ export const fetchListAccountsFail = (id, error) => ({
|
|||
});
|
||||
|
||||
export const fetchListSuggestions = q => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const params = {
|
||||
q,
|
||||
|
@ -282,7 +281,7 @@ export const addToListEditor = accountId => (dispatch, getState) => {
|
|||
};
|
||||
|
||||
export const addToList = (listId, accountId) => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(addToListRequest(listId, accountId));
|
||||
|
||||
|
@ -315,7 +314,7 @@ export const removeFromListEditor = accountId => (dispatch, getState) => {
|
|||
};
|
||||
|
||||
export const removeFromList = (listId, accountId) => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(removeFromListRequest(listId, accountId));
|
||||
|
||||
|
@ -357,7 +356,7 @@ export const setupListAdder = accountId => (dispatch, getState) => {
|
|||
};
|
||||
|
||||
export const fetchAccountLists = accountId => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchAccountListsRequest(accountId));
|
||||
|
||||
|
|
39
app/gabsocial/actions/me.js
Normal file
39
app/gabsocial/actions/me.js
Normal file
|
@ -0,0 +1,39 @@
|
|||
import api from '../api';
|
||||
import { importFetchedAccount } from './importer';
|
||||
|
||||
export const ME_FETCH_REQUEST = 'ME_FETCH_REQUEST';
|
||||
export const ME_FETCH_SUCCESS = 'ME_FETCH_SUCCESS';
|
||||
export const ME_FETCH_FAIL = 'ME_FETCH_FAIL';
|
||||
|
||||
export function fetchMe() {
|
||||
return (dispatch, getState) => {
|
||||
dispatch(fetchMeRequest());
|
||||
api(getState).get(`/api/v1/accounts/verify_credentials`).then(response => {
|
||||
dispatch(fetchMeSuccess(response.data));
|
||||
dispatch(importFetchedAccount(response.data));
|
||||
}).catch(error => {
|
||||
dispatch(fetchMeFail(error));
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
export function fetchMeRequest() {
|
||||
return {
|
||||
type: ME_FETCH_REQUEST,
|
||||
};
|
||||
}
|
||||
|
||||
export function fetchMeSuccess(me) {
|
||||
return {
|
||||
type: ME_FETCH_SUCCESS,
|
||||
me
|
||||
};
|
||||
}
|
||||
|
||||
export function fetchMeFail(error) {
|
||||
return {
|
||||
type: ME_FETCH_FAIL,
|
||||
error,
|
||||
skipAlert: true,
|
||||
};
|
||||
};
|
|
@ -2,7 +2,6 @@ import api, { getLinks } from '../api';
|
|||
import { fetchRelationships } from './accounts';
|
||||
import { importFetchedAccounts } from './importer';
|
||||
import { openModal } from './modal';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const MUTES_FETCH_REQUEST = 'MUTES_FETCH_REQUEST';
|
||||
export const MUTES_FETCH_SUCCESS = 'MUTES_FETCH_SUCCESS';
|
||||
|
@ -17,7 +16,7 @@ export const MUTES_TOGGLE_HIDE_NOTIFICATIONS = 'MUTES_TOGGLE_HIDE_NOTIFICATIONS'
|
|||
|
||||
export function fetchMutes() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(fetchMutesRequest());
|
||||
|
||||
|
@ -53,8 +52,8 @@ export function fetchMutesFail(error) {
|
|||
|
||||
export function expandMutes() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const url = getState().getIn(['user_lists', 'mutes', 'next']);
|
||||
|
||||
if (url === null) {
|
||||
|
|
|
@ -13,7 +13,6 @@ import { defineMessages } from 'react-intl';
|
|||
import { List as ImmutableList } from 'immutable';
|
||||
import { unescapeHTML } from '../utils/html';
|
||||
import { getFilters, regexFromFilters } from '../selectors';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const NOTIFICATIONS_INITIALIZE = 'NOTIFICATIONS_INITIALIZE';
|
||||
export const NOTIFICATIONS_UPDATE = 'NOTIFICATIONS_UPDATE';
|
||||
|
@ -158,7 +157,7 @@ const noOp = () => {};
|
|||
|
||||
export function expandNotifications({ maxId } = {}, done = noOp) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']);
|
||||
const notifications = getState().get('notifications');
|
||||
|
@ -224,7 +223,7 @@ export function expandNotificationsFail(error, isLoadingMore) {
|
|||
|
||||
export function clearNotifications() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch({
|
||||
type: NOTIFICATIONS_CLEAR,
|
||||
|
@ -258,7 +257,7 @@ export function setFilter (filterType) {
|
|||
|
||||
export function markReadNotifications() {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
const top_notification = parseInt(getState().getIn(['notifications', 'items', 0, 'id']));
|
||||
const last_read = getState().getIn(['notifications', 'lastRead']);
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import api from '../api';
|
||||
import { importFetchedStatuses } from './importer';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const PINNED_STATUSES_FETCH_REQUEST = 'PINNED_STATUSES_FETCH_REQUEST';
|
||||
export const PINNED_STATUSES_FETCH_SUCCESS = 'PINNED_STATUSES_FETCH_SUCCESS';
|
||||
|
@ -8,6 +7,7 @@ export const PINNED_STATUSES_FETCH_FAIL = 'PINNED_STATUSES_FETCH_FAIL';
|
|||
|
||||
export function fetchPinnedStatuses() {
|
||||
return (dispatch, getState) => {
|
||||
const me = getState().get('me');
|
||||
if (!me) return;
|
||||
|
||||
dispatch(fetchPinnedStatusesRequest());
|
||||
|
|
|
@ -2,7 +2,6 @@ import api from '../../api';
|
|||
import { decode as decodeBase64 } from '../../utils/base64';
|
||||
import { pushNotificationsSetting } from '../../settings';
|
||||
import { setBrowserSupport, setSubscription, clearSubscription } from './setter';
|
||||
import { me } from '../../initial_state';
|
||||
|
||||
// Taken from https://www.npmjs.com/package/web-push
|
||||
const urlBase64ToUint8Array = (base64String) => {
|
||||
|
@ -31,7 +30,7 @@ const subscribe = (registration) =>
|
|||
const unsubscribe = ({ registration, subscription }) =>
|
||||
subscription ? subscription.unsubscribe().then(() => registration) : registration;
|
||||
|
||||
const sendSubscriptionToBackend = (subscription) => {
|
||||
const sendSubscriptionToBackend = (subscription, me) => {
|
||||
const params = { subscription };
|
||||
|
||||
if (me) {
|
||||
|
@ -49,6 +48,7 @@ const supportsPushNotifications = ('serviceWorker' in navigator && 'PushManager'
|
|||
|
||||
export function register () {
|
||||
return (dispatch, getState) => {
|
||||
const me = getState().get('me');
|
||||
dispatch(setBrowserSupport(supportsPushNotifications));
|
||||
|
||||
if (supportsPushNotifications) {
|
||||
|
@ -73,13 +73,13 @@ export function register () {
|
|||
} else {
|
||||
// Something went wrong, try to subscribe again
|
||||
return unsubscribe({ registration, subscription }).then(subscribe).then(
|
||||
subscription => sendSubscriptionToBackend(subscription));
|
||||
subscription => sendSubscriptionToBackend(subscription, me));
|
||||
}
|
||||
}
|
||||
|
||||
// No subscription, try to subscribe
|
||||
return subscribe(registration).then(
|
||||
subscription => sendSubscriptionToBackend(subscription));
|
||||
subscription => sendSubscriptionToBackend(subscription, me));
|
||||
})
|
||||
.then(subscription => {
|
||||
// If we got a PushSubscription (and not a subscription object from the backend)
|
||||
|
@ -121,6 +121,7 @@ export function saveSettings() {
|
|||
const subscription = state.get('subscription');
|
||||
const alerts = state.get('alerts');
|
||||
const data = { alerts };
|
||||
const me = getState().get('me');
|
||||
|
||||
api().put(`/api/web/push_subscriptions/${subscription.get('id')}`, {
|
||||
data,
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import api from '../api';
|
||||
import { debounce } from 'lodash';
|
||||
import { showAlertForError } from './alerts';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const SETTING_CHANGE = 'SETTING_CHANGE';
|
||||
export const SETTING_SAVE = 'SETTING_SAVE';
|
||||
|
@ -19,7 +18,7 @@ export function changeSetting(path, value) {
|
|||
};
|
||||
|
||||
const debouncedSave = debounce((dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
if (getState().getIn(['settings', 'saved'])) {
|
||||
return;
|
||||
|
|
|
@ -5,7 +5,6 @@ import { deleteFromTimelines } from './timelines';
|
|||
import { importFetchedStatus, importFetchedStatuses, importAccount, importStatus } from './importer';
|
||||
import { ensureComposeIsVisible } from './compose';
|
||||
import { openModal, closeModal } from './modal';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const STATUS_FETCH_REQUEST = 'STATUS_FETCH_REQUEST';
|
||||
export const STATUS_FETCH_SUCCESS = 'STATUS_FETCH_SUCCESS';
|
||||
|
@ -143,7 +142,7 @@ export function redraft(status, raw_text) {
|
|||
|
||||
export function deleteStatus(id, routerHistory, withRedraft = false) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
let status = getState().getIn(['statuses', id]);
|
||||
|
||||
|
@ -236,7 +235,7 @@ export function fetchContextFail(id, error) {
|
|||
|
||||
export function muteStatus(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(muteStatusRequest(id));
|
||||
|
||||
|
@ -272,7 +271,7 @@ export function muteStatusFail(id, error) {
|
|||
|
||||
export function unmuteStatus(id) {
|
||||
return (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch(unmuteStatusRequest(id));
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import api from '../api';
|
||||
import { importFetchedAccounts } from './importer';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export const SUGGESTIONS_FETCH_REQUEST = 'SUGGESTIONS_FETCH_REQUEST';
|
||||
export const SUGGESTIONS_FETCH_SUCCESS = 'SUGGESTIONS_FETCH_SUCCESS';
|
||||
|
@ -44,7 +43,7 @@ export function fetchSuggestionsFail(error) {
|
|||
};
|
||||
|
||||
export const dismissSuggestion = accountId => (dispatch, getState) => {
|
||||
if (!me) return;
|
||||
if (!getState().get('me')) return;
|
||||
|
||||
dispatch({
|
||||
type: SUGGESTIONS_DISMISS,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import React, { Fragment } from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import PropTypes from 'prop-types';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
|
@ -8,7 +9,6 @@ import Permalink from './permalink';
|
|||
import IconButton from './icon_button';
|
||||
import { defineMessages, injectIntl } from 'react-intl';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { me } from '../initial_state';
|
||||
|
||||
const messages = defineMessages({
|
||||
follow: { id: 'account.follow', defaultMessage: 'Follow' },
|
||||
|
@ -20,7 +20,14 @@ const messages = defineMessages({
|
|||
unmute_notifications: { id: 'account.unmute_notifications', defaultMessage: 'Unmute notifications from @{name}' },
|
||||
});
|
||||
|
||||
export default @injectIntl
|
||||
const mapStateToProps = state => {
|
||||
return {
|
||||
me: state.get('me'),
|
||||
};
|
||||
};
|
||||
|
||||
export default @connect(mapStateToProps)
|
||||
@injectIntl
|
||||
class Account extends ImmutablePureComponent {
|
||||
|
||||
static propTypes = {
|
||||
|
@ -61,7 +68,7 @@ class Account extends ImmutablePureComponent {
|
|||
}
|
||||
|
||||
render () {
|
||||
const { account, intl, hidden, onActionClick, actionIcon, actionTitle } = this.props;
|
||||
const { account, intl, hidden, onActionClick, actionIcon, actionTitle, me } = this.props;
|
||||
|
||||
if (!account) {
|
||||
return <div />;
|
||||
|
|
|
@ -34,6 +34,7 @@ export default class Avatar extends React.PureComponent {
|
|||
|
||||
render () {
|
||||
const { account, size, animate, inline } = this.props;
|
||||
if (!account) return null;
|
||||
const { hovering } = this.state;
|
||||
|
||||
const src = account.get('avatar');
|
||||
|
|
|
@ -8,7 +8,6 @@ import classNames from 'classnames';
|
|||
import { FormattedMessage, injectIntl, defineMessages } from 'react-intl';
|
||||
import { Link } from 'react-router-dom';
|
||||
import Icon from 'gabsocial/components/icon';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
import { fetchLists } from 'gabsocial/actions/lists';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ import Icon from './icon';
|
|||
import DisplayName from './display_name';
|
||||
import { closeSidebar } from '../actions/sidebar';
|
||||
import { shortNumberFormat } from '../utils/numbers';
|
||||
import { me, funding } from '../initial_state';
|
||||
import { makeGetAccount } from '../selectors';
|
||||
|
||||
const messages = defineMessages({
|
||||
|
@ -34,6 +33,7 @@ const messages = defineMessages({
|
|||
})
|
||||
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
const getAccount = makeGetAccount();
|
||||
|
||||
return {
|
||||
|
@ -61,6 +61,7 @@ class SidebarMenu extends ImmutablePureComponent {
|
|||
|
||||
render () {
|
||||
const { sidebarOpen, onClose, intl, account } = this.props;
|
||||
if (!account) return null;
|
||||
const acct = account.get('acct');
|
||||
|
||||
const classes = classNames('sidebar-menu__root', {
|
||||
|
|
|
@ -7,7 +7,7 @@ import IconButton from './icon_button';
|
|||
import DropdownMenuContainer from '../containers/dropdown_menu_container';
|
||||
import { defineMessages, injectIntl } from 'react-intl';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { me, isStaff } from '../initial_state';
|
||||
import { isStaff } from '../initial_state';
|
||||
import { openModal } from '../actions/modal';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
|
@ -75,6 +75,7 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||
]
|
||||
|
||||
handleReplyClick = () => {
|
||||
const { me } = this.props;
|
||||
if (me) {
|
||||
this.props.onReply(this.props.status, this.context.router.history);
|
||||
} else {
|
||||
|
@ -92,6 +93,7 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||
}
|
||||
|
||||
handleFavouriteClick = () => {
|
||||
const { me } = this.props;
|
||||
if (me) {
|
||||
this.props.onFavourite(this.props.status);
|
||||
} else {
|
||||
|
@ -100,6 +102,7 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||
}
|
||||
|
||||
handleReblogClick = e => {
|
||||
const { me } = this.props;
|
||||
if (me) {
|
||||
this.props.onReblog(this.props.status, e);
|
||||
} else {
|
||||
|
@ -183,7 +186,7 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||
}
|
||||
|
||||
_makeMenu = (publicStatus) => {
|
||||
const { status, intl, withDismiss, withGroupAdmin } = this.props;
|
||||
const { status, intl, withDismiss, withGroupAdmin, me } = this.props;
|
||||
const mutingConversation = status.get('muted');
|
||||
|
||||
let menu = [];
|
||||
|
@ -297,6 +300,12 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||
}
|
||||
}
|
||||
|
||||
const mapStateToProps = state => {
|
||||
return {
|
||||
me: state.get('me'),
|
||||
};
|
||||
};
|
||||
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
onOpenUnauthorizedModal() {
|
||||
dispatch(openModal('UNAUTHORIZED'));
|
||||
|
@ -304,5 +313,5 @@ const mapDispatchToProps = (dispatch) => ({
|
|||
});
|
||||
|
||||
export default injectIntl(
|
||||
connect(null, mapDispatchToProps, null, { forwardRef: true }
|
||||
connect(mapStateToProps, mapDispatchToProps, null, { forwardRef: true }
|
||||
)(StatusActionBar))
|
||||
|
|
|
@ -15,10 +15,10 @@ import { connectUserStream } from '../actions/streaming';
|
|||
import { IntlProvider, addLocaleData } from 'react-intl';
|
||||
import { getLocale } from '../locales';
|
||||
import initialState from '../initial_state';
|
||||
import { me } from '../initial_state';
|
||||
import ErrorBoundary from '../components/error_boundary';
|
||||
import { fetchInstance } from 'gabsocial/actions/instance';
|
||||
import { fetchSoapboxConfig } from 'gabsocial/actions/soapbox';
|
||||
import { fetchMe } from 'gabsocial/actions/me';
|
||||
|
||||
const { localeData, messages } = getLocale();
|
||||
addLocaleData(localeData);
|
||||
|
@ -27,11 +27,13 @@ export const store = configureStore();
|
|||
const hydrateAction = hydrateStore(initialState);
|
||||
|
||||
store.dispatch(hydrateAction);
|
||||
store.dispatch(fetchMe());
|
||||
store.dispatch(fetchInstance());
|
||||
store.dispatch(fetchSoapboxConfig());
|
||||
store.dispatch(fetchCustomEmojis());
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
const me = state.get('me');
|
||||
const account = state.getIn(['accounts', me]);
|
||||
const showIntroduction = account ? state.getIn(['settings', 'introductionVersion'], 0) < INTRODUCTION_VERSION : false;
|
||||
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
'use strict';
|
||||
|
||||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import PropTypes from 'prop-types';
|
||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||
import Button from 'gabsocial/components/button';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { autoPlayGif, me, isStaff } from 'gabsocial/initial_state';
|
||||
import { autoPlayGif, isStaff } from 'gabsocial/initial_state';
|
||||
import classNames from 'classnames';
|
||||
import Icon from 'gabsocial/components/icon';
|
||||
import Avatar from 'gabsocial/components/avatar';
|
||||
|
@ -56,7 +57,14 @@ const dateFormatOptions = {
|
|||
minute: '2-digit',
|
||||
};
|
||||
|
||||
export default @injectIntl
|
||||
const mapStateToProps = state => {
|
||||
return {
|
||||
me: state.get('me'),
|
||||
};
|
||||
};
|
||||
|
||||
export default @connect(mapStateToProps)
|
||||
@injectIntl
|
||||
class Header extends ImmutablePureComponent {
|
||||
|
||||
static propTypes = {
|
||||
|
@ -100,7 +108,7 @@ class Header extends ImmutablePureComponent {
|
|||
});
|
||||
|
||||
makeMenu() {
|
||||
const { account, intl, domain } = this.props;
|
||||
const { account, intl, domain, me } = this.props;
|
||||
|
||||
let menu = [];
|
||||
|
||||
|
@ -172,7 +180,7 @@ class Header extends ImmutablePureComponent {
|
|||
}
|
||||
|
||||
makeInfo() {
|
||||
const { account, intl } = this.props;
|
||||
const { account, intl, me } = this.props;
|
||||
|
||||
let info = [];
|
||||
|
||||
|
@ -194,7 +202,7 @@ class Header extends ImmutablePureComponent {
|
|||
};
|
||||
|
||||
getActionBtn() {
|
||||
const { account, intl } = this.props;
|
||||
const { account, intl, me } = this.props;
|
||||
|
||||
let actionBtn = null;
|
||||
|
||||
|
@ -216,7 +224,7 @@ class Header extends ImmutablePureComponent {
|
|||
};
|
||||
|
||||
render () {
|
||||
const { account, intl, domain, username } = this.props;
|
||||
const { account, intl, domain, username, me } = this.props;
|
||||
const { isSmallScreen } = this.state;
|
||||
|
||||
if (!account) {
|
||||
|
|
|
@ -17,9 +17,9 @@ import MissingIndicator from 'gabsocial/components/missing_indicator';
|
|||
import { openModal } from 'gabsocial/actions/modal';
|
||||
import { NavLink } from 'react-router-dom';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
const mapStateToProps = (state, { params: { username }, withReplies = false }) => {
|
||||
const me = state.get('me');
|
||||
const accounts = state.getIn(['accounts']);
|
||||
const accountFetchError = (state.getIn(['accounts', -1, 'username'], '').toLowerCase() == username.toLowerCase());
|
||||
|
||||
|
|
|
@ -13,11 +13,11 @@ import { FormattedMessage } from 'react-intl';
|
|||
import { fetchAccountIdentityProofs } from '../../actions/identity_proofs';
|
||||
import MissingIndicator from 'gabsocial/components/missing_indicator';
|
||||
import { NavLink } from 'react-router-dom';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
const emptyList = ImmutableList();
|
||||
|
||||
const mapStateToProps = (state, { params: { username }, withReplies = false }) => {
|
||||
const me = state.get('me');
|
||||
const accounts = state.getIn(['accounts']);
|
||||
const accountFetchError = (state.getIn(['accounts', -1, 'username'], '').toLowerCase() == username.toLowerCase());
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import { connect } from 'react-redux';
|
||||
import NavigationBar from '../components/navigation_bar';
|
||||
import { me } from '../../../initial_state';
|
||||
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
return {
|
||||
account: state.getIn(['accounts', me]),
|
||||
};
|
||||
|
|
|
@ -3,15 +3,17 @@ import { connect } from 'react-redux';
|
|||
import Warning from '../components/warning';
|
||||
import PropTypes from 'prop-types';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { me } from '../../../initial_state';
|
||||
|
||||
const APPROX_HASHTAG_RE = /(?:^|[^\/\)\w])#(\w*[a-zA-Z·]\w*)/i;
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']),
|
||||
hashtagWarning: state.getIn(['compose', 'privacy']) !== 'public' && APPROX_HASHTAG_RE.test(state.getIn(['compose', 'text'])),
|
||||
directMessageWarning: state.getIn(['compose', 'privacy']) === 'direct',
|
||||
});
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
return {
|
||||
needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']),
|
||||
hashtagWarning: state.getIn(['compose', 'privacy']) !== 'public' && APPROX_HASHTAG_RE.test(state.getIn(['compose', 'text'])),
|
||||
directMessageWarning: state.getIn(['compose', 'privacy']) === 'direct',
|
||||
}
|
||||
};
|
||||
|
||||
const WarningWrapper = ({ needsLockWarning, hashtagWarning, directMessageWarning }) => {
|
||||
if (needsLockWarning) {
|
||||
|
|
|
@ -16,9 +16,9 @@ import AccountContainer from '../../containers/account_container';
|
|||
import Column from '../ui/components/column';
|
||||
import ScrollableList from '../../components/scrollable_list';
|
||||
import MissingIndicator from 'gabsocial/components/missing_indicator';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
const mapStateToProps = (state, { params: { username }, withReplies = false }) => {
|
||||
const me = state.get('me');
|
||||
const accounts = state.getIn(['accounts']);
|
||||
const accountFetchError = (state.getIn(['accounts', -1, 'username'], '').toLowerCase() == username.toLowerCase());
|
||||
|
||||
|
|
|
@ -17,9 +17,9 @@ import Column from '../ui/components/column';
|
|||
import HeaderContainer from '../account_timeline/containers/header_container';
|
||||
import ScrollableList from '../../components/scrollable_list';
|
||||
import MissingIndicator from 'gabsocial/components/missing_indicator';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
const mapStateToProps = (state, { params: { username }, withReplies = false }) => {
|
||||
const me = state.get('me');
|
||||
const accounts = state.getIn(['accounts']);
|
||||
const accountFetchError = (state.getIn(['accounts', -1, 'username'], '').toLowerCase() == username.toLowerCase());
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import { connect } from 'react-redux';
|
|||
import PropTypes from 'prop-types';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { me, profile_directory } from '../../initial_state';
|
||||
import { profile_directory } from '../../initial_state';
|
||||
import { fetchFollowRequests } from 'gabsocial/actions/accounts';
|
||||
import { List as ImmutableList } from 'immutable';
|
||||
import NavigationBar from '../compose/components/navigation_bar';
|
||||
|
@ -34,10 +34,13 @@ const messages = defineMessages({
|
|||
profile_directory: { id: 'getting_started.directory', defaultMessage: 'Profile directory' },
|
||||
});
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
myAccount: state.getIn(['accounts', me]),
|
||||
unreadFollowRequests: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,
|
||||
});
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
return {
|
||||
myAccount: state.getIn(['accounts', me]),
|
||||
unreadFollowRequests: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,
|
||||
}
|
||||
};
|
||||
|
||||
const mapDispatchToProps = dispatch => ({
|
||||
fetchFollowRequests: () => dispatch(fetchFollowRequests()),
|
||||
|
|
|
@ -10,15 +10,17 @@ import { expandGroupTimeline } from '../../../actions/timelines';
|
|||
import MissingIndicator from '../../../components/missing_indicator';
|
||||
import LoadingIndicator from '../../../components/loading_indicator';
|
||||
import ComposeFormContainer from '../../../../gabsocial/features/compose/containers/compose_form_container';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
import Avatar from '../../../components/avatar';
|
||||
|
||||
const mapStateToProps = (state, props) => ({
|
||||
account: state.getIn(['accounts', me]),
|
||||
group: state.getIn(['groups', props.params.id]),
|
||||
relationships: state.getIn(['group_relationships', props.params.id]),
|
||||
hasUnread: state.getIn(['timelines', `group:${props.params.id}`, 'unread']) > 0,
|
||||
});
|
||||
const mapStateToProps = (state, props) => {
|
||||
const me = state.get('me');
|
||||
return {
|
||||
account: state.getIn(['accounts', me]),
|
||||
group: state.getIn(['groups', props.params.id]),
|
||||
relationships: state.getIn(['group_relationships', props.params.id]),
|
||||
hasUnread: state.getIn(['timelines', `group:${props.params.id}`, 'unread']) > 0,
|
||||
}
|
||||
};
|
||||
|
||||
export default @connect(mapStateToProps)
|
||||
@injectIntl
|
||||
|
|
|
@ -6,7 +6,7 @@ import IconButton from '../../../components/icon_button';
|
|||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import DropdownMenuContainer from '../../../containers/dropdown_menu_container';
|
||||
import { defineMessages, injectIntl } from 'react-intl';
|
||||
import { me, isStaff } from '../../../initial_state';
|
||||
import { isStaff } from '../../../initial_state';
|
||||
|
||||
const messages = defineMessages({
|
||||
delete: { id: 'status.delete', defaultMessage: 'Delete' },
|
||||
|
@ -33,6 +33,12 @@ const messages = defineMessages({
|
|||
copy: { id: 'status.copy', defaultMessage: 'Copy link to post' },
|
||||
});
|
||||
|
||||
const mapStateToProps = state => {
|
||||
return {
|
||||
me: state.get('me'),
|
||||
};
|
||||
};
|
||||
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
onOpenUnauthorizedModal() {
|
||||
dispatch(openModal('UNAUTHORIZED'));
|
||||
|
@ -64,6 +70,7 @@ class ActionBar extends React.PureComponent {
|
|||
};
|
||||
|
||||
handleReplyClick = () => {
|
||||
const { me } = this.props;
|
||||
if (me) {
|
||||
this.props.onReply(this.props.status);
|
||||
} else {
|
||||
|
@ -72,6 +79,7 @@ class ActionBar extends React.PureComponent {
|
|||
}
|
||||
|
||||
handleReblogClick = (e) => {
|
||||
const { me } = this.props;
|
||||
if (me) {
|
||||
this.props.onReblog(this.props.status, e);
|
||||
} else {
|
||||
|
@ -80,6 +88,7 @@ class ActionBar extends React.PureComponent {
|
|||
}
|
||||
|
||||
handleFavouriteClick = () => {
|
||||
const { me } = this.props;
|
||||
if (me) {
|
||||
this.props.onFavourite(this.props.status);
|
||||
} else {
|
||||
|
@ -154,7 +163,7 @@ class ActionBar extends React.PureComponent {
|
|||
}
|
||||
|
||||
render () {
|
||||
const { status, intl } = this.props;
|
||||
const { status, intl, me } = this.props;
|
||||
|
||||
const publicStatus = ['public', 'unlisted'].includes(status.get('visibility'));
|
||||
const mutingConversation = status.get('muted');
|
||||
|
@ -227,4 +236,4 @@ class ActionBar extends React.PureComponent {
|
|||
}
|
||||
}
|
||||
|
||||
export default injectIntl(connect(null, mapDispatchToProps)(ActionBar));
|
||||
export default injectIntl(connect(mapStateToProps, mapDispatchToProps)(ActionBar));
|
||||
|
|
|
@ -39,7 +39,7 @@ import { openModal } from '../../actions/modal';
|
|||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { HotKeys } from 'react-hotkeys';
|
||||
import { boostModal, deleteModal, me } from '../../initial_state';
|
||||
import { boostModal, deleteModal } from '../../initial_state';
|
||||
import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen';
|
||||
import { textForScreenReader, defaultMediaVisibility } from '../../components/status';
|
||||
import Icon from 'gabsocial/components/icon';
|
||||
|
@ -106,6 +106,7 @@ const makeMapStateToProps = () => {
|
|||
descendantsIds,
|
||||
askReplyConfirmation: state.getIn(['compose', 'text']).trim().length !== 0,
|
||||
domain: state.getIn(['meta', 'domain']),
|
||||
me: state.get('me'),
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -419,7 +420,7 @@ class Status extends ImmutablePureComponent {
|
|||
|
||||
render () {
|
||||
let ancestors, descendants;
|
||||
const { status, ancestorsIds, descendantsIds, intl, domain } = this.props;
|
||||
const { status, ancestorsIds, descendantsIds, intl, domain, me } = this.props;
|
||||
const { fullscreen } = this.state;
|
||||
|
||||
if (status === null) {
|
||||
|
|
|
@ -2,7 +2,6 @@ import React from 'react';
|
|||
import PropTypes from 'prop-types';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import { connect } from 'react-redux';
|
||||
import { me } from '../../../initial_state';
|
||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import ComposeFormContainer from '../../compose/containers/compose_form_container';
|
||||
|
@ -16,6 +15,7 @@ const messages = defineMessages({
|
|||
});
|
||||
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
return {
|
||||
account: state.getIn(['accounts', me]),
|
||||
composeText: state.getIn(['compose', 'text']),
|
||||
|
|
|
@ -4,14 +4,16 @@ import { fetchFollowRequests } from 'gabsocial/actions/accounts';
|
|||
import { connect } from 'react-redux';
|
||||
import { NavLink, withRouter } from 'react-router-dom';
|
||||
import IconWithBadge from 'gabsocial/components/icon_with_badge';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
import { List as ImmutableList } from 'immutable';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
locked: state.getIn(['accounts', me, 'locked']),
|
||||
count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,
|
||||
});
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
return {
|
||||
locked: state.getIn(['accounts', me, 'locked']),
|
||||
count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,
|
||||
}
|
||||
};
|
||||
|
||||
export default @withRouter
|
||||
@connect(mapStateToProps)
|
||||
|
|
|
@ -2,14 +2,17 @@ import React from 'react';
|
|||
import PropTypes from 'prop-types';
|
||||
import { FormattedMessage, injectIntl } from 'react-intl';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { invitesEnabled, version, repository, source_url, me } from 'gabsocial/initial_state';
|
||||
import { invitesEnabled, version, repository, source_url } from 'gabsocial/initial_state';
|
||||
import { connect } from 'react-redux';
|
||||
import { openModal } from '../../../actions/modal';
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
account: state.getIn(['accounts', me]),
|
||||
siteTitle: state.getIn(['instance', 'title']),
|
||||
});
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
return {
|
||||
account: state.getIn(['accounts', me]),
|
||||
siteTitle: state.getIn(['instance', 'title']),
|
||||
}
|
||||
};
|
||||
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
onOpenHotkeys() {
|
||||
|
|
|
@ -4,7 +4,7 @@ import { FormattedMessage } from 'react-intl';
|
|||
import Icon from 'gabsocial/components/icon';
|
||||
import ProBadge from 'gabsocial/components/pro_badge';
|
||||
import { connect } from 'react-redux';
|
||||
import { me, promoItems } from '../../../initial_state';
|
||||
import { promoItems } from '../../../initial_state';
|
||||
|
||||
export default
|
||||
class PromoPanel extends React.PureComponent {
|
||||
|
|
|
@ -2,15 +2,15 @@ import React from 'react';
|
|||
import { connect } from 'react-redux';
|
||||
import { FormattedMessage, injectIntl } from 'react-intl';
|
||||
import { NavLink } from 'react-router-dom';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
const mapStateToProps = state => {
|
||||
return {
|
||||
siteTitle: state.getIn(['instance', 'title']),
|
||||
me: state.get('me'),
|
||||
};
|
||||
};
|
||||
|
||||
const SignUpPanel = ({ siteTitle }) => {
|
||||
const SignUpPanel = ({ siteTitle, me }) => {
|
||||
if (me) return null;
|
||||
|
||||
return (
|
||||
|
|
|
@ -4,7 +4,6 @@ import { NavLink, withRouter } from 'react-router-dom';
|
|||
import { FormattedMessage, injectIntl } from 'react-intl';
|
||||
import { throttle } from 'lodash';
|
||||
import { connect } from 'react-redux';
|
||||
import { me } from '../../../initial_state';
|
||||
import classNames from 'classnames';
|
||||
import NotificationsCounterIcon from './notifications_counter_icon';
|
||||
import SearchContainer from 'gabsocial/features/compose/containers/search_container';
|
||||
|
@ -190,6 +189,7 @@ class TabsBar extends React.PureComponent {
|
|||
}
|
||||
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
return {
|
||||
account: state.getIn(['accounts', me]),
|
||||
logo: state.getIn(['soapbox', 'logo']),
|
||||
|
|
|
@ -2,7 +2,6 @@ import React from 'react';
|
|||
import PropTypes from 'prop-types';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import { connect } from 'react-redux';
|
||||
import { me } from '../../../initial_state';
|
||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||
import Avatar from '../../../components/avatar';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
|
@ -13,6 +12,7 @@ const messages = defineMessages({
|
|||
});
|
||||
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
return {
|
||||
account: state.getIn(['accounts', me]),
|
||||
siteTitle: state.getIn(['instance', 'title']),
|
||||
|
|
|
@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
|||
import { connect } from 'react-redux';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { injectIntl, FormattedMessage } from 'react-intl';
|
||||
import { autoPlayGif, me } from '../../../initial_state';
|
||||
import { autoPlayGif } from '../../../initial_state';
|
||||
import { makeGetAccount } from '../../../selectors';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
|
@ -20,6 +20,7 @@ class UserPanel extends ImmutablePureComponent {
|
|||
|
||||
render() {
|
||||
const { account, intl, domain } = this.props;
|
||||
if (!account) return null;
|
||||
const displayNameHtml = { __html: account.get('display_name_html') };
|
||||
const acct = account.get('acct').indexOf('@') === -1 && domain ? `${account.get('acct')}@${domain}` : account.get('acct');
|
||||
|
||||
|
@ -83,6 +84,7 @@ class UserPanel extends ImmutablePureComponent {
|
|||
|
||||
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
const getAccount = makeGetAccount();
|
||||
|
||||
return {
|
||||
|
|
|
@ -3,7 +3,6 @@ import StatusList from '../../../components/status_list';
|
|||
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
|
||||
import { createSelector } from 'reselect';
|
||||
import { debounce } from 'lodash';
|
||||
import { me } from '../../../initial_state';
|
||||
import { dequeueTimeline } from 'gabsocial/actions/timelines';
|
||||
import { scrollTopTimeline } from '../../../actions/timelines';
|
||||
|
||||
|
@ -11,7 +10,8 @@ const makeGetStatusIds = () => createSelector([
|
|||
(state, { type }) => state.getIn(['settings', type], ImmutableMap()),
|
||||
(state, { type }) => state.getIn(['timelines', type, 'items'], ImmutableList()),
|
||||
(state) => state.get('statuses'),
|
||||
], (columnSettings, statusIds, statuses) => {
|
||||
(state) => state.get('me'),
|
||||
], (columnSettings, statusIds, statuses, me) => {
|
||||
return statusIds.filter(id => {
|
||||
if (id === null) return true;
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ import {
|
|||
GroupCreate,
|
||||
GroupEdit,
|
||||
} from './util/async-components';
|
||||
import { me, meUsername } from '../../initial_state';
|
||||
import { meUsername } from '../../initial_state';
|
||||
import { previewState as previewMediaState } from './components/media_modal';
|
||||
import { previewState as previewVideoState } from './components/video_modal';
|
||||
|
||||
|
@ -79,12 +79,15 @@ const messages = defineMessages({
|
|||
publish: { id: 'compose_form.publish', defaultMessage: 'Publish' },
|
||||
});
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
isComposing: state.getIn(['compose', 'is_composing']),
|
||||
hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0,
|
||||
hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,
|
||||
dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,
|
||||
});
|
||||
const mapStateToProps = state => {
|
||||
return {
|
||||
isComposing: state.getIn(['compose', 'is_composing']),
|
||||
hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0,
|
||||
hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,
|
||||
dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,
|
||||
me: state.get('me'),
|
||||
}
|
||||
};
|
||||
|
||||
const keyMap = {
|
||||
help: '?',
|
||||
|
@ -302,6 +305,7 @@ class UI extends React.PureComponent {
|
|||
}
|
||||
|
||||
handleDrop = (e) => {
|
||||
const { me } = this.props;
|
||||
if (!me) return;
|
||||
|
||||
if (this.dataTransferIsText(e.dataTransfer)) return;
|
||||
|
@ -345,6 +349,7 @@ class UI extends React.PureComponent {
|
|||
}
|
||||
|
||||
componentWillMount () {
|
||||
const { me } = this.props;
|
||||
window.addEventListener('beforeunload', this.handleBeforeUnload, false);
|
||||
|
||||
document.addEventListener('dragenter', this.handleDragEnter, false);
|
||||
|
@ -372,6 +377,7 @@ class UI extends React.PureComponent {
|
|||
}
|
||||
|
||||
componentDidMount () {
|
||||
const { me } = this.props;
|
||||
if (!me) return;
|
||||
this.hotkeys.__mousetrap__.stopCallback = (e, element) => {
|
||||
return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName);
|
||||
|
@ -492,7 +498,7 @@ class UI extends React.PureComponent {
|
|||
|
||||
render () {
|
||||
const { draggingOver } = this.state;
|
||||
const { intl, children, isComposing, location, dropdownMenuIsOpen } = this.props;
|
||||
const { intl, children, isComposing, location, dropdownMenuIsOpen, me } = this.props;
|
||||
|
||||
const handlers = me ? {
|
||||
help: this.handleHotkeyToggleHelp,
|
||||
|
|
|
@ -1,13 +1,19 @@
|
|||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Redirect, Route } from 'react-router-dom';
|
||||
import ColumnsAreaContainer from '../containers/columns_area_container';
|
||||
import ColumnLoading from '../components/column_loading';
|
||||
import BundleColumnError from '../components/bundle_column_error';
|
||||
import BundleContainer from '../containers/bundle_container';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
|
||||
export class WrappedRoute extends React.Component {
|
||||
const mapStateToProps = state => {
|
||||
return {
|
||||
me: state.get('me'),
|
||||
};
|
||||
};
|
||||
|
||||
class WrappedRoute extends React.Component {
|
||||
static propTypes = {
|
||||
component: PropTypes.func.isRequired,
|
||||
page: PropTypes.func,
|
||||
|
@ -64,7 +70,7 @@ export class WrappedRoute extends React.Component {
|
|||
}
|
||||
|
||||
render () {
|
||||
const { component: Component, content, publicRoute, ...rest } = this.props;
|
||||
const { component: Component, content, publicRoute, me, ...rest } = this.props;
|
||||
|
||||
if (!publicRoute && !me) {
|
||||
const actualUrl = encodeURIComponent(this.props.computedMatch.url);
|
||||
|
@ -77,3 +83,6 @@ export class WrappedRoute extends React.Component {
|
|||
return <Route {...rest} render={this.renderComponent} />;
|
||||
}
|
||||
}
|
||||
|
||||
const wrappedRoute = connect(mapStateToProps)(WrappedRoute);
|
||||
export {wrappedRoute as WrappedRoute};
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import WhoToFollowPanel from '../features/ui/components/who_to_follow_panel';
|
||||
|
@ -9,9 +8,12 @@ import PromoPanel from '../features/ui/components/promo_panel';
|
|||
import UserPanel from '../features/ui/components/user_panel';
|
||||
import GroupSidebarPanel from '../features/groups/sidebar_panel';
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
account: state.getIn(['accounts', me]),
|
||||
});
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
return {
|
||||
account: state.getIn(['accounts', me]),
|
||||
}
|
||||
};
|
||||
|
||||
export default @connect(mapStateToProps)
|
||||
class GroupsPage extends ImmutablePureComponent {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { me } from 'gabsocial/initial_state';
|
||||
import PropTypes from 'prop-types';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import WhoToFollowPanel from '../features/ui/components/who_to_follow_panel';
|
||||
|
@ -13,10 +12,13 @@ import ComposeFormContainer from '../features/compose/containers/compose_form_co
|
|||
import Avatar from '../components/avatar';
|
||||
import GroupSidebarPanel from '../features/groups/sidebar_panel';
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
account: state.getIn(['accounts', me]),
|
||||
hasPatron: state.getIn(['soapbox', 'features', 'patron']),
|
||||
});
|
||||
const mapStateToProps = state => {
|
||||
const me = state.get('me');
|
||||
return {
|
||||
account: state.getIn(['accounts', me]),
|
||||
hasPatron: state.getIn(['soapbox', 'features', 'patron']),
|
||||
}
|
||||
};
|
||||
|
||||
export default @connect(mapStateToProps)
|
||||
class HomePage extends ImmutablePureComponent {
|
||||
|
|
|
@ -41,7 +41,6 @@ import { STORE_HYDRATE } from '../actions/store';
|
|||
import { REDRAFT } from '../actions/statuses';
|
||||
import { Map as ImmutableMap, List as ImmutableList, OrderedSet as ImmutableOrderedSet, fromJS } from 'immutable';
|
||||
import uuid from '../uuid';
|
||||
import { me } from '../initial_state';
|
||||
import { unescapeHTML } from '../utils/html';
|
||||
|
||||
const initialState = ImmutableMap({
|
||||
|
@ -79,6 +78,7 @@ const initialPoll = ImmutableMap({
|
|||
|
||||
function statusToTextMentions(state, status) {
|
||||
let set = ImmutableOrderedSet([]);
|
||||
const me = state.get('me');
|
||||
|
||||
if (status.getIn(['account', 'id']) !== me) {
|
||||
set = set.add(`@${status.getIn(['account', 'acct'])} `);
|
||||
|
|
|
@ -40,6 +40,7 @@ import sidebar from './sidebar';
|
|||
import patron from './patron';
|
||||
import soapbox from './soapbox';
|
||||
import instance from './instance';
|
||||
import me from './me';
|
||||
|
||||
const reducers = {
|
||||
dropdown_menu,
|
||||
|
@ -83,6 +84,7 @@ const reducers = {
|
|||
patron,
|
||||
soapbox,
|
||||
instance,
|
||||
me,
|
||||
};
|
||||
|
||||
export default combineReducers(reducers);
|
||||
|
|
13
app/gabsocial/reducers/me.js
Normal file
13
app/gabsocial/reducers/me.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
import { ME_FETCH_SUCCESS } from '../actions/me';
|
||||
import { Map as ImmutableMap, fromJS } from 'immutable';
|
||||
|
||||
const initialState = ImmutableMap();
|
||||
|
||||
export default function me(state = initialState, action) {
|
||||
switch(action.type) {
|
||||
case ME_FETCH_SUCCESS:
|
||||
return fromJS(action.me.id);
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
};
|
|
@ -1,6 +1,5 @@
|
|||
import { createSelector } from 'reselect';
|
||||
import { List as ImmutableList } from 'immutable';
|
||||
import { me } from '../initial_state';
|
||||
|
||||
const getAccountBase = (state, id) => state.getIn(['accounts', id], null);
|
||||
const getAccountCounters = (state, id) => state.getIn(['accounts_counters', id], null);
|
||||
|
@ -72,9 +71,10 @@ export const makeGetStatus = () => {
|
|||
(state, { id }) => state.getIn(['accounts', state.getIn(['statuses', state.getIn(['statuses', id, 'reblog']), 'account'])]),
|
||||
(state, { username }) => username,
|
||||
getFilters,
|
||||
(state) => state.get('me'),
|
||||
],
|
||||
|
||||
(statusBase, statusReblog, accountBase, accountReblog, username, filters) => {
|
||||
(statusBase, statusReblog, accountBase, accountReblog, username, filters, me) => {
|
||||
if (!statusBase) {
|
||||
return null;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue