mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-02 20:18:08 +00:00 
			
		
		
		
	# Pull Request Template ## Description With these fixes, I could improve some translations in portuguese, and also I added some improvements to make some drowpdown values, that were not translatable into translatable strings, into the Automations, Macros and Custom Attributes page. I also fixed some typos. Here are the main improvements. - ~Fixed typo in portuguese into `Reports > Agents` page:~ ~Before:  After: ~ - Added the possibility to make the `Priority` and `Message types` translatables in other languages, into Macros and Automations page. Also added the same feature for Custom attributes page at `applies to` and `type` fields: Before:     After:     - ~Improve Bots page. In the Brazilian portuguese is very common and widely used bots to refer to chatbots, using `robô` as a direct translations sounds weird, `robô` is used more often when we are talking about robots, not chatbots. Before:  After: ~ - Added multiselect both `no options` and `Select` placeholder translatable strings: Before:   After:  - Added `.pnpm-store` to `.gitignore`, when I'm using docker, the pnpm always creates this folder into my root directory, so I imagine the same could happens with others, so I fixed it. ## Type of change Please delete options that are not relevant. - [x] Bug fix (non-breaking change which fixes an issue) - [x] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality not to work as expected) - [ ] This change requires a documentation update ## How Has This Been Tested? I've added some translations for my language (brazilian portuguese), so i just switched the languages between the original in EN to PT_BR. ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [x] Any dependent changes have been merged and published in downstream modules --------- Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: iamsivin <iamsivin@gmail.com> Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
		
			
				
	
	
		
			152 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { computed } from 'vue';
 | 
						|
import { useI18n } from 'vue-i18n';
 | 
						|
import languages from 'dashboard/components/widgets/conversation/advancedFilterItems/languages';
 | 
						|
import countries from 'shared/constants/countries';
 | 
						|
import { useStoreGetters, useMapGetter } from 'dashboard/composables/store';
 | 
						|
 | 
						|
import {
 | 
						|
  getActionOptions,
 | 
						|
  getConditionOptions,
 | 
						|
} from 'dashboard/helper/automationHelper';
 | 
						|
import {
 | 
						|
  MESSAGE_CONDITION_VALUES,
 | 
						|
  PRIORITY_CONDITION_VALUES,
 | 
						|
} from 'dashboard/constants/automation';
 | 
						|
 | 
						|
/**
 | 
						|
 * This is a shared composables that holds utilites used to build dropdown and file options
 | 
						|
 * @returns {Object} An object containing various automation-related functions and computed properties.
 | 
						|
 */
 | 
						|
export default function useAutomationValues() {
 | 
						|
  const getters = useStoreGetters();
 | 
						|
  const { t } = useI18n();
 | 
						|
  const agents = useMapGetter('agents/getAgents');
 | 
						|
  const campaigns = useMapGetter('campaigns/getAllCampaigns');
 | 
						|
  const contacts = useMapGetter('contacts/getContacts');
 | 
						|
  const inboxes = useMapGetter('inboxes/getInboxes');
 | 
						|
  const labels = useMapGetter('labels/getLabels');
 | 
						|
  const teams = useMapGetter('teams/getTeams');
 | 
						|
  const slaPolicies = useMapGetter('sla/getSLA');
 | 
						|
 | 
						|
  const booleanFilterOptions = computed(() => [
 | 
						|
    { id: true, name: t('FILTER.ATTRIBUTE_LABELS.TRUE') },
 | 
						|
    { id: false, name: t('FILTER.ATTRIBUTE_LABELS.FALSE') },
 | 
						|
  ]);
 | 
						|
 | 
						|
  const statusFilterItems = computed(() => {
 | 
						|
    return {
 | 
						|
      open: {
 | 
						|
        TEXT: t('CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.open.TEXT'),
 | 
						|
      },
 | 
						|
      resolved: {
 | 
						|
        TEXT: t('CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.resolved.TEXT'),
 | 
						|
      },
 | 
						|
      pending: {
 | 
						|
        TEXT: t('CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.pending.TEXT'),
 | 
						|
      },
 | 
						|
      snoozed: {
 | 
						|
        TEXT: t('CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.snoozed.TEXT'),
 | 
						|
      },
 | 
						|
      all: {
 | 
						|
        TEXT: t('CHAT_LIST.CHAT_STATUS_FILTER_ITEMS.all.TEXT'),
 | 
						|
      },
 | 
						|
    };
 | 
						|
  });
 | 
						|
 | 
						|
  const statusFilterOptions = computed(() => {
 | 
						|
    const statusFilters = statusFilterItems.value;
 | 
						|
    return [
 | 
						|
      ...Object.keys(statusFilters).map(status => ({
 | 
						|
        id: status,
 | 
						|
        name: statusFilters[status].TEXT,
 | 
						|
      })),
 | 
						|
      { id: 'all', name: t('CHAT_LIST.FILTER_ALL') },
 | 
						|
    ];
 | 
						|
  });
 | 
						|
 | 
						|
  const messageTypeOptions = computed(() =>
 | 
						|
    MESSAGE_CONDITION_VALUES.map(item => ({
 | 
						|
      id: item.id,
 | 
						|
      name: t(`AUTOMATION.MESSAGE_TYPES.${item.i18nKey}`),
 | 
						|
    }))
 | 
						|
  );
 | 
						|
 | 
						|
  const priorityOptions = computed(() =>
 | 
						|
    PRIORITY_CONDITION_VALUES.map(item => ({
 | 
						|
      id: item.id,
 | 
						|
      name: t(`AUTOMATION.PRIORITY_TYPES.${item.i18nKey}`),
 | 
						|
    }))
 | 
						|
  );
 | 
						|
 | 
						|
  /**
 | 
						|
   * Adds a translated "None" option to the beginning of a list
 | 
						|
   * @param {Array} list - The list to add "None" to
 | 
						|
   * @returns {Array} A new array with "None" option at the beginning
 | 
						|
   */
 | 
						|
  const addNoneToList = list => [
 | 
						|
    {
 | 
						|
      id: 'nil',
 | 
						|
      name: t('AUTOMATION.NONE_OPTION') || 'None',
 | 
						|
    },
 | 
						|
    ...(list || []),
 | 
						|
  ];
 | 
						|
 | 
						|
  /**
 | 
						|
   * Gets the condition dropdown values for a given type.
 | 
						|
   * @param {string} type - The type of condition.
 | 
						|
   * @returns {Array} An array of condition dropdown values.
 | 
						|
   */
 | 
						|
  const getConditionDropdownValues = type => {
 | 
						|
    return getConditionOptions({
 | 
						|
      agents: agents.value,
 | 
						|
      booleanFilterOptions: booleanFilterOptions.value,
 | 
						|
      campaigns: campaigns.value,
 | 
						|
      contacts: contacts.value,
 | 
						|
      customAttributes: getters['attributes/getAttributes'].value,
 | 
						|
      inboxes: inboxes.value,
 | 
						|
      statusFilterOptions: statusFilterOptions.value,
 | 
						|
      priorityOptions: priorityOptions.value,
 | 
						|
      messageTypeOptions: messageTypeOptions.value,
 | 
						|
      teams: teams.value,
 | 
						|
      languages,
 | 
						|
      countries,
 | 
						|
      type,
 | 
						|
    });
 | 
						|
  };
 | 
						|
 | 
						|
  /**
 | 
						|
   * Gets the action dropdown values for a given type.
 | 
						|
   * @param {string} type - The type of action.
 | 
						|
   * @returns {Array} An array of action dropdown values.
 | 
						|
   */
 | 
						|
  const getActionDropdownValues = type => {
 | 
						|
    return getActionOptions({
 | 
						|
      agents: agents.value,
 | 
						|
      labels: labels.value,
 | 
						|
      teams: teams.value,
 | 
						|
      slaPolicies: slaPolicies.value,
 | 
						|
      languages,
 | 
						|
      type,
 | 
						|
      addNoneToListFn: addNoneToList,
 | 
						|
      priorityOptions: priorityOptions.value,
 | 
						|
    });
 | 
						|
  };
 | 
						|
 | 
						|
  return {
 | 
						|
    booleanFilterOptions,
 | 
						|
    statusFilterItems,
 | 
						|
    statusFilterOptions,
 | 
						|
    priorityOptions,
 | 
						|
    messageTypeOptions,
 | 
						|
    getConditionDropdownValues,
 | 
						|
    getActionDropdownValues,
 | 
						|
    agents,
 | 
						|
    campaigns,
 | 
						|
    contacts,
 | 
						|
    inboxes,
 | 
						|
    labels,
 | 
						|
    teams,
 | 
						|
    slaPolicies,
 | 
						|
  };
 | 
						|
}
 |