diff --git a/src/pages/menuPages/configuration/index.vue b/src/pages/menuPages/configuration/index.vue index 2bd22fa..234e00f 100644 --- a/src/pages/menuPages/configuration/index.vue +++ b/src/pages/menuPages/configuration/index.vue @@ -427,13 +427,17 @@ async function initConfig() { applyAppNotificationEnabledFromRows(baseData.value) applyPriceProviderFromRows(baseData.value) applySupportChatMenuEnabledFromRows(baseData.value) - // در صفحهٔ عادی price_provider (can_edit=0) نیست — از کل تنظیمات بخوان - if (!baseData.value.some((row) => row.key === 'price_provider')) { + // در صفحهٔ عادی price_provider و show_to_users_chat (can_edit=0) نیستند — از کل تنظیمات بخوان + if ( + !baseData.value.some((row) => row.key === 'price_provider') || + !baseData.value.some((row) => row.key === 'show_to_users_chat') + ) { try { const { getConfiguration } = await import('@/api/configuration') const all = await getConfiguration() - applyPriceProviderFromRows(Array.isArray(all) ? all : []) - applySupportChatMenuEnabledFromRows(Array.isArray(all) ? all : []) + const rows = Array.isArray(all) ? all : [] + applyPriceProviderFromRows(rows) + applySupportChatMenuEnabledFromRows(rows) } catch { /* کش قبلی می‌ماند */ } diff --git a/src/pages/menuPages/configuration/settingTypes.ts b/src/pages/menuPages/configuration/settingTypes.ts index a937c60..734a310 100644 --- a/src/pages/menuPages/configuration/settingTypes.ts +++ b/src/pages/menuPages/configuration/settingTypes.ts @@ -1,5 +1,5 @@ import type { Const } from '@/model/configuration' -import { conditionalOrderEnabledSetting, isStoreApp, priceProviderSetting } from '@/utils/config' +import { conditionalOrderEnabledSetting, isStoreApp, priceProviderSetting, showToUsersChatSetting } from '@/utils/config' export type SettingFieldType = | 'text' @@ -209,6 +209,8 @@ export function isSettingVisible(key: string | undefined | null): boolean { if (HIDDEN_LEGACY_SETTING_KEYS.has(k)) return false if (STORE_ONLY_SETTING_KEYS.has(k) && !isStoreApp()) return false if (k === 'fee_conditional_order' && !conditionalOrderEnabledSetting.value) return false + // سوییچ مشتری has_chat فقط وقتی قابلیت چت دیپلوی روشن است + if (k === 'has_chat' && !showToUsersChatSetting.value) return false // گروه همکار Montzar فقط وقتی منبع قیمت montzar است if ((k.startsWith('montzar_') || k === 'display_montzar') && priceProviderSetting.value !== 'montzar') { return false @@ -689,9 +691,9 @@ const KEY_HELP_FALLBACK: Record = { support_messengers: 'فقط مواردی که در این لیست ثبت شوند در منوی شناور پشتیبانی اپ مشتری نمایش داده می‌شوند. برای تماس تلفنی یا پیامک، نوع «تماس تلفنی» / «پیامک» را با شماره اضافه کنید. لیست می‌تواند خالی باشد؛ اگر چت فعال باشد، پشتیبانی مستقیم به صفحه چت می‌رود.', show_to_users_chat: - 'روشن: قابلیت چت پشتیبانی برای این دیپلوی فعال است (منوی ادمین و پیش‌نیاز نمایش به کاربر). خاموش: چت در ادمین و اپ کاربر مخفی است. سوییچ مشتری (has_chat) جداگانه در تنظیمات عادی است.', + 'روشن: قابلیت چت پشتیبانی برای این دیپلوی فعال است (منوی ادمین و پیش‌نیاز نمایش به کاربر). خاموش: چت در ادمین و اپ کاربر مخفی است و سوییچ «چت پشتیبانی» (has_chat) از تنظیمات عادی هم برداشته می‌شود.', has_chat: - 'روشن: چت پشتیبانی در اپ مشتری نمایش داده می‌شود (اگر نمایش چت به کاربران هم روشن باشد). خاموش: دکمه و صفحه چت برای کاربر مخفی است.', + 'روشن: چت پشتیبانی در اپ مشتری نمایش داده می‌شود (فقط وقتی show_to_users_chat هم روشن باشد). خاموش: دکمه و صفحه چت برای کاربر مخفی است.', chat_api: 'هاست سرور چت جدا (بدون https)، مثلاً chat.example.ir — برای WebSocket و ساخت روم.', chat_api_key: diff --git a/src/utils/config.ts b/src/utils/config.ts index ccaae8e..074e16a 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -58,6 +58,9 @@ export const priceProviderSetting = ref('') /** reactive — منوی افقی / دکمه «چت پشتیبانی» */ export const supportChatMenuEnabledSetting = ref(false) +/** reactive — سوییچ دیپلوی show_to_users_chat (برای مخفی کردن has_chat در تنظیمات عادی) */ +export const showToUsersChatSetting = ref(false) + export const accountingProviderSetting = ref('none') let tahesabEnabledFromSettings: boolean | null = null @@ -153,6 +156,10 @@ export function setSupportChatMenuEnabledFromSettings(value: boolean): void { supportChatMenuEnabledSetting.value = value } +export function setShowToUsersChatFromSettings(value: boolean): void { + showToUsersChatSetting.value = value +} + let lastShowToUsersChat = '' let lastHasChat = '' let lastChatApi = '' @@ -189,6 +196,7 @@ export function applySupportChatMenuEnabledFromRows( } if (!touched) return + setShowToUsersChatFromSettings(isSwitchOn(lastShowToUsersChat)) setSupportChatMenuEnabledFromSettings( resolveSupportChatMenuEnabled((key) => { if (key === 'show_to_users_chat') return lastShowToUsersChat