fix image for new custom emoji reactions

This commit is contained in:
fef 2022-12-03 16:20:29 +00:00
parent e4949a252e
commit 47ac7a2e50
No known key found for this signature in database
GPG key ID: EC22E476DC2D3D84
10 changed files with 36 additions and 22 deletions

View file

@ -403,7 +403,7 @@ export function unpinFail(status, error) {
}; };
}; };
export const addReaction = (statusId, name) => (dispatch, getState) => { export const addReaction = (statusId, name, url) => (dispatch, getState) => {
const status = getState().get('statuses').get(statusId); const status = getState().get('statuses').get(statusId);
let alreadyAdded = false; let alreadyAdded = false;
if (status) { if (status) {
@ -413,7 +413,7 @@ export const addReaction = (statusId, name) => (dispatch, getState) => {
} }
} }
if (!alreadyAdded) { if (!alreadyAdded) {
dispatch(addReactionRequest(statusId, name)); dispatch(addReactionRequest(statusId, name, url));
} }
api(getState).post(`/api/v1/statuses/${statusId}/react/${name}`).then(() => { api(getState).post(`/api/v1/statuses/${statusId}/react/${name}`).then(() => {
@ -425,10 +425,11 @@ export const addReaction = (statusId, name) => (dispatch, getState) => {
}); });
}; };
export const addReactionRequest = (statusId, name) => ({ export const addReactionRequest = (statusId, name, url) => ({
type: REACTION_ADD_REQUEST, type: REACTION_ADD_REQUEST,
id: statusId, id: statusId,
name, name,
url,
}); });
export const addReactionSuccess = (statusId, name) => ({ export const addReactionSuccess = (statusId, name) => ({

View file

@ -118,7 +118,7 @@ class StatusActionBar extends ImmutablePureComponent {
} }
handleEmojiPick = data => { handleEmojiPick = data => {
this.props.onReactionAdd(this.props.status.get('id'), data.native.replace(/:/g, '')); this.props.onReactionAdd(this.props.status.get('id'), data.native.replace(/:/g, ''), data.imageUrl);
} }
handleReblogClick = e => { handleReblogClick = e => {

View file

@ -167,8 +167,8 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({
} }
}, },
onReactionAdd (statusId, name) { onReactionAdd (statusId, name, url) {
dispatch(addReaction(statusId, name)); dispatch(addReaction(statusId, name, url));
}, },
onReactionRemove (statusId, name) { onReactionRemove (statusId, name) {

View file

@ -81,7 +81,7 @@ class ActionBar extends React.PureComponent {
} }
handleEmojiPick = data => { handleEmojiPick = data => {
this.props.onReactionAdd(this.props.status.get('id'), data.native.replace(/:/g, '')); this.props.onReactionAdd(this.props.status.get('id'), data.native.replace(/:/g, ''), data.imageUrl);
} }
handleBookmarkClick = (e) => { handleBookmarkClick = (e) => {

View file

@ -293,12 +293,12 @@ class Status extends ImmutablePureComponent {
} }
} }
handleReactionAdd = (statusId, name) => { handleReactionAdd = (statusId, name, url) => {
const { dispatch } = this.props; const { dispatch } = this.props;
const { signedIn } = this.context.identity; const { signedIn } = this.context.identity;
if (signedIn) { if (signedIn) {
dispatch(addReaction(statusId, name)); dispatch(addReaction(statusId, name, url));
} else { } else {
dispatch(openModal('INTERACTION', { dispatch(openModal('INTERACTION', {
type: 'reaction_add', type: 'reaction_add',

View file

@ -59,11 +59,17 @@ const updateReaction = (state, id, name, updater) => state.update(
const updateReactionCount = (state, reaction) => updateReaction(state, reaction.status_id, reaction.name, x => x.set('count', reaction.count)); const updateReactionCount = (state, reaction) => updateReaction(state, reaction.status_id, reaction.name, x => x.set('count', reaction.count));
const addReaction = (state, id, name) => updateReaction( // The url parameter is only used when adding a new custom emoji reaction
// (one that wasn't in the reactions list before) because we don't have its
// URL yet. In all other cases, it's undefined.
const addReaction = (state, id, name, url) => updateReaction(
state, state,
id, id,
name, name,
x => x.set('me', true).update('count', n => n + 1), x => x.set('me', true)
.update('count', n => n + 1)
.update('url', old => old ? old : url)
.update('static_url', old => old ? old : url),
); );
const removeReaction = (state, id, name) => updateReaction( const removeReaction = (state, id, name) => updateReaction(
@ -103,7 +109,7 @@ export default function statuses(state = initialState, action) {
return updateReactionCount(state, action.reaction); return updateReactionCount(state, action.reaction);
case REACTION_ADD_REQUEST: case REACTION_ADD_REQUEST:
case REACTION_REMOVE_FAIL: case REACTION_REMOVE_FAIL:
return addReaction(state, action.id, action.name); return addReaction(state, action.id, action.name, action.url);
case REACTION_REMOVE_REQUEST: case REACTION_REMOVE_REQUEST:
case REACTION_ADD_FAIL: case REACTION_ADD_FAIL:
return removeReaction(state, action.id, action.name); return removeReaction(state, action.id, action.name);

View file

@ -423,7 +423,7 @@ export function unpinFail(status, error) {
}; };
}; };
export const addReaction = (statusId, name) => (dispatch, getState) => { export const addReaction = (statusId, name, url) => (dispatch, getState) => {
const status = getState().get('statuses').get(statusId); const status = getState().get('statuses').get(statusId);
let alreadyAdded = false; let alreadyAdded = false;
if (status) { if (status) {
@ -433,7 +433,7 @@ export const addReaction = (statusId, name) => (dispatch, getState) => {
} }
} }
if (!alreadyAdded) { if (!alreadyAdded) {
dispatch(addReactionRequest(statusId, name)); dispatch(addReactionRequest(statusId, name, url));
} }
api(getState).post(`/api/v1/statuses/${statusId}/react/${name}`).then(() => { api(getState).post(`/api/v1/statuses/${statusId}/react/${name}`).then(() => {
@ -445,10 +445,11 @@ export const addReaction = (statusId, name) => (dispatch, getState) => {
}); });
}; };
export const addReactionRequest = (statusId, name) => ({ export const addReactionRequest = (statusId, name, url) => ({
type: REACTION_ADD_REQUEST, type: REACTION_ADD_REQUEST,
id: statusId, id: statusId,
name, name,
url,
}); });
export const addReactionSuccess = (statusId, name) => ({ export const addReactionSuccess = (statusId, name) => ({

View file

@ -132,8 +132,8 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({
} }
}, },
onReactionAdd (statusId, name) { onReactionAdd (statusId, name, url) {
dispatch(addReaction(statusId, name)); dispatch(addReaction(statusId, name, url));
}, },
onReactionRemove (statusId, name) { onReactionRemove (statusId, name) {

View file

@ -257,12 +257,12 @@ class Status extends ImmutablePureComponent {
} }
} }
handleReactionAdd = (statusId, name) => { handleReactionAdd = (statusId, name, url) => {
const { dispatch } = this.props; const { dispatch } = this.props;
const { signedIn } = this.context.identity; const { signedIn } = this.context.identity;
if (signedIn) { if (signedIn) {
dispatch(addReaction(statusId, name)); dispatch(addReaction(statusId, name, url));
} else { } else {
dispatch(openModal('INTERACTION', { dispatch(openModal('INTERACTION', {
type: 'reaction_add', type: 'reaction_add',

View file

@ -57,11 +57,17 @@ const updateReaction = (state, id, name, updater) => state.update(
const updateReactionCount = (state, reaction) => updateReaction(state, reaction.status_id, reaction.name, x => x.set('count', reaction.count)); const updateReactionCount = (state, reaction) => updateReaction(state, reaction.status_id, reaction.name, x => x.set('count', reaction.count));
const addReaction = (state, id, name) => updateReaction( // The url parameter is only used when adding a new custom emoji reaction
// (one that wasn't in the reactions list before) because we don't have its
// URL yet. In all other cases, it's undefined.
const addReaction = (state, id, name, url) => updateReaction(
state, state,
id, id,
name, name,
x => x.set('me', true).update('count', n => n + 1), x => x.set('me', true)
.update('count', n => n + 1)
.update('url', old => old ? old : url)
.update('static_url', old => old ? old : url),
); );
const removeReaction = (state, id, name) => updateReaction( const removeReaction = (state, id, name) => updateReaction(
@ -101,7 +107,7 @@ export default function statuses(state = initialState, action) {
return updateReactionCount(state, action.reaction); return updateReactionCount(state, action.reaction);
case REACTION_ADD_REQUEST: case REACTION_ADD_REQUEST:
case REACTION_REMOVE_FAIL: case REACTION_REMOVE_FAIL:
return addReaction(state, action.id, action.name); return addReaction(state, action.id, action.name, action.url);
case REACTION_REMOVE_REQUEST: case REACTION_REMOVE_REQUEST:
case REACTION_ADD_FAIL: case REACTION_ADD_FAIL:
return removeReaction(state, action.id, action.name); return removeReaction(state, action.id, action.name);