Add support for hasSharedConnectionsOptOut

This commit is contained in:
Natsumi
2025-11-11 18:50:41 +11:00
parent 19b9895864
commit 7ae1892938
4 changed files with 45 additions and 9 deletions
@@ -266,6 +266,10 @@ div.x-friend-list
border-color: $--theme-border-2; border-color: $--theme-border-2;
} }
.el-button.is-text:not(.is-disabled):hover {
background-color: unset;
}
.el-button:not(.el-button--text, .el-button--primary, .is-disabled):focus, .el-button:not(.el-button--text, .el-button--primary, .is-disabled):focus,
.el-button:not(.el-button--text, .el-button--primary, .is-disabled):hover { .el-button:not(.el-button--text, .el-button--primary, .is-disabled):hover {
color: $--theme-text-1 !important; color: $--theme-text-1 !important;
@@ -435,6 +435,20 @@
}}</span> }}</span>
</div> </div>
</div> </div>
<div class="x-friend-item" @click="toggleSharedConnectionsOptOut">
<div class="detail">
<span class="name">{{ t('dialog.user.info.show_mutual_friends') }}</span>
<span
v-if="!currentUser.hasSharedConnectionsOptOut"
class="extra"
style="color: #67c23a"
>{{ t('dialog.user.info.avatar_cloning_allow') }}</span
>
<span v-else class="extra" style="color: #f56c6c">{{
t('dialog.user.info.avatar_cloning_deny')
}}</span>
</div>
</div>
</template> </template>
<template v-else> <template v-else>
<div class="x-friend-item" style="cursor: default"> <div class="x-friend-item" style="cursor: default">
@@ -2164,6 +2178,9 @@
} }
async function getUserMutualFriends(userId) { async function getUserMutualFriends(userId) {
if (currentUser.value.hasSharedConnectionsOptOut) {
return;
}
userDialog.value.isMutualFriendsLoading = true; userDialog.value.isMutualFriendsLoading = true;
userDialog.value.mutualFriends = []; userDialog.value.mutualFriends = [];
const params = { const params = {
@@ -2414,6 +2431,12 @@
}); });
} }
function toggleSharedConnectionsOptOut() {
userRequest.saveCurrentUser({
hasSharedConnectionsOptOut: !currentUser.value.hasSharedConnectionsOptOut
});
}
function resetHome() { function resetHome() {
ElMessageBox.confirm('Continue? Reset Home', 'Confirm', { ElMessageBox.confirm('Continue? Reset Home', 'Confirm', {
confirmButtonText: 'Confirm', confirmButtonText: 'Confirm',
+2 -1
View File
@@ -886,7 +886,8 @@
"instance_hard_closed": "Instance hard closed", "instance_hard_closed": "Instance hard closed",
"close_instance": "Close Instance", "close_instance": "Close Instance",
"instance_age_gated": "age gated", "instance_age_gated": "age gated",
"open_previous_instance": "Open Previous Instances" "open_previous_instance": "Open Previous Instances",
"show_mutual_friends": "Show Mutual Friends"
}, },
"groups": { "groups": {
"header": "Groups", "header": "Groups",
+16 -8
View File
@@ -99,6 +99,7 @@ export const useUserStore = defineStore('User', () => {
hasEmail: false, hasEmail: false,
hasLoggedInFromClient: false, hasLoggedInFromClient: false,
hasPendingEmail: false, hasPendingEmail: false,
hasSharedConnectionsOptOut: false,
hideContentFilterSettings: false, hideContentFilterSettings: false,
homeLocation: '', homeLocation: '',
id: '', id: '',
@@ -961,14 +962,21 @@ export const useUserStore = defineStore('User', () => {
D.isShowAvatar = true; D.isShowAvatar = true;
} }
}); });
userRequest if (!currentUser.value.hasSharedConnectionsOptOut) {
.getMutualCounts({ userId }) userRequest
.then((args) => { .getMutualCounts({ userId })
if (args.params.userId === D.id) { .then((args) => {
D.mutualFriendCount = args.json.friends; if (args.params.userId === D.id) {
D.mutualGroupCount = args.json.groups; D.mutualFriendCount =
} args.json.friends;
}); D.mutualGroupCount =
args.json.groups;
}
})
.catch((error) => {
console.error(error);
});
}
} else { } else {
D.previousDisplayNames = D.previousDisplayNames =
currentUser.value.pastDisplayNames; currentUser.value.pastDisplayNames;