Skip to content

Commit cf6919d

Browse files
authored
Merge pull request #452 from OneSignal/feature/setLanguage
Feature app defined setLanguage
2 parents c31be65 + 2cb8a25 commit cf6919d

File tree

7 files changed

+40
-2
lines changed

7 files changed

+40
-2
lines changed

android/src/main/java/com/onesignal/flutter/OneSignalPlugin.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ else if (call.method.contentEquals("OneSignal#setExternalUserId"))
120120
this.setExternalUserId(call, result);
121121
else if (call.method.contentEquals("OneSignal#removeExternalUserId"))
122122
this.removeExternalUserId(result);
123+
else if (call.method.contentEquals("OneSignal#setLanguage"))
124+
this.setLanguage(call, result);
123125
else if (call.method.contentEquals("OneSignal#initNotificationOpenedHandlerParams"))
124126
this.initNotificationOpenedHandlerParams();
125127
else if (call.method.contentEquals("OneSignal#initInAppMessageClickedHandlerParams"))
@@ -337,6 +339,14 @@ public void onFailure(OneSignal.OSSMSUpdateError error) {
337339
});
338340
}
339341

342+
private void setLanguage(MethodCall call, final Result result) {
343+
String language = call.argument("language");
344+
if (language != null && language.length() == 0)
345+
language = null;
346+
347+
OneSignal.setLanguage(language);
348+
}
349+
340350
private void setExternalUserId(MethodCall call, final Result result) {
341351
String externalUserId = call.argument("externalUserId");
342352
String authHashToken = call.argument("authHashToken");

example/ios/Podfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ target 'Runner' do
3232
end
3333

3434
target 'OneSignalNotificationServiceExtension' do
35-
pod 'OneSignalXCFramework', '3.5.3'
35+
pod 'OneSignalXCFramework', '3.6.0'
3636
end
3737

3838
post_install do |installer|

ios/Classes/OneSignalPlugin.m

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
142142
[self setExternalUserId:call withResult:result];
143143
else if ([@"OneSignal#removeExternalUserId" isEqualToString:call.method])
144144
[self removeExternalUserId:call withResult:result];
145+
else if ([@"OneSignal#setLanguage" isEqualToString:call.method])
146+
[self setLanguage:call withResult:result];
145147
else if ([@"OneSignal#initNotificationOpenedHandlerParams" isEqualToString:call.method])
146148
[self initNotificationOpenedHandlerParams];
147149
else if ([@"OneSignal#initInAppMessageClickedHandlerParams" isEqualToString:call.method])
@@ -320,6 +322,15 @@ - (void)removeExternalUserId:(FlutterMethodCall *)call withResult:(FlutterResult
320322
}];
321323
}
322324

325+
- (void)setLanguage:(FlutterMethodCall *)call withResult:(FlutterResult)result {
326+
id language = call.arguments[@"language"];
327+
if (language == [NSNull null]) {
328+
language = nil;
329+
}
330+
331+
[OneSignal setLanguage:language];
332+
}
333+
323334
- (void)initNotificationOpenedHandlerParams {
324335
[OneSignal setNotificationOpenedHandler:^(OSNotificationOpenedResult * _Nonnull result) {
325336
[OneSignalPlugin.sharedInstance handleNotificationOpened:result];

ios/onesignal_flutter.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Pod::Spec.new do |s|
1313
s.source_files = 'Classes/**/*'
1414
s.public_header_files = 'Classes/**/*.h'
1515
s.dependency 'Flutter'
16-
s.dependency 'OneSignalXCFramework', '3.5.3'
16+
s.dependency 'OneSignalXCFramework', '3.6.0'
1717
s.ios.deployment_target = '9.0'
1818
s.static_framework = true
1919
end

lib/onesignal_flutter.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,12 @@ class OneSignal {
329329
return results.cast<String, dynamic>();
330330
}
331331

332+
Future<Map<String, dynamic>> setLanguage(String language) async {
333+
Map<dynamic, dynamic> results =
334+
await (_channel.invokeMethod("OneSignal#setLanguage", {'language' : language}));
335+
return results.cast<String, dynamic>();
336+
}
337+
332338
/// Adds a single key, value trigger, which will trigger an in app message
333339
/// if one exists matching the specific trigger added
334340
Future<void> addTrigger(String key, Object value) async {

test/mock_channel.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ class OneSignalMockChannelController {
6767
case "OneSignal#removeExternalUserId":
6868
this.state.externalId = null;
6969
return {"success" : true};
70+
case "OneSignal#setLanguage":
71+
this.state.language = (call.arguments as Map<dynamic, dynamic>)['language'] as String?;
72+
return {"success" : true};
7073
}
7174
}
7275
}
@@ -93,6 +96,7 @@ class OneSignalState {
9396
OSNotificationDisplayType? inFocusDisplayType;
9497
bool? disablePush;
9598
String? externalId;
99+
String? language;
96100

97101
// tags
98102
Map<dynamic, dynamic>? tags;

test/onesignalflutter_test.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,4 +109,11 @@ void main() {
109109
expect(channelController.state.externalId, null);
110110
}));
111111
});
112+
113+
//Set Language test
114+
test('setting language', () {
115+
onesignal.setLanguage('fr').then(expectAsync1((v) {
116+
expect(channelController.state.language, 'fr');
117+
}));
118+
});
112119
}

0 commit comments

Comments
 (0)