Merge branch 'rgi-reacts' into 'develop'
Support RGI emoji reacts conditionally See merge request soapbox-pub/soapbox-fe!421
This commit is contained in:
commit
d97f9d7472
6 changed files with 39 additions and 11 deletions
|
@ -1,9 +1,29 @@
|
||||||
import api from '../api';
|
import api from '../api';
|
||||||
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
|
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
|
||||||
|
import { getFeatures } from 'soapbox/utils/features';
|
||||||
|
|
||||||
export const SOAPBOX_CONFIG_REQUEST_SUCCESS = 'SOAPBOX_CONFIG_REQUEST_SUCCESS';
|
export const SOAPBOX_CONFIG_REQUEST_SUCCESS = 'SOAPBOX_CONFIG_REQUEST_SUCCESS';
|
||||||
export const SOAPBOX_CONFIG_REQUEST_FAIL = 'SOAPBOX_CONFIG_REQUEST_FAIL';
|
export const SOAPBOX_CONFIG_REQUEST_FAIL = 'SOAPBOX_CONFIG_REQUEST_FAIL';
|
||||||
|
|
||||||
|
const allowedEmoji = ImmutableList([
|
||||||
|
'👍',
|
||||||
|
'❤',
|
||||||
|
'😆',
|
||||||
|
'😮',
|
||||||
|
'😢',
|
||||||
|
'😩',
|
||||||
|
]);
|
||||||
|
|
||||||
|
// https://git.pleroma.social/pleroma/pleroma/-/issues/2355
|
||||||
|
const allowedEmojiRGI = ImmutableList([
|
||||||
|
'👍',
|
||||||
|
'❤️',
|
||||||
|
'😆',
|
||||||
|
'😮',
|
||||||
|
'😢',
|
||||||
|
'😩',
|
||||||
|
]);
|
||||||
|
|
||||||
export const defaultConfig = ImmutableMap({
|
export const defaultConfig = ImmutableMap({
|
||||||
logo: '',
|
logo: '',
|
||||||
banner: '',
|
banner: '',
|
||||||
|
@ -18,18 +38,22 @@ export const defaultConfig = ImmutableMap({
|
||||||
navlinks: ImmutableMap({
|
navlinks: ImmutableMap({
|
||||||
homeFooter: ImmutableList(),
|
homeFooter: ImmutableList(),
|
||||||
}),
|
}),
|
||||||
allowedEmoji: ImmutableList([
|
allowedEmoji: allowedEmoji,
|
||||||
'👍',
|
|
||||||
'❤️',
|
|
||||||
'😆',
|
|
||||||
'😮',
|
|
||||||
'😢',
|
|
||||||
'😩',
|
|
||||||
]),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export function getSoapboxConfig(state) {
|
export function getSoapboxConfig(state) {
|
||||||
return defaultConfig.merge(state.get('soapbox'));
|
const instance = state.get('instance');
|
||||||
|
const soapbox = state.get('soapbox');
|
||||||
|
const features = getFeatures(instance);
|
||||||
|
|
||||||
|
// https://git.pleroma.social/pleroma/pleroma/-/issues/2355
|
||||||
|
if (features.emojiReactsRGI) {
|
||||||
|
return defaultConfig
|
||||||
|
.set('allowedEmoji', allowedEmojiRGI)
|
||||||
|
.merge(soapbox);
|
||||||
|
} else {
|
||||||
|
return defaultConfig.merge(soapbox);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function fetchSoapboxConfig() {
|
export function fetchSoapboxConfig() {
|
||||||
|
|
|
@ -16,7 +16,7 @@ exports[`<EmojiSelector /> renders correctly 1`] = `
|
||||||
className="emoji-react-selector__emoji"
|
className="emoji-react-selector__emoji"
|
||||||
dangerouslySetInnerHTML={
|
dangerouslySetInnerHTML={
|
||||||
Object {
|
Object {
|
||||||
"__html": "<img draggable=\\"false\\" class=\\"emojione\\" alt=\\"❤️\\" title=\\":heart:\\" src=\\"/emoji/2764.svg\\" />",
|
"__html": "<img draggable=\\"false\\" class=\\"emojione\\" alt=\\"❤\\" title=\\":heart:\\" src=\\"/emoji/2764.svg\\" />",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -11,6 +11,7 @@ describe('instance reducer', () => {
|
||||||
max_options: 4,
|
max_options: 4,
|
||||||
min_expiration: 300,
|
min_expiration: 300,
|
||||||
}),
|
}),
|
||||||
|
version: '0.0.0',
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -32,6 +32,7 @@ const initialState = ImmutableMap({
|
||||||
max_options: 4,
|
max_options: 4,
|
||||||
min_expiration: 300,
|
min_expiration: 300,
|
||||||
}),
|
}),
|
||||||
|
version: '0.0.0',
|
||||||
});
|
});
|
||||||
|
|
||||||
const preloadImport = (state, action, path) => {
|
const preloadImport = (state, action, path) => {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import { IntlProvider } from 'react-intl';
|
||||||
import { BrowserRouter } from 'react-router-dom';
|
import { BrowserRouter } from 'react-router-dom';
|
||||||
import configureMockStore from 'redux-mock-store';
|
import configureMockStore from 'redux-mock-store';
|
||||||
import { Map as ImmutableMap } from 'immutable';
|
import { Map as ImmutableMap } from 'immutable';
|
||||||
|
import rootReducer from 'soapbox/reducers';
|
||||||
|
|
||||||
// Mock Redux
|
// Mock Redux
|
||||||
// https://redux.js.org/recipes/writing-tests/
|
// https://redux.js.org/recipes/writing-tests/
|
||||||
|
@ -18,7 +19,7 @@ export const mockStore = configureMockStore(middlewares);
|
||||||
export const createComponent = (children, props = {}) => {
|
export const createComponent = (children, props = {}) => {
|
||||||
props = ImmutableMap({
|
props = ImmutableMap({
|
||||||
locale: 'en',
|
locale: 'en',
|
||||||
store: mockStore(ImmutableMap()),
|
store: mockStore(rootReducer(ImmutableMap(), {})),
|
||||||
}).merge(props);
|
}).merge(props);
|
||||||
|
|
||||||
return renderer.create(
|
return renderer.create(
|
||||||
|
|
|
@ -7,6 +7,7 @@ export const getFeatures = instance => {
|
||||||
suggestions: v.software === 'Mastodon' && gte(v.compatVersion, '2.4.3'),
|
suggestions: v.software === 'Mastodon' && gte(v.compatVersion, '2.4.3'),
|
||||||
trends: v.software === 'Mastodon' && gte(v.compatVersion, '3.0.0'),
|
trends: v.software === 'Mastodon' && gte(v.compatVersion, '3.0.0'),
|
||||||
emojiReacts: v.software === 'Pleroma' && gte(v.version, '2.0.0'),
|
emojiReacts: v.software === 'Pleroma' && gte(v.version, '2.0.0'),
|
||||||
|
emojiReactsRGI: v.software === 'Pleroma' && gte(v.version, '2.2.49'),
|
||||||
attachmentLimit: v.software === 'Pleroma' ? Infinity : 4,
|
attachmentLimit: v.software === 'Pleroma' ? Infinity : 4,
|
||||||
focalPoint: v.software === 'Mastodon' && gte(v.compatVersion, '2.3.0'),
|
focalPoint: v.software === 'Mastodon' && gte(v.compatVersion, '2.3.0'),
|
||||||
importMutes: v.software === 'Pleroma' && gte(v.version, '2.2.0'),
|
importMutes: v.software === 'Pleroma' && gte(v.version, '2.2.0'),
|
||||||
|
|
Loading…
Reference in a new issue