diff --git a/RapidProApp.ts b/RapidProApp.ts index 757fb91..ae8e48a 100644 --- a/RapidProApp.ts +++ b/RapidProApp.ts @@ -27,6 +27,7 @@ import { VisitorMessageEndpoint } from './src/endpoint/VisitorMessageEndpoint'; import RapidProRestApi from './src/remote/rapidpro/RapidProRestApi'; import { APP_SETTINGS, + CONFIG_DEFAULT_TIMEZONE, CONFIG_HISTORY_TIME, CONFIG_RAPIDPRO_AUTH_TOKEN, CONFIG_REQUEST_TIMEOUT, @@ -64,6 +65,7 @@ export class RapidProApp extends App implements IPostLivechatRoomClosed, IPostMe const rpAuthToken = await read.getEnvironmentReader().getSettings().getValueById(CONFIG_RAPIDPRO_AUTH_TOKEN); const reqTimeout = await read.getEnvironmentReader().getSettings().getValueById(CONFIG_REQUEST_TIMEOUT); const historyTime = await read.getEnvironmentReader().getSettings().getValueById(CONFIG_HISTORY_TIME); + const defaultTimezone = await read.getEnvironmentReader().getSettings().getValueById(CONFIG_DEFAULT_TIMEZONE) const after = new Date(); after.setHours(after.getHours() - historyTime); @@ -77,6 +79,7 @@ export class RapidProApp extends App implements IPostLivechatRoomClosed, IPostMe const messages = await rapidProDataSource.getMessages( job.contactUUID, after.toISOString(), + defaultTimezone, ); const livechatRepo = new LiveChatRepositoryImpl( diff --git a/src/data/rapidpro/IRapidProRemoteDataSource.ts b/src/data/rapidpro/IRapidProRemoteDataSource.ts index f4c9238..2363f0c 100644 --- a/src/data/rapidpro/IRapidProRemoteDataSource.ts +++ b/src/data/rapidpro/IRapidProRemoteDataSource.ts @@ -3,7 +3,7 @@ import RPMessage from '../../domain/RPMessage'; export default interface IRapidProRemoteDataSource { - getMessages(contactUUID: string, after: string): Promise>; + getMessages(contactUUID: string, after: string, defaultTimezone: number): Promise>; startFlow(uuid: string, visitor: IVisitor, extra: any): Promise; diff --git a/src/remote/rapidpro/RapidProRestApi.ts b/src/remote/rapidpro/RapidProRestApi.ts index 8e66a99..cc1373c 100644 --- a/src/remote/rapidpro/RapidProRestApi.ts +++ b/src/remote/rapidpro/RapidProRestApi.ts @@ -16,7 +16,7 @@ export default class RapidProRestApi implements IRapidProRemoteDataSource { this.timeout = this.timeout < 5 ? 5 : this.timeout; } - public async getMessages(contactUUID: string, after: string): Promise> { + public async getMessages(contactUUID: string, after: string, defaultTimezone: number): Promise> { const reqOptions = this.requestOptions(); reqOptions['params'] = { contact: contactUUID, after }; @@ -24,7 +24,8 @@ export default class RapidProRestApi implements IRapidProRemoteDataSource { if (!response || response.statusCode !== HttpStatusCode.OK) { return []; } - const tzOffset = DateStringUtils.getTimezoneOffsetInMinutes(after); + + const tzOffset = defaultTimezone ? defaultTimezone * 60 : DateStringUtils.getTimezoneOffsetInMinutes(after); const result: Array = []; diff --git a/src/settings/Constants.ts b/src/settings/Constants.ts index a51710f..6db6282 100644 --- a/src/settings/Constants.ts +++ b/src/settings/Constants.ts @@ -6,6 +6,7 @@ export const CONFIG_APP_SECRET = 'config_app_secret'; export const CONFIG_RAPIDPRO_AUTH_TOKEN = 'config_rapidpro_auth_token'; export const CONFIG_REQUEST_TIMEOUT = 'config_request_timeout'; export const CONFIG_HISTORY_TIME = 'config_history_time'; +export const CONFIG_DEFAULT_TIMEZONE = 'config_default_timezone'; export const APP_SETTINGS: Array = [ { @@ -40,4 +41,12 @@ export const APP_SETTINGS: Array = [ public: false, i18nLabel: CONFIG_HISTORY_TIME, }, + { + id: CONFIG_DEFAULT_TIMEZONE, + type: SettingType.NUMBER, + packageValue: null, + required: false, + public: false, + i18nLabel: CONFIG_DEFAULT_TIMEZONE, + }, ];