diff --git a/app/controllers/api/v1/widget/base_controller.rb b/app/controllers/api/v1/widget/base_controller.rb
index d854114c4..9ec702e6c 100644
--- a/app/controllers/api/v1/widget/base_controller.rb
+++ b/app/controllers/api/v1/widget/base_controller.rb
@@ -36,9 +36,10 @@ class Api::V1::Widget::BaseController < ApplicationController
contact_id: @contact.id,
contact_inbox_id: @contact_inbox.id,
additional_attributes: {
+ browser_language: browser.accept_language&.first&.code,
browser: browser_params,
- referer: permitted_params[:message][:referer_url],
- initiated_at: timestamp_params
+ initiated_at: timestamp_params,
+ referer: permitted_params[:message][:referer_url]
},
custom_attributes: permitted_params[:custom_attributes].presence || {}
}
diff --git a/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/languages.js b/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/languages.js
index 093eda3b9..31529f0c7 100644
--- a/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/languages.js
+++ b/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/languages.js
@@ -1,132 +1,742 @@
const languages = [
{
- id: 'eng',
- name: 'English (en)',
+ name: 'Abkhazian',
+ id: 'ab',
},
{
+ name: 'Afar',
+ id: 'aa',
+ },
+ {
+ name: 'Afrikaans',
+ id: 'af',
+ },
+ {
+ name: 'Akan',
+ id: 'ak',
+ },
+ {
+ name: 'Albanian',
+ id: 'sq',
+ },
+ {
+ name: 'Amharic',
+ id: 'am',
+ },
+ {
+ name: 'Arabic',
id: 'ar',
- name: 'العربية (ar)',
},
{
- id: 'nl',
- name: 'Nederlands (nl)',
+ name: 'Aragonese',
+ id: 'an',
},
{
- id: 'fr',
- name: 'Français (fr)',
+ name: 'Armenian',
+ id: 'hy',
},
{
- id: 'de',
- name: 'Deutsch (de)',
+ name: 'Assamese',
+ id: 'as',
},
{
- id: 'हिन्दी (hi)',
- name: 'hi',
+ name: 'Avaric',
+ id: 'av',
},
{
- id: 'it',
- name: 'Italiano (it)',
+ name: 'Avestan',
+ id: 'ae',
},
{
- id: 'ja',
- name: '日本語 (ja)',
+ name: 'Aymara',
+ id: 'ay',
},
{
- id: 'ko',
- name: '한국어 (ko)',
+ name: 'Azerbaijani',
+ id: 'az',
},
{
- id: 'pt',
- name: 'Português (pt)',
+ name: 'Bambara',
+ id: 'bm',
},
{
- id: 'ru',
- name: 'русский (ru)',
+ name: 'Bashkir',
+ id: 'ba',
},
{
- id: 'zh',
- name: '中文 (zh)',
+ name: 'Basque',
+ id: 'eu',
},
{
- id: 'es',
- name: 'Español (es)',
+ name: 'Belarusian',
+ id: 'be',
},
{
- id: 'ml',
- name: 'മലയാളം (ml)',
+ name: 'Bengali',
+ id: 'bn',
},
{
+ name: 'Bislama',
+ id: 'bi',
+ },
+ {
+ name: 'Bosnian',
+ id: 'bs',
+ },
+ {
+ name: 'Breton',
+ id: 'br',
+ },
+ {
+ name: 'Bulgarian',
+ id: 'bg',
+ },
+ {
+ name: 'Burmese',
+ id: 'my',
+ },
+ {
+ name: 'Catalan',
id: 'ca',
- name: 'Català (ca)',
},
{
- id: 'el',
- name: 'ελληνικά (el)',
+ name: 'Chamorro',
+ id: 'ch',
},
{
- id: 'pt-BR',
- name: 'Português Brasileiro (pt-BR)',
+ name: 'Chechen',
+ id: 'ce',
},
{
- id: 'ro',
- name: 'Română (ro)',
+ name: 'Chichewa',
+ id: 'ny',
},
{
- id: 'ta',
- name: 'தமிழ் (ta)',
+ name: 'Chinese',
+ id: 'zh',
},
{
- id: 'fa',
- name: 'فارسی (fa)',
+ name: 'Church Slavonic',
+ id: 'cu',
},
{
- id: 'zh-TW',
- name: '中文 (台湾) (zh-TW)',
+ name: 'Chuvash',
+ id: 'cv',
},
{
- id: 'vi',
- name: 'Tiếng Việt (vi)',
+ name: 'Cornish',
+ id: 'kw',
},
{
- id: 'da',
- name: 'dansk (da)',
+ name: 'Corsican',
+ id: 'co',
},
{
- id: 'tr',
- name: 'Türkçe (tr)',
+ name: 'Cree',
+ id: 'cr',
},
{
+ name: 'Croatian',
+ id: 'hr',
+ },
+ {
+ name: 'Czech',
id: 'cs',
- name: 'čeština (cs)',
},
{
+ name: 'Danish',
+ id: 'da',
+ },
+ {
+ name: 'Divehi',
+ id: 'dv',
+ },
+ {
+ name: 'Dutch',
+ id: 'nl',
+ },
+ {
+ name: 'Dzongkha',
+ id: 'dz',
+ },
+ {
+ name: 'English',
+ id: 'en',
+ },
+ {
+ name: 'Esperanto',
+ id: 'eo',
+ },
+ {
+ name: 'Estonian',
+ id: 'et',
+ },
+ {
+ name: 'Ewe',
+ id: 'ee',
+ },
+ {
+ name: 'Faroese',
+ id: 'fo',
+ },
+ {
+ name: 'Fijian',
+ id: 'fj',
+ },
+ {
+ name: 'Finnish',
id: 'fi',
- name: 'suomi, suomen kieli (fi)',
},
{
- id: 'id',
- name: 'Bahasa Indonesia (id)',
+ name: 'French',
+ id: 'fr',
},
{
- id: 'sv',
- name: 'Svenska (sv)',
+ name: 'Western Frisian',
+ id: 'fy',
},
{
+ name: 'Fulah',
+ id: 'ff',
+ },
+ {
+ name: 'Gaelic',
+ id: 'gd',
+ },
+ {
+ name: 'Galician',
+ id: 'gl',
+ },
+ {
+ name: 'Ganda',
+ id: 'lg',
+ },
+ {
+ name: 'Georgian',
+ id: 'ka',
+ },
+ {
+ name: 'German',
+ id: 'de',
+ },
+ {
+ name: 'Greek',
+ id: 'el',
+ },
+ {
+ name: 'Kalaallisut',
+ id: 'kl',
+ },
+ {
+ name: 'Guarani',
+ id: 'gn',
+ },
+ {
+ name: 'Gujarati',
+ id: 'gu',
+ },
+ {
+ name: 'Haitian',
+ id: 'ht',
+ },
+ {
+ name: 'Hausa',
+ id: 'ha',
+ },
+ {
+ name: 'Hebrew',
+ id: 'he',
+ },
+ {
+ name: 'Herero',
+ id: 'hz',
+ },
+ {
+ name: 'Hindi',
+ id: 'hi',
+ },
+ {
+ name: 'Hiri Motu',
+ id: 'ho',
+ },
+ {
+ name: 'Hungarian',
id: 'hu',
- name: 'magyar nyelv (hu)',
},
{
+ name: 'Icelandic',
+ id: 'is',
+ },
+ {
+ name: 'Ido',
+ id: 'io',
+ },
+ {
+ name: 'Igbo',
+ id: 'ig',
+ },
+ {
+ name: 'Indonesian',
+ id: 'id',
+ },
+ {
+ name: 'Interlingua',
+ id: 'ia',
+ },
+ {
+ name: 'Interlingue',
+ id: 'ie',
+ },
+ {
+ name: 'Inuktitut',
+ id: 'iu',
+ },
+ {
+ name: 'Inupiaq',
+ id: 'ik',
+ },
+ {
+ name: 'Irish',
+ id: 'ga',
+ },
+ {
+ name: 'Italian',
+ id: 'it',
+ },
+ {
+ name: 'Japanese',
+ id: 'ja',
+ },
+ {
+ name: 'Javanese',
+ id: 'jv',
+ },
+ {
+ name: 'Kannada',
+ id: 'kn',
+ },
+ {
+ name: 'Kanuri',
+ id: 'kr',
+ },
+ {
+ name: 'Kashmiri',
+ id: 'ks',
+ },
+ {
+ name: 'Kazakh',
+ id: 'kk',
+ },
+ {
+ name: 'Central Khmer',
+ id: 'km',
+ },
+ {
+ name: 'Kikuyu',
+ id: 'ki',
+ },
+ {
+ name: 'Kinyarwanda',
+ id: 'rw',
+ },
+ {
+ name: 'Kirghiz',
+ id: 'ky',
+ },
+ {
+ name: 'Komi',
+ id: 'kv',
+ },
+ {
+ name: 'Kongo',
+ id: 'kg',
+ },
+ {
+ name: 'Korean',
+ id: 'ko',
+ },
+ {
+ name: 'Kuanyama',
+ id: 'kj',
+ },
+ {
+ name: 'Kurdish',
+ id: 'ku',
+ },
+ {
+ name: 'Lao',
+ id: 'lo',
+ },
+ {
+ name: 'Latin',
+ id: 'la',
+ },
+ {
+ name: 'Latvian',
+ id: 'lv',
+ },
+ {
+ name: 'Limburgan',
+ id: 'li',
+ },
+ {
+ name: 'Lingala',
+ id: 'ln',
+ },
+ {
+ name: 'Lithuanian',
+ id: 'lt',
+ },
+ {
+ name: 'Luba-Katanga',
+ id: 'lu',
+ },
+ {
+ name: 'Luxembourgish',
+ id: 'lb',
+ },
+ {
+ name: 'Macedonian',
+ id: 'mk',
+ },
+ {
+ name: 'Malagasy',
+ id: 'mg',
+ },
+ {
+ name: 'Malay',
+ id: 'ms',
+ },
+ {
+ name: 'Malayalam',
+ id: 'ml',
+ },
+ {
+ name: 'Maltese',
+ id: 'mt',
+ },
+ {
+ name: 'Manx',
+ id: 'gv',
+ },
+ {
+ name: 'Maori',
+ id: 'mi',
+ },
+ {
+ name: 'Marathi',
+ id: 'mr',
+ },
+ {
+ name: 'Marshallese',
+ id: 'mh',
+ },
+ {
+ name: 'Mongolian',
+ id: 'mn',
+ },
+ {
+ name: 'Nauru',
+ id: 'na',
+ },
+ {
+ name: 'Navajo',
+ id: 'nv',
+ },
+ {
+ name: 'North Ndebele',
+ id: 'nd',
+ },
+ {
+ name: 'South Ndebele',
+ id: 'nr',
+ },
+ {
+ name: 'Ndonga',
+ id: 'ng',
+ },
+ {
+ name: 'Nepali',
+ id: 'ne',
+ },
+ {
+ name: 'Norwegian',
id: 'no',
- name: 'norsk (no)',
},
{
- id: 'zh-CN',
- name: '中文 (zh-CN)',
+ name: 'Norwegian Bokmål',
+ id: 'nb',
},
{
+ name: 'Norwegian Nynorsk',
+ id: 'nn',
+ },
+ {
+ name: 'Sichuan Yi',
+ id: 'ii',
+ },
+ {
+ name: 'Occitan',
+ id: 'oc',
+ },
+ {
+ name: 'Ojibwa',
+ id: 'oj',
+ },
+ {
+ name: 'Oriya',
+ id: 'or',
+ },
+ {
+ name: 'Oromo',
+ id: 'om',
+ },
+ {
+ name: 'Ossetian',
+ id: 'os',
+ },
+ {
+ name: 'Pali',
+ id: 'pi',
+ },
+ {
+ name: 'Pashto, Pushto',
+ id: 'ps',
+ },
+ {
+ name: 'Persian',
+ id: 'fa',
+ },
+ {
+ name: 'Polish',
id: 'pl',
- name: 'język polski (pl)',
+ },
+ {
+ name: 'Portuguese',
+ id: 'pt',
+ },
+ {
+ name: 'Punjabi',
+ id: 'pa',
+ },
+ {
+ name: 'Quechua',
+ id: 'qu',
+ },
+ {
+ name: 'Romanian',
+ id: 'ro',
+ },
+ {
+ name: 'Romansh',
+ id: 'rm',
+ },
+ {
+ name: 'Rundi',
+ id: 'rn',
+ },
+ {
+ name: 'Russian',
+ id: 'ru',
+ },
+ {
+ name: 'Northern Sami',
+ id: 'se',
+ },
+ {
+ name: 'Samoan',
+ id: 'sm',
+ },
+ {
+ name: 'Sango',
+ id: 'sg',
+ },
+ {
+ name: 'Sanskrit',
+ id: 'sa',
+ },
+ {
+ name: 'Sardinian',
+ id: 'sc',
+ },
+ {
+ name: 'Serbian',
+ id: 'sr',
+ },
+ {
+ name: 'Shona',
+ id: 'sn',
+ },
+ {
+ name: 'Sindhi',
+ id: 'sd',
+ },
+ {
+ name: 'Sinhala',
+ id: 'si',
+ },
+ {
+ name: 'Slovak',
+ id: 'sk',
+ },
+ {
+ name: 'Slovenian',
+ id: 'sl',
+ },
+ {
+ name: 'Somali',
+ id: 'so',
+ },
+ {
+ name: 'Southern Sotho',
+ id: 'st',
+ },
+ {
+ name: 'Spanish',
+ id: 'es',
+ },
+ {
+ name: 'Sundanese',
+ id: 'su',
+ },
+ {
+ name: 'Swahili',
+ id: 'sw',
+ },
+ {
+ name: 'Swati',
+ id: 'ss',
+ },
+ {
+ name: 'Swedish',
+ id: 'sv',
+ },
+ {
+ name: 'Tagalog',
+ id: 'tl',
+ },
+ {
+ name: 'Tahitian',
+ id: 'ty',
+ },
+ {
+ name: 'Tajik',
+ id: 'tg',
+ },
+ {
+ name: 'Tamil',
+ id: 'ta',
+ },
+ {
+ name: 'Tatar',
+ id: 'tt',
+ },
+ {
+ name: 'Telugu',
+ id: 'te',
+ },
+ {
+ name: 'Thai',
+ id: 'th',
+ },
+ {
+ name: 'Tibetan',
+ id: 'bo',
+ },
+ {
+ name: 'Tigrinya',
+ id: 'ti',
+ },
+ {
+ name: 'Tonga',
+ id: 'to',
+ },
+ {
+ name: 'Tsonga',
+ id: 'ts',
+ },
+ {
+ name: 'Tswana',
+ id: 'tn',
+ },
+ {
+ name: 'Turkish',
+ id: 'tr',
+ },
+ {
+ name: 'Turkmen',
+ id: 'tk',
+ },
+ {
+ name: 'Twi',
+ id: 'tw',
+ },
+ {
+ name: 'Uighur',
+ id: 'ug',
+ },
+ {
+ name: 'Ukrainian',
+ id: 'uk',
+ },
+ {
+ name: 'Urdu',
+ id: 'ur',
+ },
+ {
+ name: 'Uzbek',
+ id: 'uz',
+ },
+ {
+ name: 'Venda',
+ id: 've',
+ },
+ {
+ name: 'Vietnamese',
+ id: 'vi',
+ },
+ {
+ name: 'Volapük',
+ id: 'vo',
+ },
+ {
+ name: 'Walloon',
+ id: 'wa',
+ },
+ {
+ name: 'Welsh',
+ id: 'cy',
+ },
+ {
+ name: 'Wolof',
+ id: 'wo',
+ },
+ {
+ name: 'Xhosa',
+ id: 'xh',
+ },
+ {
+ name: 'Yiddish',
+ id: 'yi',
+ },
+ {
+ name: 'Yoruba',
+ id: 'yo',
+ },
+ {
+ name: 'Zhuang, Chuang',
+ id: 'za',
+ },
+ {
+ name: 'Zulu',
+ id: 'zu',
},
];
+export const getLanguageName = (languageCode = '') => {
+ const languageObj =
+ languages.find(language => language.id === languageCode) || {};
+ return languageObj.name || '';
+};
+
export default languages;
diff --git a/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/advancedFilterItems.spec.js b/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/specs/advancedFilterItems.spec.js
similarity index 71%
rename from app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/advancedFilterItems.spec.js
rename to app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/specs/advancedFilterItems.spec.js
index 69eafa994..2132ebaf2 100644
--- a/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/advancedFilterItems.spec.js
+++ b/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/specs/advancedFilterItems.spec.js
@@ -1,5 +1,5 @@
-import defaultFilters from './index';
-import { filterAttributeGroups } from './index';
+import defaultFilters from '../index';
+import { filterAttributeGroups } from '../index';
describe('#filterItems', () => {
it('Matches the correct filterItems', () => {
diff --git a/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/specs/languages.spec.js b/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/specs/languages.spec.js
new file mode 100644
index 000000000..52bc981fd
--- /dev/null
+++ b/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/specs/languages.spec.js
@@ -0,0 +1,10 @@
+import { getLanguageName } from '../languages';
+
+describe('#getLanguageName', () => {
+ it('Returns correct language name', () => {
+ expect(getLanguageName('es')).toEqual('Spanish');
+ expect(getLanguageName()).toEqual('');
+ expect(getLanguageName('rrr')).toEqual('');
+ expect(getLanguageName('')).toEqual('');
+ });
+});
diff --git a/app/javascript/dashboard/i18n/locale/en/contact.json b/app/javascript/dashboard/i18n/locale/en/contact.json
index 2833e37d8..0bc399ba1 100644
--- a/app/javascript/dashboard/i18n/locale/en/contact.json
+++ b/app/javascript/dashboard/i18n/locale/en/contact.json
@@ -6,6 +6,7 @@
"COPY_SUCCESSFUL": "Copied to clipboard successfully",
"COMPANY": "Company",
"LOCATION": "Location",
+ "BROWSER_LANGUAGE": "Browser Language",
"CONVERSATION_TITLE": "Conversation Details",
"VIEW_PROFILE": "View Profile",
"BROWSER": "Browser",
diff --git a/app/javascript/dashboard/routes/dashboard/conversation/ConversationInfo.vue b/app/javascript/dashboard/routes/dashboard/conversation/ConversationInfo.vue
index 07883b08a..16a41cc94 100644
--- a/app/javascript/dashboard/routes/dashboard/conversation/ConversationInfo.vue
+++ b/app/javascript/dashboard/routes/dashboard/conversation/ConversationInfo.vue
@@ -6,6 +6,12 @@
:value="initiatedAt.timestamp"
class="conversation--attribute"
/>
+