allow disabling achievement notifications #319

This is currently the only configurable notification type that can
only be set to "all" or "none", all the others allow filtering by
sender user, so I had to tweak the drop-down

This opens the way to also eaisly make `note`, `roleAssigned` and
`followRequestAccepted` configurable.

Tested using the API console and sending requests to
`i/claim-achievement`. When the setting was "all", the achievement was
notified and it appeared in `/my/achievements`; when the setting was
"none", the achievement only appeared in `/my/achievements` but no
notification was generated.
This commit is contained in:
dakkar 2024-02-09 11:34:44 +00:00
parent 34b4646b9f
commit 7e05e4c0d9
2 changed files with 12 additions and 8 deletions

View file

@ -21,7 +21,7 @@ SPDX-License-Identifier: AGPL-3.0-only
}}
</template>
<XNotificationConfig :userLists="userLists" :value="$i.notificationRecieveConfig[type] ?? { type: 'all' }" @update="(res) => updateReceiveConfig(type, res)"/>
<XNotificationConfig :userLists="userLists" :value="$i.notificationRecieveConfig[type] ?? { type: 'all' }" :hasSender="!(notificationTypesWithoutSender.includes(type))" @update="(res) => updateReceiveConfig(type, res)"/>
</MkFolder>
</div>
</FormSection>
@ -71,7 +71,8 @@ import { notificationTypes } from '@/const.js';
const $i = signinRequired();
const nonConfigurableNotificationTypes = ['note', 'roleAssigned', 'followRequestAccepted', 'achievementEarned'];
const nonConfigurableNotificationTypes = ['note', 'roleAssigned', 'followRequestAccepted'];
const notificationTypesWithoutSender = ['achievementEarned'];
const allowButton = shallowRef<InstanceType<typeof MkPushNotificationAllowButton>>();
const pushRegistrationInServer = computed(() => allowButton.value?.pushRegistrationInServer);