fix remember language/emoji use

Signed-off-by: mkljczk <git@mkljczk.pl>
This commit is contained in:
mkljczk 2024-12-04 17:13:02 +01:00
parent 7a85ef413b
commit edf831bed9
5 changed files with 17 additions and 46 deletions

View file

@ -13,10 +13,9 @@ import { useSettingsStore } from 'pl-fe/stores/settings';
import toast from 'pl-fe/toast';
import { isLoggedIn } from 'pl-fe/utils/auth';
import { chooseEmoji } from './emojis';
import { importEntities } from './importer';
import { rememberLanguageUse } from './languages';
import { uploadFile, updateMedia } from './media';
import { saveSettings } from './settings';
import { createStatus } from './statuses';
import type { EditorState } from 'lexical';
@ -384,7 +383,8 @@ const submitCompose = (composeId: string, opts: SubmitComposeOpts = {}) =>
useModalsStore.getState().closeModal('COMPOSE');
if (compose.language && !statusId) {
dispatch(rememberLanguageUse(compose.language));
useSettingsStore.getState().rememberLanguageUse(compose.language);
dispatch(saveSettings());
}
const idempotencyKey = compose.idempotencyKey;
@ -686,7 +686,8 @@ const selectComposeSuggestion = (composeId: string, position: number, token: str
completion = isNativeEmoji(suggestion) ? suggestion.native : suggestion.colons;
startPosition = position - 1;
dispatch(chooseEmoji(suggestion));
useSettingsStore.getState().rememberEmojiUse(suggestion);
dispatch(saveSettings());
} else if (typeof suggestion === 'string' && suggestion[0] === '#') {
completion = suggestion;
startPosition = position - 1;

View file

@ -1,21 +0,0 @@
import { saveSettings } from './settings';
import type { Emoji } from 'pl-fe/features/emoji';
import type { AppDispatch } from 'pl-fe/store';
const EMOJI_CHOOSE = 'EMOJI_CHOOSE';
const chooseEmoji = (emoji: Emoji) =>
(dispatch: AppDispatch) => {
dispatch({
type: EMOJI_CHOOSE,
emoji,
});
dispatch(saveSettings());
};
export {
EMOJI_CHOOSE,
chooseEmoji,
};

View file

@ -1,16 +0,0 @@
import { saveSettings } from './settings';
import type { AppDispatch } from 'pl-fe/store';
const LANGUAGE_USE = 'LANGUAGE_USE' as const;
const rememberLanguageUse = (language: string) => (dispatch: AppDispatch) => {
dispatch({
type: LANGUAGE_USE,
language,
});
dispatch(saveSettings());
};
export { LANGUAGE_USE, rememberLanguageUse };

View file

@ -33,11 +33,12 @@ import React, {
import ReactDOM from 'react-dom';
import { clearComposeSuggestions, fetchComposeSuggestions } from 'pl-fe/actions/compose';
import { chooseEmoji } from 'pl-fe/actions/emojis';
import { saveSettings } from 'pl-fe/actions/settings';
import AutosuggestEmoji from 'pl-fe/components/autosuggest-emoji';
import { useAppDispatch } from 'pl-fe/hooks/use-app-dispatch';
import { useCompose } from 'pl-fe/hooks/use-compose';
import { selectAccount } from 'pl-fe/selectors';
import { useSettingsStore } from 'pl-fe/stores/settings';
import { textAtCursorMatchesToken } from 'pl-fe/utils/suggestions';
import AutosuggestAccount from '../../components/autosuggest-account';
@ -285,6 +286,7 @@ const AutosuggestPlugin = ({
suggestionsHidden,
setSuggestionsHidden,
}: AutosuggestPluginProps): JSX.Element | null => {
const { rememberEmojiUse } = useSettingsStore();
const { suggestions } = useCompose(composeId);
const dispatch = useAppDispatch();
@ -324,7 +326,10 @@ const AutosuggestPlugin = ({
if (typeof suggestion === 'object') {
if (!suggestion.id) return;
dispatch(chooseEmoji(suggestion));
rememberEmojiUse(suggestion);
dispatch(saveSettings());
replaceMatch($createEmojiNode(suggestion));
} else if (suggestion[0] === '#') {
(node as TextNode).setTextContent(`${suggestion} `);

View file

@ -2,13 +2,13 @@ import React, { useEffect, useState, useLayoutEffect, Suspense, useMemo } from '
import { defineMessages, useIntl } from 'react-intl';
import { createSelector } from 'reselect';
import { chooseEmoji } from 'pl-fe/actions/emojis';
import { changeSetting } from 'pl-fe/actions/settings';
import { changeSetting, saveSettings } from 'pl-fe/actions/settings';
import { useAppDispatch } from 'pl-fe/hooks/use-app-dispatch';
import { useAppSelector } from 'pl-fe/hooks/use-app-selector';
import { useSettings } from 'pl-fe/hooks/use-settings';
import { useTheme } from 'pl-fe/hooks/use-theme';
import { RootState } from 'pl-fe/store';
import { useSettingsStore } from 'pl-fe/stores/settings';
import { buildCustomEmojis } from '../../emoji';
import { EmojiPicker } from '../../ui/util/async-components';
@ -128,6 +128,7 @@ const EmojiPickerDropdown: React.FC<IEmojiPickerDropdown> = ({
const dispatch = useAppDispatch();
const title = intl.formatMessage(messages.emoji);
const theme = useTheme();
const { rememberEmojiUse } = useSettingsStore();
const customEmojis = useAppSelector((state) => getCustomEmojis(state));
@ -156,7 +157,8 @@ const EmojiPickerDropdown: React.FC<IEmojiPickerDropdown> = ({
} as CustomEmoji;
}
dispatch(chooseEmoji(pickedEmoji));
rememberEmojiUse(pickedEmoji);
dispatch(saveSettings());
if (onPickEmoji) {
onPickEmoji(pickedEmoji);