From 5176447e69c948dd68f1cc4fe5bd93e910b004ca Mon Sep 17 00:00:00 2001 From: pa Date: Tue, 25 Nov 2025 22:00:05 +0900 Subject: [PATCH] add enable mutual friends sharing prompt --- .../dialogs/UserDialog/UserDialog.vue | 9 ++------ src/localization/en.json | 6 +++++ src/stores/user.js | 10 +++++++- src/views/Charts/components/MutualFriends.vue | 23 +++++++++++++++++++ 4 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/components/dialogs/UserDialog/UserDialog.vue b/src/components/dialogs/UserDialog/UserDialog.vue index 88c68333..41897079 100644 --- a/src/components/dialogs/UserDialog/UserDialog.vue +++ b/src/components/dialogs/UserDialog/UserDialog.vue @@ -1418,7 +1418,8 @@ sortUserDialogAvatars, refreshUserDialogAvatars, refreshUserDialogTreeData, - showSendBoopDialog + showSendBoopDialog, + toggleSharedConnectionsOptOut } = useUserStore(); const { favoriteLimits } = storeToRefs(useFavoriteStore()); const { showFavoriteDialog, handleFavoriteWorldList } = useFavoriteStore(); @@ -2443,12 +2444,6 @@ }); } - function toggleSharedConnectionsOptOut() { - userRequest.saveCurrentUser({ - hasSharedConnectionsOptOut: !currentUser.value.hasSharedConnectionsOptOut - }); - } - function resetHome() { ElMessageBox.confirm('Continue? Reset Home', 'Confirm', { confirmButtonText: 'Confirm', diff --git a/src/localization/en.json b/src/localization/en.json index 4f55864b..84bebf5f 100644 --- a/src/localization/en.json +++ b/src/localization/en.json @@ -320,6 +320,12 @@ "confirm": "Start Fetch", "cancel": "Maybe Later" }, + "enable_sharing_prompt": { + "title": "Enable Mutual Friends Sharing", + "message": "Mutual friends sharing is currently disabled. Do you want to enable it now?", + "confirm": "Enable", + "cancel": "Cancel" + }, "messages": { "fetch_cancelled_graph_not_updated": "Fetch cancelled" }, diff --git a/src/stores/user.js b/src/stores/user.js index 8ae8c201..ec6ba71a 100644 --- a/src/stores/user.js +++ b/src/stores/user.js @@ -2021,6 +2021,13 @@ export const useUserStore = defineStore('User', () => { sendBoopDialog.value.visible = true; } + function toggleSharedConnectionsOptOut() { + userRequest.saveCurrentUser({ + hasSharedConnectionsOptOut: + !currentUser.value.hasSharedConnectionsOptOut + }); + } + return { state, @@ -2048,6 +2055,7 @@ export const useUserStore = defineStore('User', () => { getCurrentUser, handleConfig, showSendBoopDialog, - checkNote + checkNote, + toggleSharedConnectionsOptOut }; }); diff --git a/src/views/Charts/components/MutualFriends.vue b/src/views/Charts/components/MutualFriends.vue index ea778540..7499985b 100644 --- a/src/views/Charts/components/MutualFriends.vue +++ b/src/views/Charts/components/MutualFriends.vue @@ -189,6 +189,10 @@ try { const snapshot = await database.getMutualGraphSnapshot(); if (!snapshot || snapshot.size === 0) { + if (isOptOut.value) { + promptEnableMutualFriendsSharing(); + return; + } await promptInitialFetch(); return; } @@ -239,6 +243,25 @@ } } + function promptEnableMutualFriendsSharing() { + ElMessageBox.confirm( + t('view.charts.mutual_friend.enable_sharing_prompt.message'), + t('view.charts.mutual_friend.enable_sharing_prompt.title'), + { + confirmButtonText: t('view.charts.mutual_friend.enable_sharing_prompt.confirm'), + cancelButtonText: t('view.charts.mutual_friend.enable_sharing_prompt.cancel'), + type: 'info' + } + ) + .then(() => { + userStore.toggleSharedConnectionsOptOut(); + promptInitialFetch(); + }) + .catch(() => { + // cancelled + }); + } + function cancelFetch() { if (isFetching.value) { status.cancelRequested = true;