Skip to content

Commit

Permalink
Merge branch 'master' into joyceqin-bideprecation
Browse files Browse the repository at this point in the history
  • Loading branch information
joyceqin-stripe authored Oct 15, 2024
2 parents 575b43a + 90f95a6 commit 3d371cb
Show file tree
Hide file tree
Showing 12 changed files with 192 additions and 153 deletions.
94 changes: 47 additions & 47 deletions Example/StripeConnectExample/StripeConnectExample/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -8,53 +8,53 @@
<false/>
<key>CFBundleLocalizations</key>
<array>
<string>bg-BG</string>
<string>zh-Hans</string>
<string>zh-Hant-HK</string>
<string>zh-Hant-TW</string>
<string>hr-HR</string>
<string>cs-CZ</string>
<string>da-DK</string>
<string>nl-NL</string>
<string>en-AU</string>
<string>en-IN</string>
<string>en-IE</string>
<string>en-NZ</string>
<string>en-SG</string>
<string>en-GB</string>
<string>en-US</string>
<string>et-EE</string>
<string>fil-PH</string>
<string>fi-FI</string>
<string>fr-CA</string>
<string>fr-FR</string>
<string>de-DE</string>
<string>el-GR</string>
<string>hu-HU</string>
<string>id-ID</string>
<string>it-IT</string>
<string>ja-JP</string>
<string>ko-KR</string>
<string>lv-LV</string>
<string>lt-LT</string>
<string>ms-MY</string>
<string>mt-MT</string>
<string>nb-NO</string>
<string>pl-PL</string>
<string>pt-BR</string>
<string>pt-PT</string>
<string>ro-RO</string>
<string>sk-SK</string>
<string>sl-SI</string>
<string>es-AR</string>
<string>es-BR</string>
<string>es-419</string>
<string>es-MX</string>
<string>es-ES</string>
<string>sv-SE</string>
<string>th-TH</string>
<string>tr-TR</string>
<string>vi-VN</string>
<string>bg_BG</string>
<string>zh_Hans</string>
<string>zh-Hant_HK</string>
<string>zh-Hant_TW</string>
<string>hr_HR</string>
<string>cs_CZ</string>
<string>da_DK</string>
<string>nl_NL</string>
<string>en_AU</string>
<string>en_IN</string>
<string>en_IE</string>
<string>en_NZ</string>
<string>en_SG</string>
<string>en_GB</string>
<string>en_US</string>
<string>et_EE</string>
<string>fil_PH</string>
<string>fi_FI</string>
<string>fr_CA</string>
<string>fr_FR</string>
<string>de_DE</string>
<string>el_GR</string>
<string>hu_HU</string>
<string>id_ID</string>
<string>it_IT</string>
<string>ja_JP</string>
<string>ko_KR</string>
<string>lv_LV</string>
<string>lt_LT</string>
<string>ms_MY</string>
<string>mt_MT</string>
<string>nb_NO</string>
<string>pl_PL</string>
<string>pt_BR</string>
<string>pt_PT</string>
<string>ro_RO</string>
<string>sk_SK</string>
<string>sl_SI</string>
<string>es_AR</string>
<string>es_BR</string>
<string>es_419</string>
<string>es_MX</string>
<string>es_ES</string>
<string>sv_SE</string>
<string>th_TH</string>
<string>tr_TR</string>
<string>vi_VN</string>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
Expand Down
10 changes: 3 additions & 7 deletions StripeConnect/StripeConnect.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@
416E9E862C76B35E00A0B917 /* PayoutsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416E9E852C76B35E00A0B917 /* PayoutsViewController.swift */; };
416E9E892C76B36F00A0B917 /* PayoutsViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416E9E872C76B36F00A0B917 /* PayoutsViewControllerTests.swift */; };
416E9ECF2C77EAA400A0B917 /* EmbeddedComponentError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416E9ECE2C77EAA400A0B917 /* EmbeddedComponentError.swift */; };
416E9ED22C77F6E000A0B917 /* Locale+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416E9ED12C77F6E000A0B917 /* Locale+extension.swift */; };
416E9ED42C77F90600A0B917 /* WKScriptMessage+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416E9ED32C77F90600A0B917 /* WKScriptMessage+extension.swift */; };
4171B1592C9A5EEC00547F7D /* AccountOnboardingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4171B1582C9A5EEC00547F7D /* AccountOnboardingViewController.swift */; };
41810D692C88C4B100F10EB7 /* AppearanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41810D682C88C4B100F10EB7 /* AppearanceTests.swift */; };
Expand Down Expand Up @@ -89,8 +88,8 @@
41D17A6E2C5A7429007C6EE6 /* Version.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 41D17A632C5A7429007C6EE6 /* Version.xcconfig */; };
E6165CBF2CA7BF2200B76DA5 /* FetchInitComponentPropsMessageHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6165CBE2CA7BF2200B76DA5 /* FetchInitComponentPropsMessageHandler.swift */; };
E6165CC12CA7D09900B76DA5 /* FetchInitComponentPropsMessageHandlerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6165CC02CA7D09900B76DA5 /* FetchInitComponentPropsMessageHandlerTests.swift */; };
E65691222CA52D5900E0DB00 /* StripeConnect+Exports.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65691212CA52D5900E0DB00 /* StripeConnect+Exports.swift */; };
E65691202CA5248300E0DB00 /* AccountManagementViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E656911F2CA5248300E0DB00 /* AccountManagementViewControllerTests.swift */; };
E65691222CA52D5900E0DB00 /* StripeConnect+Exports.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65691212CA52D5900E0DB00 /* StripeConnect+Exports.swift */; };
E65691252CA52F9D00E0DB00 /* NotificationBannerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65691232CA52F8600E0DB00 /* NotificationBannerViewController.swift */; };
E65691272CA533CD00E0DB00 /* OnNotificationsChangeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = E65691262CA533CD00E0DB00 /* OnNotificationsChangeHandler.swift */; };
E688AE002CADD8C400951D97 /* NotificationBannerViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E688ADFF2CADD8C400951D97 /* NotificationBannerViewControllerTests.swift */; };
Expand Down Expand Up @@ -157,7 +156,6 @@
416E9E852C76B35E00A0B917 /* PayoutsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PayoutsViewController.swift; sourceTree = "<group>"; };
416E9E872C76B36F00A0B917 /* PayoutsViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PayoutsViewControllerTests.swift; sourceTree = "<group>"; };
416E9ECE2C77EAA400A0B917 /* EmbeddedComponentError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmbeddedComponentError.swift; sourceTree = "<group>"; };
416E9ED12C77F6E000A0B917 /* Locale+extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Locale+extension.swift"; sourceTree = "<group>"; };
416E9ED32C77F90600A0B917 /* WKScriptMessage+extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WKScriptMessage+extension.swift"; sourceTree = "<group>"; };
4171B1582C9A5EEC00547F7D /* AccountOnboardingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountOnboardingViewController.swift; sourceTree = "<group>"; };
41810D682C88C4B100F10EB7 /* AppearanceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppearanceTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -195,14 +193,14 @@
41D17A622C5A7429007C6EE6 /* StripeiOS-Shared.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "StripeiOS-Shared.xcconfig"; sourceTree = "<group>"; };
41D17A632C5A7429007C6EE6 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = "<group>"; };
E6165CBE2CA7BF2200B76DA5 /* FetchInitComponentPropsMessageHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FetchInitComponentPropsMessageHandler.swift; sourceTree = "<group>"; };
E6165CC02CA7D09900B76DA5 /* FetchInitComponentPropsMessageHandlerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FetchInitComponentPropsMessageHandlerTests.swift; sourceTree = "<group>"; };
E656911F2CA5248300E0DB00 /* AccountManagementViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountManagementViewControllerTests.swift; sourceTree = "<group>"; };
E65691212CA52D5900E0DB00 /* StripeConnect+Exports.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StripeConnect+Exports.swift"; sourceTree = "<group>"; };
E65691232CA52F8600E0DB00 /* NotificationBannerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationBannerViewController.swift; sourceTree = "<group>"; };
E65691262CA533CD00E0DB00 /* OnNotificationsChangeHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnNotificationsChangeHandler.swift; sourceTree = "<group>"; };
E688ADFF2CADD8C400951D97 /* NotificationBannerViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationBannerViewControllerTests.swift; sourceTree = "<group>"; };
E688AE022CADE36900951D97 /* OnNotificationsChangeHandlerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnNotificationsChangeHandlerTests.swift; sourceTree = "<group>"; };
E6C5F5F52C9FEE0200861709 /* AccountManagementViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountManagementViewController.swift; sourceTree = "<group>"; };
E6165CC02CA7D09900B76DA5 /* FetchInitComponentPropsMessageHandlerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FetchInitComponentPropsMessageHandlerTests.swift; sourceTree = "<group>"; };
E65691212CA52D5900E0DB00 /* StripeConnect+Exports.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StripeConnect+Exports.swift"; sourceTree = "<group>"; };
E6F485F72C9E35A5000D914F /* PaymentDetailsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentDetailsViewController.swift; sourceTree = "<group>"; };
E6F485FB2C9E360A000D914F /* ConnectJSURLParams.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectJSURLParams.swift; sourceTree = "<group>"; };
E6F485FD2C9E36B2000D914F /* PaymentDetailsViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaymentDetailsViewControllerTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -351,7 +349,6 @@
416E9ED02C77F6C100A0B917 /* Extensions */ = {
isa = PBXGroup;
children = (
416E9ED12C77F6E000A0B917 /* Locale+extension.swift */,
416E9ED32C77F90600A0B917 /* WKScriptMessage+extension.swift */,
41542A682C88B6F2004E728E /* JSONEncoder+extension.swift */,
41542A6A2C88B79E004E728E /* JSONSerialization+extension.swift */,
Expand Down Expand Up @@ -703,7 +700,6 @@
E6C5F5F62C9FEE0200861709 /* AccountManagementViewController.swift in Sources */,
413987C82C63F34B001D375E /* DebugMessageHandler.swift in Sources */,
410D0FCC2C6CFFDB009B0E26 /* AccountSessionClaimedMessageHandler.swift in Sources */,
416E9ED22C77F6E000A0B917 /* Locale+extension.swift in Sources */,
41BCCFED2C8B34F600797E01 /* StringCodingKey.swift in Sources */,
4186664E2C66ACB3003DB62E /* OnLoadErrorMessageHandler.swift in Sources */,
410D0FE52C6D32F0009B0E26 /* ApplicationURLOpener.swift in Sources */,
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class ConnectComponentWebView: ConnectWebView {
loadContent: loadContent)
}
func updateAppearance(appearance: Appearance) {
sendMessage(UpdateConnectInstanceSender.init(payload: .init(locale: webLocale.webIdentifier, appearance: .init(appearance: appearance, traitCollection: traitCollection))))
sendMessage(UpdateConnectInstanceSender.init(payload: .init(locale: webLocale.toLanguageTag(), appearance: .init(appearance: appearance, traitCollection: traitCollection))))
updateColors(appearance: appearance)
}

Expand Down Expand Up @@ -162,7 +162,7 @@ private extension ConnectComponentWebView {
// If self no longer exists give default values
return .init(locale: "", appearance: .init(appearance: .default, traitCollection: .init()))
}
return .init(locale: webLocale.webIdentifier,
return .init(locale: webLocale.toLanguageTag(),
appearance: .init(appearance: componentManager.appearance, traitCollection: self.traitCollection),
fonts: componentManager.fonts.map({ .init(customFontSource: $0) }))
}))
Expand All @@ -188,7 +188,7 @@ private extension ConnectComponentWebView {
) { [weak self] _ in
// swiftlint:disable:previous unused_capture_list
guard let self else { return }
sendMessage(UpdateConnectInstanceSender(payload: .init(locale: webLocale.webIdentifier, appearance: .init(appearance: componentManager.appearance, traitCollection: traitCollection))))
sendMessage(UpdateConnectInstanceSender(payload: .init(locale: webLocale.toLanguageTag(), appearance: .init(appearance: componentManager.appearance, traitCollection: traitCollection))))
}
}

Expand Down
4 changes: 4 additions & 0 deletions StripeCore/StripeCore.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@
DFF3092E51B6C3ED81AB1448 /* String+Localized.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FF688F66CD047D08B3AE0CB /* String+Localized.swift */; };
E2B25D45D457A76A782D9089 /* STPAnalyticEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B6C28853EF0316366FB8DC4 /* STPAnalyticEvent.swift */; };
E344C20A07D8B8F33B530974 /* TestConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4B2A342F16484705840F1B5 /* TestConstants.swift */; };
E6EF91C32CB9DC410082DD1B /* Locale+StripeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6EF91C22CB9DC3C0082DD1B /* Locale+StripeTests.swift */; };
EFE476BA387E91BE1D5D3E1D /* URLRequest+StripeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B75708617FB765AB211FD9A /* URLRequest+StripeTest.swift */; };
EFF90360C85642F7F2898186 /* URLEncoderTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F2E1D80D0342CF09CB05415 /* URLEncoderTest.swift */; };
F5DB5D52E2668136FF6D70D6 /* NSMutableURLRequest+StripeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66CC52EF207F05E0EFAEACD8 /* NSMutableURLRequest+StripeTest.swift */; };
Expand Down Expand Up @@ -332,6 +333,7 @@
E1C72BA9C44FF60A0E7BEF76 /* STPMultipartFormDataPart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = STPMultipartFormDataPart.swift; sourceTree = "<group>"; };
E4B2A342F16484705840F1B5 /* TestConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestConstants.swift; sourceTree = "<group>"; };
E60F4A38EEF5EA11568B3A64 /* StripeCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StripeCore.h; sourceTree = "<group>"; };
E6EF91C22CB9DC3C0082DD1B /* Locale+StripeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Locale+StripeTests.swift"; sourceTree = "<group>"; };
E919FBEB852CFEA9517FCBDC /* FraudDetectionData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FraudDetectionData.swift; sourceTree = "<group>"; };
EA55726A0FE74A4D90A10C01 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
ECF3D265DCDD0D64F6D7E6B2 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = "<group>"; };
Expand Down Expand Up @@ -427,6 +429,7 @@
3A3F265C90373C3EF2F61523 /* Categories */ = {
isa = PBXGroup;
children = (
E6EF91C22CB9DC3C0082DD1B /* Locale+StripeTests.swift */,
34895253739089BC125D2625 /* Dictionary+StripeTests.swift */,
8F2949BE5129DC4BBCD69B05 /* NSArray+StripeCoreTest.swift */,
66CC52EF207F05E0EFAEACD8 /* NSMutableURLRequest+StripeTest.swift */,
Expand Down Expand Up @@ -950,6 +953,7 @@
84487D8E9B08106C89753536 /* Error_SerializeForLoggingTest.swift in Sources */,
0A78AD04075C43A4059C344E /* STPAnalyticsClientTest.swift in Sources */,
934CCB00769674F13192A126 /* Dictionary+StripeTests.swift in Sources */,
E6EF91C32CB9DC410082DD1B /* Locale+StripeTests.swift in Sources */,
49ECDA412CA340E100F647F0 /* AsyncTests.swift in Sources */,
A50CB2ACAC1DCF9539D76F25 /* NSArray+StripeCoreTest.swift in Sources */,
F5DB5D52E2668136FF6D70D6 /* NSMutableURLRequest+StripeTest.swift in Sources */,
Expand Down
50 changes: 50 additions & 0 deletions StripeCore/StripeCore/Source/Categories/Locale+StripeCore.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,54 @@ import Foundation
return self.isoRegionCodes
#endif
}

/// Returns the BCP 47(-ish) language tag representing the locale.
///
/// The language tag is expected to be well-formed as long as the locale identifier contains a
/// valid language code. For example:
///
/// ```
/// let locale = Locale(identifier: "fr_CA")
/// locale.toLanguageTag() // -> "fr-CA"
/// ```
///
/// The following example returns `"-ES"`, even though `"und-ES"` will be the appropriate BCP 47 tag:
///
/// ```
/// let locale = Locale(identifier: "_ES")
/// locale.toLanguageTag() // -> "-ES"
/// ```
/// All system iOS and macOS locales are expected to contain valid language codes.
///
/// On iOS 16+, the device region may be different from the language region. When these are different,
/// the device region is encoded at the end. The example below corresponds to:
/// Language=English (UK) and Region=United States:
///
/// ```
/// let locale = Locale(identifier: "en_GB@rg=uszzzz")
/// locale.toLanguageTag() // -> "en-GB"
/// ```
///
func toLanguageTag() -> String {
var tag = Locale.canonicalLanguageIdentifier(from: self.identifier)

// Drop sub-tags or extended variants like `en-US@calendar=gregorian`
// or `en-GB@rg=uszzzz`
if let unextended = tag.split(separator: "@").first {
tag = String(unextended)
}

/*
iOS omits the language script when specifying:
language=Chinese, Traditional and region=Hong Kong (China)
Stripe's web and backend localization will default to Simplified Chinese
(zh-Hans) if no script is specified, so insert the `Hant` script to
ensure Traditional Chinese is returned.
*/
if tag == "zh-HK" {
tag = "zh-Hant-HK"
}
return tag
}
}
Loading

0 comments on commit 3d371cb

Please sign in to comment.