enhance(backend): フォロー・フォロワー関連の通知の受信設定の強化 (#13468)

* enhance(backend): 通知の受信設定に「フォロー中またはフォロワー」を追加

* fix(backend): 通知の受信設定で「相互フォロー」が正しく動作しない問題を修正

* Update CHANGELOG.md
This commit is contained in:
zyoshoka 2024-02-28 09:49:34 +09:00 committed by GitHub
parent f906ad6ca7
commit 0d47877db1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 62 additions and 43 deletions

View file

@ -16,6 +16,7 @@
### General ### General
- Enhance: サーバーごとにモデレーションノートを残せるように - Enhance: サーバーごとにモデレーションノートを残せるように
- Enhance: コンディショナルロールの条件に「マニュアルロールへのアサイン」を追加 - Enhance: コンディショナルロールの条件に「マニュアルロールへのアサイン」を追加
- Enhance: 通知の受信設定に「フォロー中またはフォロワー」を追加
### Client ### Client
- Enhance: ノート作成画面のファイル添付メニューの区切り線の位置を調整 - Enhance: ノート作成画面のファイル添付メニューの区切り線の位置を調整
@ -33,6 +34,7 @@
- 必須パラメータを`id`または`name`のいずれかのみに - 必須パラメータを`id`または`name`のいずれかのみに
- `id`の代わりに`name`で絵文字を指定可能に(`id`・`name`両指定時は従来通り`name`を変更する挙動) - `id`の代わりに`name`で絵文字を指定可能に(`id`・`name`両指定時は従来通り`name`を変更する挙動)
- `category`および`licence`が指定なしの時勝手にnullに上書きされる挙動を修正 - `category`および`licence`が指定なしの時勝手にnullに上書きされる挙動を修正
- Fix: 通知の受信設定で「相互フォロー」が正しく動作しない問題を修正
## 2024.2.0 ## 2024.2.0

4
locales/index.d.ts vendored
View file

@ -4656,6 +4656,10 @@ export interface Locale extends ILocale {
* *
*/ */
"mutualFollow": string; "mutualFollow": string;
/**
*
*/
"followingOrFollower": string;
/** /**
* *
*/ */

View file

@ -1160,6 +1160,7 @@ showRenotes: "リノートを表示"
edited: "編集済み" edited: "編集済み"
notificationRecieveConfig: "通知の受信設定" notificationRecieveConfig: "通知の受信設定"
mutualFollow: "相互フォロー" mutualFollow: "相互フォロー"
followingOrFollower: "フォロー中またはフォロワー"
fileAttachedOnly: "ファイル付きのみ" fileAttachedOnly: "ファイル付きのみ"
showRepliesToOthersInTimeline: "TLに他の人への返信を含める" showRepliesToOthersInTimeline: "TLに他の人への返信を含める"
hideRepliesToOthersInTimeline: "TLに他の人への返信を含めない" hideRepliesToOthersInTimeline: "TLに他の人への返信を含めない"

View file

@ -122,6 +122,14 @@ export class NotificationService implements OnApplicationShutdown {
return null; return null;
} }
} else if (recieveConfig?.type === 'mutualFollow') { } else if (recieveConfig?.type === 'mutualFollow') {
const [isFollowing, isFollower] = await Promise.all([
this.cacheService.userFollowingsCache.fetch(notifieeId).then(followings => Object.hasOwn(followings, notifierId)),
this.cacheService.userFollowingsCache.fetch(notifierId).then(followings => Object.hasOwn(followings, notifieeId)),
]);
if (!(isFollowing && isFollower)) {
return null;
}
} else if (recieveConfig?.type === 'followingOrFollower') {
const [isFollowing, isFollower] = await Promise.all([ const [isFollowing, isFollower] = await Promise.all([
this.cacheService.userFollowingsCache.fetch(notifieeId).then(followings => Object.hasOwn(followings, notifierId)), this.cacheService.userFollowingsCache.fetch(notifieeId).then(followings => Object.hasOwn(followings, notifierId)),
this.cacheService.userFollowingsCache.fetch(notifierId).then(followings => Object.hasOwn(followings, notifieeId)), this.cacheService.userFollowingsCache.fetch(notifierId).then(followings => Object.hasOwn(followings, notifieeId)),

View file

@ -249,6 +249,8 @@ export class MiUserProfile {
type: 'follower'; type: 'follower';
} | { } | {
type: 'mutualFollow'; type: 'mutualFollow';
} | {
type: 'followingOrFollower';
} | { } | {
type: 'list'; type: 'list';
userListId: MiUserList['id']; userListId: MiUserList['id'];

View file

@ -13,7 +13,7 @@ export const notificationRecieveConfig = {
type: { type: {
type: 'string', type: 'string',
nullable: false, nullable: false,
enum: ['all', 'following', 'follower', 'mutualFollow', 'never'], enum: ['all', 'following', 'follower', 'mutualFollow', 'followingOrFollower', 'never'],
}, },
}, },
required: ['type'], required: ['type'],

View file

@ -10,6 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<option value="following">{{ i18n.ts.following }}</option> <option value="following">{{ i18n.ts.following }}</option>
<option value="follower">{{ i18n.ts.followers }}</option> <option value="follower">{{ i18n.ts.followers }}</option>
<option value="mutualFollow">{{ i18n.ts.mutualFollow }}</option> <option value="mutualFollow">{{ i18n.ts.mutualFollow }}</option>
<option value="followingOrFollower">{{ i18n.ts.followingOrFollower }}</option>
<option value="list">{{ i18n.ts.userList }}</option> <option value="list">{{ i18n.ts.userList }}</option>
<option value="never">{{ i18n.ts.none }}</option> <option value="never">{{ i18n.ts.none }}</option>
</MkSelect> </MkSelect>

View file

@ -16,6 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only
$i.notificationRecieveConfig[type]?.type === 'following' ? i18n.ts.following : $i.notificationRecieveConfig[type]?.type === 'following' ? i18n.ts.following :
$i.notificationRecieveConfig[type]?.type === 'follower' ? i18n.ts.followers : $i.notificationRecieveConfig[type]?.type === 'follower' ? i18n.ts.followers :
$i.notificationRecieveConfig[type]?.type === 'mutualFollow' ? i18n.ts.mutualFollow : $i.notificationRecieveConfig[type]?.type === 'mutualFollow' ? i18n.ts.mutualFollow :
$i.notificationRecieveConfig[type]?.type === 'followingOrFollower' ? i18n.ts.followingOrFollower :
$i.notificationRecieveConfig[type]?.type === 'list' ? i18n.ts.userList : $i.notificationRecieveConfig[type]?.type === 'list' ? i18n.ts.userList :
i18n.ts.all i18n.ts.all
}} }}

View file

@ -3700,7 +3700,7 @@ export type components = {
notificationRecieveConfig: { notificationRecieveConfig: {
note?: OneOf<[{ note?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3709,7 +3709,7 @@ export type components = {
}]>; }]>;
follow?: OneOf<[{ follow?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3718,7 +3718,7 @@ export type components = {
}]>; }]>;
mention?: OneOf<[{ mention?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3727,7 +3727,7 @@ export type components = {
}]>; }]>;
reply?: OneOf<[{ reply?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3736,7 +3736,7 @@ export type components = {
}]>; }]>;
renote?: OneOf<[{ renote?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3745,7 +3745,7 @@ export type components = {
}]>; }]>;
quote?: OneOf<[{ quote?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3754,7 +3754,7 @@ export type components = {
}]>; }]>;
reaction?: OneOf<[{ reaction?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3763,7 +3763,7 @@ export type components = {
}]>; }]>;
pollEnded?: OneOf<[{ pollEnded?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3772,7 +3772,7 @@ export type components = {
}]>; }]>;
receiveFollowRequest?: OneOf<[{ receiveFollowRequest?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3781,7 +3781,7 @@ export type components = {
}]>; }]>;
followRequestAccepted?: OneOf<[{ followRequestAccepted?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3790,7 +3790,7 @@ export type components = {
}]>; }]>;
roleAssigned?: OneOf<[{ roleAssigned?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3799,7 +3799,7 @@ export type components = {
}]>; }]>;
achievementEarned?: OneOf<[{ achievementEarned?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3808,7 +3808,7 @@ export type components = {
}]>; }]>;
app?: OneOf<[{ app?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -3817,7 +3817,7 @@ export type components = {
}]>; }]>;
test?: OneOf<[{ test?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8436,7 +8436,7 @@ export type operations = {
notificationRecieveConfig: { notificationRecieveConfig: {
note?: OneOf<[{ note?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8445,7 +8445,7 @@ export type operations = {
}]>; }]>;
follow?: OneOf<[{ follow?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8454,7 +8454,7 @@ export type operations = {
}]>; }]>;
mention?: OneOf<[{ mention?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8463,7 +8463,7 @@ export type operations = {
}]>; }]>;
reply?: OneOf<[{ reply?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8472,7 +8472,7 @@ export type operations = {
}]>; }]>;
renote?: OneOf<[{ renote?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8481,7 +8481,7 @@ export type operations = {
}]>; }]>;
quote?: OneOf<[{ quote?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8490,7 +8490,7 @@ export type operations = {
}]>; }]>;
reaction?: OneOf<[{ reaction?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8499,7 +8499,7 @@ export type operations = {
}]>; }]>;
pollEnded?: OneOf<[{ pollEnded?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8508,7 +8508,7 @@ export type operations = {
}]>; }]>;
receiveFollowRequest?: OneOf<[{ receiveFollowRequest?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8517,7 +8517,7 @@ export type operations = {
}]>; }]>;
followRequestAccepted?: OneOf<[{ followRequestAccepted?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8526,7 +8526,7 @@ export type operations = {
}]>; }]>;
roleAssigned?: OneOf<[{ roleAssigned?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8535,7 +8535,7 @@ export type operations = {
}]>; }]>;
achievementEarned?: OneOf<[{ achievementEarned?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8544,7 +8544,7 @@ export type operations = {
}]>; }]>;
app?: OneOf<[{ app?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -8553,7 +8553,7 @@ export type operations = {
}]>; }]>;
test?: OneOf<[{ test?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18787,7 +18787,7 @@ export type operations = {
notificationRecieveConfig?: { notificationRecieveConfig?: {
note?: OneOf<[{ note?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18796,7 +18796,7 @@ export type operations = {
}]>; }]>;
follow?: OneOf<[{ follow?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18805,7 +18805,7 @@ export type operations = {
}]>; }]>;
mention?: OneOf<[{ mention?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18814,7 +18814,7 @@ export type operations = {
}]>; }]>;
reply?: OneOf<[{ reply?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18823,7 +18823,7 @@ export type operations = {
}]>; }]>;
renote?: OneOf<[{ renote?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18832,7 +18832,7 @@ export type operations = {
}]>; }]>;
quote?: OneOf<[{ quote?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18841,7 +18841,7 @@ export type operations = {
}]>; }]>;
reaction?: OneOf<[{ reaction?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18850,7 +18850,7 @@ export type operations = {
}]>; }]>;
pollEnded?: OneOf<[{ pollEnded?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18859,7 +18859,7 @@ export type operations = {
}]>; }]>;
receiveFollowRequest?: OneOf<[{ receiveFollowRequest?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18868,7 +18868,7 @@ export type operations = {
}]>; }]>;
followRequestAccepted?: OneOf<[{ followRequestAccepted?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18877,7 +18877,7 @@ export type operations = {
}]>; }]>;
roleAssigned?: OneOf<[{ roleAssigned?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18886,7 +18886,7 @@ export type operations = {
}]>; }]>;
achievementEarned?: OneOf<[{ achievementEarned?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18895,7 +18895,7 @@ export type operations = {
}]>; }]>;
app?: OneOf<[{ app?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';
@ -18904,7 +18904,7 @@ export type operations = {
}]>; }]>;
test?: OneOf<[{ test?: OneOf<[{
/** @enum {string} */ /** @enum {string} */
type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'never'; type: 'all' | 'following' | 'follower' | 'mutualFollow' | 'followingOrFollower' | 'never';
}, { }, {
/** @enum {string} */ /** @enum {string} */
type: 'list'; type: 'list';