From dcdd58bae52a70d37badc6e939e08d9fb6b83cd4 Mon Sep 17 00:00:00 2001 From: Sojan Date: Fri, 19 May 2023 16:00:27 +0530 Subject: [PATCH 1/3] Bump version to 2.17.1 --- config/app.yml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/app.yml b/config/app.yml index 1096df605..9e05c6865 100644 --- a/config/app.yml +++ b/config/app.yml @@ -1,5 +1,5 @@ shared: &shared - version: '2.17.0' + version: '2.17.1' development: <<: *shared diff --git a/package.json b/package.json index 56713231c..ae1437df6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@chatwoot/chatwoot", - "version": "2.17.0", + "version": "2.17.1", "license": "MIT", "scripts": { "eslint": "eslint app/**/*.{js,vue}", From 8b3d13a9208d84c5f9073b5abb047306779b6ace Mon Sep 17 00:00:00 2001 From: Vishnu Narayanan Date: Fri, 19 May 2023 17:59:33 +0530 Subject: [PATCH 2/3] fix: add libvips to Dockerfile for rails7 (#7133) Fixes: #7124 Fixes: https://linear.app/chatwoot/issue/CW-1805/investigate-217-upgrade-issues-for-dockerk8s-installations --- docker/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 39a7b157d..126a1174e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -36,7 +36,7 @@ COPY Gemfile Gemfile.lock ./ # https://github.com/googleapis/google-cloud-ruby/issues/13306 # adding xz as nokogiri was failing to build libxml # https://github.com/chatwoot/chatwoot/issues/4045 -RUN apk update && apk add --no-cache build-base musl ruby-full ruby-dev gcc make musl-dev openssl openssl-dev g++ linux-headers xz +RUN apk update && apk add --no-cache build-base musl ruby-full ruby-dev gcc make musl-dev openssl openssl-dev g++ linux-headers xz vips RUN bundle config set --local force_ruby_platform true # Do not install development or test gems in production @@ -97,6 +97,7 @@ RUN apk update && apk add --no-cache \ postgresql-client \ imagemagick \ git \ + vips \ && gem install bundler RUN if [ "$RAILS_ENV" != "production" ]; then \ From 1bcc438b21fd004d0c136366c4ad6e3ace3f0f63 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Fri, 19 May 2023 20:55:01 +0530 Subject: [PATCH 3/3] fix: Problem when using Brazilian Portuguese (#7135) Fixes: #7127 --- app/javascript/shared/helpers/DateHelper.js | 3 +- .../shared/helpers/specs/DateHelper.spec.js | 64 ++++++++++++++++--- 2 files changed, 56 insertions(+), 11 deletions(-) diff --git a/app/javascript/shared/helpers/DateHelper.js b/app/javascript/shared/helpers/DateHelper.js index c8b0f231b..18e4efdf1 100644 --- a/app/javascript/shared/helpers/DateHelper.js +++ b/app/javascript/shared/helpers/DateHelper.js @@ -32,7 +32,8 @@ export const isTimeAfter = (h1, m1, h2, m2) => { }; export const generateRelativeTime = (value, unit, languageCode) => { - const rtf = new Intl.RelativeTimeFormat(languageCode, { + const code = languageCode?.replace(/_/g, '-'); // Hacky fix we need to handle it from source + const rtf = new Intl.RelativeTimeFormat(code, { numeric: 'auto', }); return rtf.format(value, unit); diff --git a/app/javascript/shared/helpers/specs/DateHelper.spec.js b/app/javascript/shared/helpers/specs/DateHelper.spec.js index 030910a3d..ee2e3ef67 100644 --- a/app/javascript/shared/helpers/specs/DateHelper.spec.js +++ b/app/javascript/shared/helpers/specs/DateHelper.spec.js @@ -64,15 +64,59 @@ describe('#isTimeAfter', () => { }); }); -describe('#generateRelativeTime', () => { - it('should return correct relative time', () => { - expect(generateRelativeTime(-1, 'day', 'en')).toEqual('yesterday'); - expect(generateRelativeTime(1, 'day', 'en')).toEqual('tomorrow'); - expect(generateRelativeTime(1, 'hour', 'en')).toEqual('in 1 hour'); - expect(generateRelativeTime(-1, 'hour', 'en')).toEqual('1 hour ago'); - expect(generateRelativeTime(1, 'minute', 'en')).toEqual('in 1 minute'); - expect(generateRelativeTime(-1, 'minute', 'en')).toEqual('1 minute ago'); - expect(generateRelativeTime(1, 'second', 'en')).toEqual('in 1 second'); - expect(generateRelativeTime(-1, 'second', 'en')).toEqual('1 second ago'); +describe('generateRelativeTime', () => { + it('should return a string with the relative time', () => { + const value = 1; + const unit = 'second'; + const languageCode = 'en-US'; + const expectedResult = 'in 1 second'; + + const actualResult = generateRelativeTime(value, unit, languageCode); + + expect(actualResult).toBe(expectedResult); + }); + + it('should return a string with the relative time in a different language', () => { + const value = 10; + const unit = 'minute'; + const languageCode = 'de-DE'; + const expectedResult = 'in 10 Minuten'; + + const actualResult = generateRelativeTime(value, unit, languageCode); + + expect(actualResult).toBe(expectedResult); + }); + + it('should return a string with the relative time for a different unit', () => { + const value = 1; + const unit = 'hour'; + const languageCode = 'en-US'; + const expectedResult = 'in 1 hour'; + + const actualResult = generateRelativeTime(value, unit, languageCode); + + expect(actualResult).toBe(expectedResult); + }); + + it('should throw an error if the value is not a number', () => { + const value = 1; + const unit = 'day'; + const languageCode = 'en_US'; + const expectedResult = 'tomorrow'; + + const actualResult = generateRelativeTime(value, unit, languageCode); + + expect(actualResult).toBe(expectedResult); + }); + + it('should throw an error if the value is not a number', () => { + const value = 1; + const unit = 'day'; + const languageCode = 'en-US'; + const expectedResult = 'tomorrow'; + + const actualResult = generateRelativeTime(value, unit, languageCode); + + expect(actualResult).toBe(expectedResult); }); });