From 6eceac472375e33dfc3b411012fa2e42410f145e Mon Sep 17 00:00:00 2001 From: shibao Date: Sun, 8 Mar 2026 16:41:01 +0000 Subject: [PATCH 1/3] fix emojis breaking user bio editing --- .../post_status_form/post_status_form.js | 4 +-- src/components/user_card/user_card.js | 4 +-- src/stores/emoji.js | 26 +++++++++++-------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js index 853e62ee8..507d12f6c 100644 --- a/src/components/post_status_form/post_status_form.js +++ b/src/components/post_status_form/post_status_form.js @@ -277,10 +277,10 @@ const PostStatusForm = { }) }, emoji() { - return useEmojiStore().standardEmojiList || [] + return useEmojiStore().standardEmojiList }, customEmoji() { - return useEmojiStore().customEmoji || [] + return useEmojiStore().customEmoji }, statusLength() { return this.newStatus.status.length diff --git a/src/components/user_card/user_card.js b/src/components/user_card/user_card.js index a77406ca5..8e3b4b9b7 100644 --- a/src/components/user_card/user_card.js +++ b/src/components/user_card/user_card.js @@ -380,7 +380,7 @@ export default { emojiUserSuggestor() { return suggestor({ emoji: [ - ...this.$store.getters.standardEmojiList, + ...useEmojiStore().standardEmojiList, ...useEmojiStore().customEmoji, ], store: this.$store, @@ -389,7 +389,7 @@ export default { emojiSuggestor() { return suggestor({ emoji: [ - ...this.$store.getters.standardEmojiList, + ...useEmojiStore().standardEmojiList, ...useEmojiStore().customEmoji, ], }) diff --git a/src/stores/emoji.js b/src/stores/emoji.js index 5c284064b..0673862e9 100644 --- a/src/stores/emoji.js +++ b/src/stores/emoji.js @@ -115,19 +115,23 @@ export const useEmojiStore = defineStore('emoji', { }, {}) }, standardEmojiList(state) { - return SORTED_EMOJI_GROUP_IDS.map((groupId) => - (this.emoji[groupId] || []).map((k) => - injectAnnotations(k, this.unicodeEmojiAnnotations), - ), - ).reduce((a, b) => a.concat(b), []) + return ( + SORTED_EMOJI_GROUP_IDS.map((groupId) => + (this.emoji[groupId] || []).map((k) => + injectAnnotations(k, this.unicodeEmojiAnnotations), + ), + ).reduce((a, b) => a.concat(b), []) ?? [] + ) }, standardEmojiGroupList(state) { - return SORTED_EMOJI_GROUP_IDS.map((groupId) => ({ - id: groupId, - emojis: (this.emoji[groupId] || []).map((k) => - injectAnnotations(k, this.unicodeEmojiAnnotations), - ), - })) + return ( + SORTED_EMOJI_GROUP_IDS.map((groupId) => ({ + id: groupId, + emojis: (this.emoji[groupId] || []).map((k) => + injectAnnotations(k, this.unicodeEmojiAnnotations), + ), + })) ?? [] + ) }, }, actions: { From a1f4dd21423ab2c2974644288b5f8a2f1581f267 Mon Sep 17 00:00:00 2001 From: shibao Date: Sun, 8 Mar 2026 16:42:47 +0000 Subject: [PATCH 2/3] add changelog note for emojis breaking user bio editing --- changelog.d/fix-emojis-breaking-bio.fix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/fix-emojis-breaking-bio.fix diff --git a/changelog.d/fix-emojis-breaking-bio.fix b/changelog.d/fix-emojis-breaking-bio.fix new file mode 100644 index 000000000..62a607d8a --- /dev/null +++ b/changelog.d/fix-emojis-breaking-bio.fix @@ -0,0 +1 @@ +Fix emojis breaking user bio/description editing From d4f8f604752d45d49711ac4b9ec0f8604c2a5eb2 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 11 Mar 2026 23:48:23 +0200 Subject: [PATCH 3/3] theme sync attempt --- src/modules/default_config_state.js | 1 + src/services/style_setter/style_setter.js | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/modules/default_config_state.js b/src/modules/default_config_state.js index 2f18fe9a5..af2f60ac4 100644 --- a/src/modules/default_config_state.js +++ b/src/modules/default_config_state.js @@ -8,6 +8,7 @@ export const staticOrApiConfigDefault = { theme: 'pleroma-dark', palette: null, style: null, + themeChecksum: undefined, defaultAvatar: '/images/avi.png', defaultBanner: '/images/banner.png', background: '/static/aurora_borealis.jpg', diff --git a/src/services/style_setter/style_setter.js b/src/services/style_setter/style_setter.js index 495070b0d..5c0a7326b 100644 --- a/src/services/style_setter/style_setter.js +++ b/src/services/style_setter/style_setter.js @@ -3,8 +3,10 @@ import { chunk, throttle } from 'lodash' import { getCssRules } from '../theme_data/css_utils.js' import { getEngineChecksum, init } from '../theme_data/theme_data_3.service.js' +import sum from 'hash-sum' import { defaultState } from 'src/modules/default_config_state.js' +import { useSyncConfigStore } from 'src/stores/sync_config.js' // On platforms where this is not supported, it will return undefined // Otherwise it will return an array @@ -77,7 +79,7 @@ export const adoptStyleSheets = throttle(() => { const EAGER_STYLE_ID = 'pleroma-eager-styles' const LAZY_STYLE_ID = 'pleroma-lazy-styles' -export const generateTheme = (inputRuleset, callbacks, debug) => { +const generateTheme = (inputRuleset, callbacks, debug) => { const { onNewRule = () => { /* no-op */ @@ -134,9 +136,12 @@ export const generateTheme = (inputRuleset, callbacks, debug) => { export const tryLoadCache = async () => { console.info('Trying to load compiled theme data from cache') const cache = await localforage.getItem('pleromafe-theme-cache') + console.log(cache.checksum) if (!cache) return null try { - if (cache.engineChecksum === getEngineChecksum()) { + if (cache.engineChecksum === getEngineChecksum() && + cache.checksum !== undefined && + cache.checksum === useSyncConfigStore().mergedConfig.themeChecksum) { const eagerStyles = createStyleSheet(EAGER_STYLE_ID, 10) const lazyStyles = createStyleSheet(LAZY_STYLE_ID, 20) @@ -149,7 +154,7 @@ export const tryLoadCache = async () => { console.info(`Loaded theme from cache`) return true } else { - console.warn("Engine checksum doesn't match, cache not usable, clearing") + console.warn("Checksums don't match, cache not usable, clearing") localStorage.removeItem('pleroma-fe-theme-cache') } } catch (e) { @@ -195,10 +200,14 @@ export const applyTheme = ( onLazyFinished() { lazyStyles.ready = true adoptStyleSheets() + const data = [eagerStyles.rules, lazyStyles.rules] + const checksum = sum(data) const cache = { + checksum, engineChecksum: getEngineChecksum(), - data: [eagerStyles.rules, lazyStyles.rules], + data, } + useSyncConfigStore().setSimplePrefAndSave({ path: 'themeChecksum', value: checksum }) onFinish(cache) localforage.setItem('pleromafe-theme-cache', cache) console.info('Theme cache stored')