From e41804e96290dc7ba5a1da895005c57d732c9e83 Mon Sep 17 00:00:00 2001 From: Elwyn Van der Borght Date: Tue, 23 Apr 2024 13:43:22 +0200 Subject: [PATCH 1/3] feat: Language functions --- src/onesignal/User.ts | 23 +++++++++++++++++++++++ src/onesignal/UserNamespace.ts | 8 ++++++++ 2 files changed, 31 insertions(+) diff --git a/src/onesignal/User.ts b/src/onesignal/User.ts index 695aa8668..3001bfe2a 100644 --- a/src/onesignal/User.ts +++ b/src/onesignal/User.ts @@ -341,4 +341,27 @@ export default class User { return OneSignal.coreDirector.getPropertiesModel()?.data?.tags; } + + public setLanguage(language: string): void { + logMethodCall('setLanguage', { language }); + + if (typeof language !== 'string') { + throw new InvalidArgumentError( + 'language', + InvalidArgumentReason.WrongType, + ); + } + + if (!language) { + throw new InvalidArgumentError('language', InvalidArgumentReason.Empty); + } + + const propertiesModel = OneSignal.coreDirector.getPropertiesModel(); + propertiesModel?.set('language', language); + } + + public getLanguage(): string { + logMethodCall('getLanguage'); + return OneSignal.coreDirector.getPropertiesModel()?.data?.language; + } } diff --git a/src/onesignal/UserNamespace.ts b/src/onesignal/UserNamespace.ts index a8beed3c0..1b8a595ca 100644 --- a/src/onesignal/UserNamespace.ts +++ b/src/onesignal/UserNamespace.ts @@ -91,6 +91,14 @@ export default class UserNamespace extends EventListenerBase { return this._currentUser?.getTags() || {}; } + public setLanguage(language: string): void { + this._currentUser?.setLanguage(language); + } + + getLanguage(): string { + return this._currentUser?.getLanguage() || ''; + } + addEventListener( event: 'change', listener: (userChange: UserChangeEvent) => void, From 9c3c7fb2b44deabb636003df7a109e443003ea69 Mon Sep 17 00:00:00 2001 From: Elwyn Van der Borght Date: Tue, 23 Apr 2024 16:11:49 +0200 Subject: [PATCH 2/3] fix: Introduced public modifier --- src/onesignal/UserNamespace.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/onesignal/UserNamespace.ts b/src/onesignal/UserNamespace.ts index 1b8a595ca..fc27342c5 100644 --- a/src/onesignal/UserNamespace.ts +++ b/src/onesignal/UserNamespace.ts @@ -95,7 +95,7 @@ export default class UserNamespace extends EventListenerBase { this._currentUser?.setLanguage(language); } - getLanguage(): string { + public getLanguage(): string { return this._currentUser?.getLanguage() || ''; } From 42e28a741721c84cfbbab0f12b709c08121c216d Mon Sep 17 00:00:00 2001 From: Elwyn Van der Borght Date: Thu, 25 Apr 2024 09:02:34 +0200 Subject: [PATCH 3/3] test(User): Introduced getLanguage test --- __test__/unit/user/user.test.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/__test__/unit/user/user.test.ts b/__test__/unit/user/user.test.ts index cfac447b2..8226eb0cb 100644 --- a/__test__/unit/user/user.test.ts +++ b/__test__/unit/user/user.test.ts @@ -54,4 +54,20 @@ describe('User tests', () => { expect(tags).toBe(tagsSample); }); + + + test('getLanguage should return the correct user language', async () => { + await TestEnvironment.initialize(); + + const languageSample = 'fr' + + const propertyModel = getDummyPropertyOSModel(); + propertyModel.set('language', languageSample); + OneSignal.coreDirector.add(ModelName.Properties, propertyModel); + + const user = User.createOrGetInstance(); + const language = user.getLanguage(); + + expect(language).toBe(languageSample); + }); });