Skip to content

Commit 7999fd3

Browse files
authored
Activate community support for Combine in Firebase 🔥
* Updated package naming, to highlight this is a community-supported effort * Targets are named `Firebase<Product>CombineSwift, to allow `import Firebase<Product>CombineSwift` * Removed umbrella package * Packages are named `Firebase<Product>Combine-Community` * Updated sample app to match new package structure * Updated installation instructions * Updated README * Updated changelog.
1 parent 79672c7 commit 7999fd3

File tree

9 files changed

+77
-50
lines changed

9 files changed

+77
-50
lines changed

‎Example/CombineSample/CombineSample.xcodeproj/project.pbxproj‎

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,16 @@
1313
885F5FB82653BE0D00848BCF /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 885F5FB72653BE0D00848BCF /* Preview Assets.xcassets */; };
1414
88B12B5B265547FF008CFF38 /* AuthenticationMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88B12B5A265547FF008CFF38 /* AuthenticationMenuView.swift */; };
1515
88B12B5D26554829008CFF38 /* MenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88B12B5C26554829008CFF38 /* MenuView.swift */; };
16+
88DA0515270662B300A3DDCE /* FirebaseAuthCombine-Community in Frameworks */ = {isa = PBXBuildFile; productRef = 88DA0514270662B300A3DDCE /* FirebaseAuthCombine-Community */; };
1617
88DCE7432655419C003BCB65 /* UserInfoViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88DCE7422655419C003BCB65 /* UserInfoViewModel.swift */; };
1718
88DCE746265541FB003BCB65 /* UserInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88DCE745265541FB003BCB65 /* UserInfoView.swift */; };
1819
88DCE7482655429F003BCB65 /* AnonymousSignInViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88DCE7472655429F003BCB65 /* AnonymousSignInViewModel.swift */; };
1920
88DF7E412653CE6E009794F3 /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 88DF7E402653CE6E009794F3 /* FirebaseAuth */; };
2021
88DF7E472653D092009794F3 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 88DF7E462653D092009794F3 /* GoogleService-Info.plist */; };
21-
88DF7E4B2653D673009794F3 /* FirebaseCombineSwift-Beta in Frameworks */ = {isa = PBXBuildFile; productRef = 88DF7E4A2653D673009794F3 /* FirebaseCombineSwift-Beta */; };
2222
88DF7E512654057F009794F3 /* LabelTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88DF7E502654057F009794F3 /* LabelTextView.swift */; };
23+
88E32CFB2694859700511B1B /* FirebaseFirestoreCombine-Community in Frameworks */ = {isa = PBXBuildFile; productRef = 88E32CFA2694859700511B1B /* FirebaseFirestoreCombine-Community */; };
24+
88E32CFD2694859700511B1B /* FirebaseFunctionsCombine-Community in Frameworks */ = {isa = PBXBuildFile; productRef = 88E32CFC2694859700511B1B /* FirebaseFunctionsCombine-Community */; };
25+
88E32CFF2694859700511B1B /* FirebaseStorageCombine-Community in Frameworks */ = {isa = PBXBuildFile; productRef = 88E32CFE2694859700511B1B /* FirebaseStorageCombine-Community */; };
2326
/* End PBXBuildFile section */
2427

2528
/* Begin PBXFileReference section */
@@ -43,8 +46,11 @@
4346
isa = PBXFrameworksBuildPhase;
4447
buildActionMask = 2147483647;
4548
files = (
49+
88E32CFB2694859700511B1B /* FirebaseFirestoreCombine-Community in Frameworks */,
4650
88DF7E412653CE6E009794F3 /* FirebaseAuth in Frameworks */,
47-
88DF7E4B2653D673009794F3 /* FirebaseCombineSwift-Beta in Frameworks */,
51+
88E32CFF2694859700511B1B /* FirebaseStorageCombine-Community in Frameworks */,
52+
88E32CFD2694859700511B1B /* FirebaseFunctionsCombine-Community in Frameworks */,
53+
88DA0515270662B300A3DDCE /* FirebaseAuthCombine-Community in Frameworks */,
4854
);
4955
runOnlyForDeploymentPostprocessing = 0;
5056
};
@@ -160,7 +166,10 @@
160166
name = CombineSample;
161167
packageProductDependencies = (
162168
88DF7E402653CE6E009794F3 /* FirebaseAuth */,
163-
88DF7E4A2653D673009794F3 /* FirebaseCombineSwift-Beta */,
169+
88E32CFA2694859700511B1B /* FirebaseFirestoreCombine-Community */,
170+
88E32CFC2694859700511B1B /* FirebaseFunctionsCombine-Community */,
171+
88E32CFE2694859700511B1B /* FirebaseStorageCombine-Community */,
172+
88DA0514270662B300A3DDCE /* FirebaseAuthCombine-Community */,
164173
);
165174
productName = CombineSample;
166175
productReference = 885F5FAD2653BE0D00848BCF /* CombineSample.app */;
@@ -414,13 +423,25 @@
414423
/* End XCConfigurationList section */
415424

416425
/* Begin XCSwiftPackageProductDependency section */
426+
88DA0514270662B300A3DDCE /* FirebaseAuthCombine-Community */ = {
427+
isa = XCSwiftPackageProductDependency;
428+
productName = "FirebaseAuthCombine-Community";
429+
};
417430
88DF7E402653CE6E009794F3 /* FirebaseAuth */ = {
418431
isa = XCSwiftPackageProductDependency;
419432
productName = FirebaseAuth;
420433
};
421-
88DF7E4A2653D673009794F3 /* FirebaseCombineSwift-Beta */ = {
434+
88E32CFA2694859700511B1B /* FirebaseFirestoreCombine-Community */ = {
435+
isa = XCSwiftPackageProductDependency;
436+
productName = "FirebaseFirestoreCombine-Community";
437+
};
438+
88E32CFC2694859700511B1B /* FirebaseFunctionsCombine-Community */ = {
439+
isa = XCSwiftPackageProductDependency;
440+
productName = "FirebaseFunctionsCombine-Community";
441+
};
442+
88E32CFE2694859700511B1B /* FirebaseStorageCombine-Community */ = {
422443
isa = XCSwiftPackageProductDependency;
423-
productName = "FirebaseCombineSwift-Beta";
444+
productName = "FirebaseStorageCombine-Community";
424445
};
425446
/* End XCSwiftPackageProductDependency section */
426447
};

‎Example/CombineSample/CombineSample/App/CombineSampleApp.swift‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ struct CombineSampleApp: App {
2626
NavigationView {
2727
MenuView()
2828
}
29-
// see https://stackoverflow.com/questions/63740788/swiftui-displaymodebuttonitem-is-internally-managed
29+
// see https://stackoverflow.com/q/63740788/281221
3030
.navigationViewStyle(StackNavigationViewStyle())
3131
}
3232
}

‎Example/CombineSample/CombineSample/ViewModels/Authentication/AnonymousSignInViewModel.swift‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@
1414

1515
import Foundation
1616
import Firebase
17-
import FirebaseCombineSwift
17+
import FirebaseAuthCombineSwift
18+
import FirebaseFirestoreCombineSwift
19+
import FirebaseFunctionsCombineSwift
20+
import FirebaseStorageCombineSwift
1821
import Combine
1922

2023
class AnonymousSignInViewModel: UserInfoViewModel {

‎Example/CombineSample/CombineSample/ViewModels/Authentication/UserInfoViewModel.swift‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
// limitations under the License.
1414

1515
import Firebase
16-
import FirebaseCombineSwift
16+
import FirebaseAuth
17+
import FirebaseAuthCombineSwift
1718
import Combine
1819

1920
class UserInfoViewModel: ObservableObject {

‎Example/CombineSample/CombineSample/Views/Authentication/AnonymousSignInView.swift‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import SwiftUI
1616
import Firebase
17-
import FirebaseCombineSwift
17+
import FirebaseAuthCombineSwift
1818
import Combine
1919

2020
struct AnonymousSignInView: View {

‎FirebaseCombineSwift/CHANGELOG.md‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
# Unreleased
2-
1+
# v8.9.0
32
- [feature] Added Combine support for Cloud Functions for Firebase
43
- [feature] Added Combine support for Firebase Auth
54
- [feature] Added Combine support for Firebase Storage

‎FirebaseCombineSwift/README.md‎

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
This module contains Combine support for Firebase APIs.
44

5-
**Note**: This feature is under development and not yet supported for use in production environments. You can follow development on the [project tracker](https://github.com/firebase/firebase-ios-sdk/projects/3)
5+
**Note**: This feature is under development and is supported only on a community basis. You can follow
6+
development on the [project tracker](https://github.com/firebase/firebase-ios-sdk/projects/3)
67

78
## Installation
89

@@ -27,9 +28,17 @@ end
2728
<details><summary>Swift Package Manager</summary>
2829

2930
* Follow the instructions in [Swift Package Manager for Firebase Beta
30-
](../SwiftPackageManager.md)
31-
* Make sure to import the package `FirebaseCombineSwift-Beta`
32-
31+
](../SwiftPackageManager.md) to add Firebase to your project
32+
* Make sure to import all of the following packages you intend to use:
33+
* FirebaseAuthCombine-Community
34+
* FirebaseFirestoreCombine-Community
35+
* FirebaseFunctionsCombine-Community
36+
* FirebaseStorageCombine-Community
37+
* In your code, import the respective module:
38+
* FirebaseAuthCombineSwift
39+
* FirebaseFirestoreCombineSwift
40+
* FirebaseFunctionsCombineSwift
41+
* FirebaseStorageCombineSwift
3342
</details>
3443

3544
## Usage

‎Package.swift‎

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -47,27 +47,22 @@ let package = Package(
4747
name: "FirebaseAppDistribution-Beta",
4848
targets: ["FirebaseAppDistributionTarget"]
4949
),
50-
// TODO: Re-enable after API review passes.
51-
// .library(
52-
// name: "FirebaseCombineSwift-Beta",
53-
// targets: ["FirebaseCombineSwift"]
54-
// ),
55-
// .library(
56-
// name: "FirebaseAuthCombineSwift-Beta",
57-
// targets: ["FirebaseAuthCombineSwift"]
58-
// ),
59-
// .library(
60-
// name: "FirebaseFirestoreCombineSwift-Beta",
61-
// targets: ["FirebaseFirestoreCombineSwift"]
62-
// ),
63-
// .library(
64-
// name: "FirebaseFunctionsCombineSwift-Beta",
65-
// targets: ["FirebaseFunctionsCombineSwift"]
66-
// ),
67-
// .library(
68-
// name: "FirebaseStorageCombineSwift-Beta",
69-
// targets: ["FirebaseStorageCombineSwift"]
70-
// ),
50+
.library(
51+
name: "FirebaseAuthCombine-Community",
52+
targets: ["FirebaseAuthCombineSwift"]
53+
),
54+
.library(
55+
name: "FirebaseFirestoreCombine-Community",
56+
targets: ["FirebaseFirestoreCombineSwift"]
57+
),
58+
.library(
59+
name: "FirebaseFunctionsCombine-Community",
60+
targets: ["FirebaseFunctionsCombineSwift"]
61+
),
62+
.library(
63+
name: "FirebaseStorageCombine-Community",
64+
targets: ["FirebaseStorageCombineSwift"]
65+
),
7166
.library(
7267
name: "FirebaseCrashlytics",
7368
targets: ["FirebaseCrashlytics"]
@@ -409,24 +404,17 @@ let package = Package(
409404
.headerSearchPath("../../.."),
410405
]
411406
),
412-
.target(
413-
name: "FirebaseCombineSwift",
414-
dependencies: [
415-
"FirebaseAuthCombineSwift",
416-
"FirebaseFirestoreCombineSwift",
417-
"FirebaseFunctionsCombineSwift",
418-
"FirebaseStorageCombineSwift",
419-
],
420-
path: "FirebaseCombineSwift/Sources/Core"
421-
),
422407
.target(
423408
name: "FirebaseAuthCombineSwift",
424409
dependencies: ["FirebaseAuth"],
425410
path: "FirebaseCombineSwift/Sources/Auth"
426411
),
427412
.target(
428413
name: "FirebaseFirestoreCombineSwift",
429-
dependencies: ["FirebaseFirestore", "FirebaseFirestoreSwift"],
414+
dependencies: [
415+
"FirebaseFirestore",
416+
"FirebaseFirestoreSwift",
417+
],
430418
path: "FirebaseCombineSwift/Sources/Firestore"
431419
),
432420
.target(
@@ -982,7 +970,10 @@ let package = Package(
982970
"FirebaseABTesting",
983971
.target(name: "FirebaseAppDistribution",
984972
condition: .when(platforms: [.iOS])),
985-
"FirebaseCombineSwift",
973+
"FirebaseAuthCombineSwift",
974+
"FirebaseFirestoreCombineSwift",
975+
"FirebaseFunctionsCombineSwift",
976+
"FirebaseStorageCombineSwift",
986977
"FirebaseCrashlytics",
987978
"FirebaseCore",
988979
"FirebaseDatabase",

‎README.md‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ Firebase is an app development platform with tools to help you build, grow and
3737
monetize your app. More information about Firebase can be found on the
3838
[official Firebase website](https://firebase.google.com).
3939

40-
**Note** _FirebaseCombineSwift_ contains support for Apple's Combine framework. This module is currently under development, and not yet supported for use in production environments. Fore more details, please refer to the [docs](FirebaseCombineSwift/README.md).
41-
4240
## Installation
4341

4442
See the subsections below for details about the different installation methods.
@@ -257,6 +255,11 @@ We've seen an amazing amount of interest and contributions to improve the Fireba
257255
very grateful! We'd like to empower as many developers as we can to be able to use Firebase and
258256
participate in the Firebase community.
259257

258+
#### Combine
259+
Thanks to contributions from the community, _FirebaseCombineSwift_ contains support for Apple's Combine
260+
framework. This module is currently under development, and not yet supported for use in production
261+
environments. Fore more details, please refer to the [docs](FirebaseCombineSwift/README.md).
262+
260263
#### tvOS, macOS, watchOS and Catalyst
261264
Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and
262265
work on tvOS, macOS, watchOS and Catalyst.

0 commit comments

Comments
 (0)