Skip to content

Commit 2d3b7de

Browse files
committed
Add Singleton LanguageContext and Dependency Injection to constructor
* Add Singleton pattern to LanguageContext class * Add OSSharedPreference dependency to LanguageProviderAppDefined constructor * Add OSSharedPreference dependency to LanguageContext constructor
1 parent 22c0a43 commit 2d3b7de

File tree

3 files changed

+23
-12
lines changed

3 files changed

+23
-12
lines changed

OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -739,7 +739,7 @@ public static void init(Context context, String googleProjectNumber, String oneS
739739
mGoogleProjectNumber = googleProjectNumber;
740740

741741
// Set Language Context to null
742-
languageContext = new LanguageContext();
742+
languageContext = new LanguageContext(preferences);
743743

744744
subscribableStatus = osUtils.initializationChecker(context, oneSignalAppId);
745745
if (isSubscriptionStatusUninitializable())
@@ -1608,7 +1608,7 @@ public void run() {
16081608
return;
16091609
}
16101610

1611-
LanguageProviderAppDefined languageProviderAppDefined = new LanguageProviderAppDefined();
1611+
LanguageProviderAppDefined languageProviderAppDefined = new LanguageProviderAppDefined(preferences);
16121612
languageProviderAppDefined.setLanguage(language);
16131613
languageContext.setStrategy(languageProviderAppDefined);
16141614
}

OneSignalSDK/onesignal/src/main/java/com/onesignal/language/LanguageContext.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package com.onesignal.language;
2-
import com.onesignal.OneSignal;
2+
import com.onesignal.OSSharedPreferences;
33
import static com.onesignal.language.LanguageProviderAppDefined.PREFS_OS_LANGUAGE;
44

55
/*
@@ -8,11 +8,17 @@
88
*/
99
public class LanguageContext {
1010
private LanguageProvider strategy;
11+
private static LanguageContext instance = null;
1112

12-
public LanguageContext() {
13-
if ( OneSignal.preferences.getString(
14-
OneSignal.preferences.getPreferencesName(), PREFS_OS_LANGUAGE, null) != null) {
15-
this.strategy = new LanguageProviderAppDefined();
13+
public static LanguageContext getInstance() {
14+
return instance;
15+
}
16+
17+
public LanguageContext(OSSharedPreferences preferences) {
18+
instance = this;
19+
if ( preferences.getString(
20+
preferences.getPreferencesName(), PREFS_OS_LANGUAGE, null) != null) {
21+
this.strategy = new LanguageProviderAppDefined(preferences);
1622
}
1723
else {
1824
this.strategy = new LanguageProviderDevice();
Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
package com.onesignal.language;
2-
import com.onesignal.OneSignal;
2+
import com.onesignal.OSSharedPreferences;
33

44
public class LanguageProviderAppDefined implements LanguageProvider{
55
public static final String PREFS_OS_LANGUAGE = "PREFS_OS_LANGUAGE";
6+
private OSSharedPreferences preferences;
7+
8+
public LanguageProviderAppDefined(OSSharedPreferences preferences) {
9+
this.preferences = preferences;
10+
}
611

712
public void setLanguage(String language) {
8-
OneSignal.preferences.saveString(
9-
OneSignal.preferences.getPreferencesName(),
13+
preferences.saveString(
14+
preferences.getPreferencesName(),
1015
PREFS_OS_LANGUAGE,
1116
language);
1217
}
1318

1419
public String getLanguage() {
15-
return OneSignal.preferences.getString(
16-
OneSignal.preferences.getPreferencesName(), PREFS_OS_LANGUAGE, "en");
20+
return preferences.getString(
21+
preferences.getPreferencesName(), PREFS_OS_LANGUAGE, "en");
1722
}
1823
}

0 commit comments

Comments
 (0)