diff --git a/.claude/agents/EXTERNAL-INTEGRATIONS.md b/.claude/agents/EXTERNAL-INTEGRATIONS.md index ba13f26e16..99e437f945 100644 --- a/.claude/agents/EXTERNAL-INTEGRATIONS.md +++ b/.claude/agents/EXTERNAL-INTEGRATIONS.md @@ -27,24 +27,13 @@ DSTransaction *transaction = [wallet transactionForAmounts:amounts ``` ### Firebase Services -**Dependencies**: `Firebase/DynamicLinks`, `FirebaseStorage` +**Dependencies**: `Firebase/CoreOnly`, `FirebaseStorage` **Configuration**: `GoogleService-Info.plist` -**Dynamic Links Integration:** -```swift -// Handle incoming dynamic links -func application(_ app: UIApplication, - open url: URL, - options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { - - if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { - handleDynamicLink(dynamicLink) - return true - } - - return false -} -``` +Firebase Dynamic Links was removed (the service was shut down by Google in +August 2025 and nothing in the app used it). Invitation universal links are +routed directly in `AppDelegate continueUserActivity:` via +`DWInvitationLinkNormalizer`. **Storage Integration:** - Profile image storage for DashPay diff --git a/DashPay/dashpay-info.plist b/DashPay/dashpay-info.plist index ca87955939..50c478699a 100644 --- a/DashPay/dashpay-info.plist +++ b/DashPay/dashpay-info.plist @@ -110,12 +110,6 @@ CFBundleVersion $(CURRENT_PROJECT_VERSION) - FirebaseDeepLinkPasteboardRetrievalEnabled - - FirebaseDynamicLinksCustomDomains - - https://invitations.dashpay.io/link - ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj index 7e7016a4b4..b7707cb090 100644 --- a/DashWallet.xcodeproj/project.pbxproj +++ b/DashWallet.xcodeproj/project.pbxproj @@ -11803,7 +11803,6 @@ "-l\"DWAlertController\"", "-l\"FirebaseCore\"", "-l\"FirebaseCoreDiagnostics\"", - "-l\"FirebaseDynamicLinks\"", "-l\"FirebaseStorage\"", "-l\"GTMSessionFetcher\"", "-l\"GoogleDataTransport\"", @@ -11933,7 +11932,6 @@ "-l\"DWAlertController\"", "-l\"FirebaseCore\"", "-l\"FirebaseCoreDiagnostics\"", - "-l\"FirebaseDynamicLinks\"", "-l\"FirebaseStorage\"", "-l\"GTMSessionFetcher\"", "-l\"GoogleDataTransport\"", @@ -12272,7 +12270,6 @@ "-l\"DWAlertController\"", "-l\"FirebaseCore\"", "-l\"FirebaseCoreDiagnostics\"", - "-l\"FirebaseDynamicLinks\"", "-l\"FirebaseStorage\"", "-l\"GTMSessionFetcher\"", "-l\"GoogleDataTransport\"", @@ -12391,7 +12388,6 @@ "-l\"DWAlertController\"", "-l\"FirebaseCore\"", "-l\"FirebaseCoreDiagnostics\"", - "-l\"FirebaseDynamicLinks\"", "-l\"FirebaseStorage\"", "-l\"GTMSessionFetcher\"", "-l\"GoogleDataTransport\"", @@ -12521,7 +12517,6 @@ "-l\"DWAlertController\"", "-l\"FirebaseCore\"", "-l\"FirebaseCoreDiagnostics\"", - "-l\"FirebaseDynamicLinks\"", "-l\"FirebaseStorage\"", "-l\"GTMSessionFetcher\"", "-l\"GoogleDataTransport\"", @@ -12650,7 +12645,6 @@ "-l\"DWAlertController\"", "-l\"FirebaseCore\"", "-l\"FirebaseCoreDiagnostics\"", - "-l\"FirebaseDynamicLinks\"", "-l\"FirebaseStorage\"", "-l\"GTMSessionFetcher\"", "-l\"GoogleDataTransport\"", @@ -12841,7 +12835,6 @@ "-l\"DWAlertController\"", "-l\"FirebaseCore\"", "-l\"FirebaseCoreDiagnostics\"", - "-l\"FirebaseDynamicLinks\"", "-l\"FirebaseStorage\"", "-l\"GTMSessionFetcher\"", "-l\"GoogleDataTransport\"", @@ -13138,7 +13131,6 @@ "-l\"DWAlertController\"", "-l\"FirebaseCore\"", "-l\"FirebaseCoreDiagnostics\"", - "-l\"FirebaseDynamicLinks\"", "-l\"FirebaseStorage\"", "-l\"GTMSessionFetcher\"", "-l\"GoogleDataTransport\"", diff --git a/DashWallet/AppDelegate.m b/DashWallet/AppDelegate.m index b0616620c8..b912345efc 100644 --- a/DashWallet/AppDelegate.m +++ b/DashWallet/AppDelegate.m @@ -270,10 +270,6 @@ - (BOOL)application:(UIApplication *)application return NO; } - if ([DWURLParser shouldIgnoreURL:url]) { - return NO; - } - if (![DWURLParser canHandleURL:url]) { UIAlertController * alert = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Not a Dash URL", nil) diff --git a/DashWallet/Sources/Models/URL Handling/DWURLParser.h b/DashWallet/Sources/Models/URL Handling/DWURLParser.h index 56c7ea69f7..8333de8786 100644 --- a/DashWallet/Sources/Models/URL Handling/DWURLParser.h +++ b/DashWallet/Sources/Models/URL Handling/DWURLParser.h @@ -23,7 +23,6 @@ NS_ASSUME_NONNULL_BEGIN @interface DWURLParser : NSObject -+ (BOOL)shouldIgnoreURL:(NSURL *)url; + (BOOL)allowsURLHandling; + (BOOL)canHandleURL:(NSURL *)url; diff --git a/DashWallet/Sources/Models/URL Handling/DWURLParser.m b/DashWallet/Sources/Models/URL Handling/DWURLParser.m index ced61005f0..81cf9bccfc 100644 --- a/DashWallet/Sources/Models/URL Handling/DWURLParser.m +++ b/DashWallet/Sources/Models/URL Handling/DWURLParser.m @@ -23,19 +23,6 @@ @implementation DWURLParser -+ (BOOL)shouldIgnoreURL:(NSURL *)url { - if ([url.host isEqualToString:@"google"]) { - NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO]; - for (NSURLQueryItem *item in components.queryItems) { - if ([item.name isEqual:@"match_message"]) { - return [item.value isEqualToString:@"No pre-install link matched for this device."]; - } - } - } - - return NO; -} - + (BOOL)allowsURLHandling { // Don't allow URL handling without a wallet return DWWalletEnvironment.hasWallet; diff --git a/Podfile b/Podfile index 7caeca8fe8..0526952149 100644 --- a/Podfile +++ b/Podfile @@ -11,7 +11,11 @@ target 'dashwallet' do pod 'SQLiteMigrationManager.swift', '0.8.3' pod 'CloudInAppMessaging', '0.1.0' pod 'FirebaseStorage', '8.15.0' - pod 'Firebase/DynamicLinks' + # CoreOnly provides the `Firebase` umbrella module (Firebase.h + its module + # map) that `@import Firebase` / `import Firebase` resolve against. It used to + # arrive implicitly as a dependency of Firebase/DynamicLinks; that subspec was + # removed, so depend on it directly. + pod 'Firebase/CoreOnly', '8.15.0' pod 'SSZipArchive' pod 'KVO-MVVM', '0.5.6' pod 'UIViewController-KeyboardAdditions', '1.2.1' @@ -38,7 +42,11 @@ target 'dashpay' do pod 'SQLiteMigrationManager.swift', '0.8.3' pod 'CloudInAppMessaging', '0.1.0' pod 'FirebaseStorage', '8.15.0' - pod 'Firebase/DynamicLinks' + # CoreOnly provides the `Firebase` umbrella module (Firebase.h + its module + # map) that `@import Firebase` / `import Firebase` resolve against. It used to + # arrive implicitly as a dependency of Firebase/DynamicLinks; that subspec was + # removed, so depend on it directly. + pod 'Firebase/CoreOnly', '8.15.0' pod 'SSZipArchive' pod 'KVO-MVVM', '0.5.6' pod 'UIViewController-KeyboardAdditions', '1.2.1' diff --git a/Podfile.lock b/Podfile.lock index d3d7c600a5..5709e1f563 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -11,9 +11,6 @@ PODS: - DWAlertController (0.2.1) - Firebase/CoreOnly (8.15.0): - FirebaseCore (= 8.15.0) - - Firebase/DynamicLinks (8.15.0): - - Firebase/CoreOnly - - FirebaseDynamicLinks (~> 8.15.0) - FirebaseCore (8.15.0): - FirebaseCoreDiagnostics (~> 8.0) - GoogleUtilities/Environment (~> 7.7) @@ -23,8 +20,6 @@ PODS: - GoogleUtilities/Environment (~> 7.7) - GoogleUtilities/Logger (~> 7.7) - nanopb (~> 2.30908.0) - - FirebaseDynamicLinks (8.15.0): - - FirebaseCore (~> 8.0) - FirebaseStorage (8.15.0): - FirebaseCore (~> 8.0) - GTMSessionFetcher/Core (~> 1.5) @@ -85,7 +80,7 @@ DEPENDENCIES: - CocoaLumberjack (= 3.7.2) - DSDynamicOptions (= 0.1.2) - DWAlertController (= 0.2.1) - - Firebase/DynamicLinks + - Firebase/CoreOnly (= 8.15.0) - FirebaseStorage (= 8.15.0) - KVO-MVVM (= 0.5.6) - MBProgressHUD (= 1.1.0) @@ -113,7 +108,6 @@ SPEC REPOS: - Firebase - FirebaseCore - FirebaseCoreDiagnostics - - FirebaseDynamicLinks - FirebaseStorage - GoogleDataTransport - GoogleUtilities @@ -157,7 +151,6 @@ SPEC CHECKSUMS: Firebase: 5f8193dff4b5b7c5d5ef72ae54bb76c08e2b841d FirebaseCore: 5743c5785c074a794d35f2fff7ecc254a91e08b1 FirebaseCoreDiagnostics: 92e07a649aeb66352b319d43bdd2ee3942af84cb - FirebaseDynamicLinks: 1dc816ef789c5adac6fede0b46d11478175c70e4 FirebaseStorage: 8019af461599b2c3bc61c6a5dbdfa3d2de66a4d9 GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 @@ -180,6 +173,6 @@ SPEC CHECKSUMS: TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863 UIViewController-KeyboardAdditions: a691dc7e63a49854d341455a778ee8497dfc4662 -PODFILE CHECKSUM: 84531d88878e65f6868b95dff3cc1ce6aa4b22d8 +PODFILE CHECKSUM: ff8162523641779b8eeee0429cf75257fb69713b COCOAPODS: 1.15.2