Properly propagate pack usage to UI

We can't have a pack that is neither sticker nor emoji. Which is why
none defaults to both on. That wasn't propagated to the UI, which made
the interaction very confusing. It also made some states unsettable,
since you can't turn anything off from the none state.

fixes #1152
This commit is contained in:
Nicolas Werner 2022-10-09 02:14:31 +02:00
parent 30fde1f8ac
commit 4002b1ecf1
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9

View file

@ -248,6 +248,9 @@ SingleImagePackModel::setIsStickerPack(bool val)
using mtx::events::msc2545::PackUsage; using mtx::events::msc2545::PackUsage;
if (val != pack.pack->is_sticker()) { if (val != pack.pack->is_sticker()) {
pack.pack->usage.set(PackUsage::Sticker, val); pack.pack->usage.set(PackUsage::Sticker, val);
if (!val)
pack.pack->usage.set(PackUsage::Emoji, true);
emit isEmotePackChanged();
emit isStickerPackChanged(); emit isStickerPackChanged();
} }
} }
@ -258,7 +261,10 @@ SingleImagePackModel::setIsEmotePack(bool val)
using mtx::events::msc2545::PackUsage; using mtx::events::msc2545::PackUsage;
if (val != pack.pack->is_emoji()) { if (val != pack.pack->is_emoji()) {
pack.pack->usage.set(PackUsage::Emoji, val); pack.pack->usage.set(PackUsage::Emoji, val);
if (!val)
pack.pack->usage.set(PackUsage::Sticker, true);
emit isEmotePackChanged(); emit isEmotePackChanged();
emit isStickerPackChanged();
} }
} }