added chat 3

This commit is contained in:
2026-07-30 20:43:12 +03:30
parent f4733214ed
commit 3d86b56c7b
3 changed files with 21 additions and 7 deletions
+8 -4
View File
@@ -427,13 +427,17 @@ async function initConfig() {
applyAppNotificationEnabledFromRows(baseData.value) applyAppNotificationEnabledFromRows(baseData.value)
applyPriceProviderFromRows(baseData.value) applyPriceProviderFromRows(baseData.value)
applySupportChatMenuEnabledFromRows(baseData.value) applySupportChatMenuEnabledFromRows(baseData.value)
// در صفحهٔ عادی price_provider (can_edit=0) نیست — از کل تنظیمات بخوان // در صفحهٔ عادی price_provider و show_to_users_chat (can_edit=0) نیستند — از کل تنظیمات بخوان
if (!baseData.value.some((row) => row.key === 'price_provider')) { if (
!baseData.value.some((row) => row.key === 'price_provider') ||
!baseData.value.some((row) => row.key === 'show_to_users_chat')
) {
try { try {
const { getConfiguration } = await import('@/api/configuration') const { getConfiguration } = await import('@/api/configuration')
const all = await getConfiguration() const all = await getConfiguration()
applyPriceProviderFromRows(Array.isArray(all) ? all : []) const rows = Array.isArray(all) ? all : []
applySupportChatMenuEnabledFromRows(Array.isArray(all) ? all : []) applyPriceProviderFromRows(rows)
applySupportChatMenuEnabledFromRows(rows)
} catch { } catch {
/* کش قبلی می‌ماند */ /* کش قبلی می‌ماند */
} }
@@ -1,5 +1,5 @@
import type { Const } from '@/model/configuration' import type { Const } from '@/model/configuration'
import { conditionalOrderEnabledSetting, isStoreApp, priceProviderSetting } from '@/utils/config' import { conditionalOrderEnabledSetting, isStoreApp, priceProviderSetting, showToUsersChatSetting } from '@/utils/config'
export type SettingFieldType = export type SettingFieldType =
| 'text' | 'text'
@@ -209,6 +209,8 @@ export function isSettingVisible(key: string | undefined | null): boolean {
if (HIDDEN_LEGACY_SETTING_KEYS.has(k)) return false if (HIDDEN_LEGACY_SETTING_KEYS.has(k)) return false
if (STORE_ONLY_SETTING_KEYS.has(k) && !isStoreApp()) return false if (STORE_ONLY_SETTING_KEYS.has(k) && !isStoreApp()) return false
if (k === 'fee_conditional_order' && !conditionalOrderEnabledSetting.value) return false if (k === 'fee_conditional_order' && !conditionalOrderEnabledSetting.value) return false
// سوییچ مشتری has_chat فقط وقتی قابلیت چت دیپلوی روشن است
if (k === 'has_chat' && !showToUsersChatSetting.value) return false
// گروه همکار Montzar فقط وقتی منبع قیمت montzar است // گروه همکار Montzar فقط وقتی منبع قیمت montzar است
if ((k.startsWith('montzar_') || k === 'display_montzar') && priceProviderSetting.value !== 'montzar') { if ((k.startsWith('montzar_') || k === 'display_montzar') && priceProviderSetting.value !== 'montzar') {
return false return false
@@ -689,9 +691,9 @@ const KEY_HELP_FALLBACK: Record<string, string> = {
support_messengers: support_messengers:
'فقط مواردی که در این لیست ثبت شوند در منوی شناور پشتیبانی اپ مشتری نمایش داده می‌شوند. برای تماس تلفنی یا پیامک، نوع «تماس تلفنی» / «پیامک» را با شماره اضافه کنید. لیست می‌تواند خالی باشد؛ اگر چت فعال باشد، پشتیبانی مستقیم به صفحه چت می‌رود.', 'فقط مواردی که در این لیست ثبت شوند در منوی شناور پشتیبانی اپ مشتری نمایش داده می‌شوند. برای تماس تلفنی یا پیامک، نوع «تماس تلفنی» / «پیامک» را با شماره اضافه کنید. لیست می‌تواند خالی باشد؛ اگر چت فعال باشد، پشتیبانی مستقیم به صفحه چت می‌رود.',
show_to_users_chat: show_to_users_chat:
'روشن: قابلیت چت پشتیبانی برای این دیپلوی فعال است (منوی ادمین و پیش‌نیاز نمایش به کاربر). خاموش: چت در ادمین و اپ کاربر مخفی است. سوییچ مشتری (has_chat) جداگانه در تنظیمات عادی است.', 'روشن: قابلیت چت پشتیبانی برای این دیپلوی فعال است (منوی ادمین و پیش‌نیاز نمایش به کاربر). خاموش: چت در ادمین و اپ کاربر مخفی است و سوییچ «چت پشتیبانی» (has_chat) از تنظیمات عادی هم برداشته می‌شود.',
has_chat: has_chat:
'روشن: چت پشتیبانی در اپ مشتری نمایش داده می‌شود (اگر نمایش چت به کاربران هم روشن باشد). خاموش: دکمه و صفحه چت برای کاربر مخفی است.', 'روشن: چت پشتیبانی در اپ مشتری نمایش داده می‌شود (فقط وقتی show_to_users_chat هم روشن باشد). خاموش: دکمه و صفحه چت برای کاربر مخفی است.',
chat_api: chat_api:
'هاست سرور چت جدا (بدون https)، مثلاً chat.example.ir — برای WebSocket و ساخت روم.', 'هاست سرور چت جدا (بدون https)، مثلاً chat.example.ir — برای WebSocket و ساخت روم.',
chat_api_key: chat_api_key:
+8
View File
@@ -58,6 +58,9 @@ export const priceProviderSetting = ref('')
/** reactive — منوی افقی / دکمه «چت پشتیبانی» */ /** reactive — منوی افقی / دکمه «چت پشتیبانی» */
export const supportChatMenuEnabledSetting = ref(false) export const supportChatMenuEnabledSetting = ref(false)
/** reactive — سوییچ دیپلوی show_to_users_chat (برای مخفی کردن has_chat در تنظیمات عادی) */
export const showToUsersChatSetting = ref(false)
export const accountingProviderSetting = ref<AccountingProvider>('none') export const accountingProviderSetting = ref<AccountingProvider>('none')
let tahesabEnabledFromSettings: boolean | null = null let tahesabEnabledFromSettings: boolean | null = null
@@ -153,6 +156,10 @@ export function setSupportChatMenuEnabledFromSettings(value: boolean): void {
supportChatMenuEnabledSetting.value = value supportChatMenuEnabledSetting.value = value
} }
export function setShowToUsersChatFromSettings(value: boolean): void {
showToUsersChatSetting.value = value
}
let lastShowToUsersChat = '' let lastShowToUsersChat = ''
let lastHasChat = '' let lastHasChat = ''
let lastChatApi = '' let lastChatApi = ''
@@ -189,6 +196,7 @@ export function applySupportChatMenuEnabledFromRows(
} }
if (!touched) return if (!touched) return
setShowToUsersChatFromSettings(isSwitchOn(lastShowToUsersChat))
setSupportChatMenuEnabledFromSettings( setSupportChatMenuEnabledFromSettings(
resolveSupportChatMenuEnabled((key) => { resolveSupportChatMenuEnabled((key) => {
if (key === 'show_to_users_chat') return lastShowToUsersChat if (key === 'show_to_users_chat') return lastShowToUsersChat