weiterraten

This commit is contained in:
JM 2026-05-06 13:19:17 +02:00
parent 9bda6c6f92
commit ae0587e94f
1 changed files with 29 additions and 11 deletions

View File

@ -8,7 +8,7 @@ class TeamsSettingsBlock extends Component {
oninit(vnode) {
super.oninit(vnode);
// Serialisiert Saves, damit schnelle Klicks nicht zu "last write wins" führen.
// Serielle Saves verhindern "Überholen" bei schnellen Klicks.
this.saveChain = Promise.resolve();
}
@ -19,15 +19,17 @@ class TeamsSettingsBlock extends Component {
view() {
const user = app.session.user;
// Sicherheitscheck: SettingsPage ist nur für eingeloggte Nutzer, aber defensiv bleibt defensiv.
if (!user) return null;
return (
<div className="TeamsSettings Block">
<h3>Microsoft Teams</h3>
{this.prefSwitch(user, 'sbp-jm-msteams.enabled', 'Enable Microsoft Teams notifications')}
{this.prefSwitch(
user,
'sbp-jm-msteams.enabled',
'Enable Microsoft Teams notifications'
)}
<div className="TeamsSettings-options">
{this.prefSwitch(
@ -36,9 +38,17 @@ class TeamsSettingsBlock extends Component {
'Someone replies to a discussion I am following'
)}
{this.prefSwitch(user, 'sbp-jm-msteams.types.postMentioned', 'Someone mentions me in a post')}
{this.prefSwitch(
user,
'sbp-jm-msteams.types.postMentioned',
'Someone mentions me in a post'
)}
{this.prefSwitch(user, 'sbp-jm-msteams.types.userMentioned', 'Someone mentions me')}
{this.prefSwitch(
user,
'sbp-jm-msteams.types.userMentioned',
'Someone mentions me'
)}
</div>
</div>
);
@ -51,14 +61,22 @@ class TeamsSettingsBlock extends Component {
<Switch
state={!!prefs[key]}
onchange={(value) => {
// Wichtig: Merge statt Partial-Objekt, damit andere Toggles nicht "verschwinden"
// (Front-end Model hält preferences als ein Attribut).
const before = user.preferences() || {};
// ✅ KORREKT: Key dynamisch setzen
const merged = {
...(user.preferences() || {}),
...before,
[key]: value,
};
return this.queueSave(user, merged);
// Debug-Ausgaben (hilft beim Verifizieren)
console.log('[msteams prefs] key', key, 'value', value);
console.log('[msteams prefs] before', before);
console.log('[msteams prefs] merged', merged);
return this.queueSave(user, merged).then(() => {
console.log('[msteams prefs] after', user.preferences() || {});
});
}}
>
{label}