weiterraten
This commit is contained in:
parent
9bda6c6f92
commit
ae0587e94f
|
|
@ -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}
|
||||
|
|
@ -71,4 +89,4 @@ export default function addTeamsSettings() {
|
|||
extend(SettingsPage.prototype, 'content', function (vnode) {
|
||||
vnode.children.push(<TeamsSettingsBlock />);
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue