mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-01 19:48: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,
|
|
};
|
|
}
|