Skip to content

Commit

Permalink
🚧 WIP: Add Firebase
Browse files Browse the repository at this point in the history
- Add Firebase
- Add Firestore
- Implement Reminder repository
- Hook up Reminder repository to view model

Signed-off-by: Peter Friese <[email protected]>
  • Loading branch information
peterfriese committed Dec 16, 2021
1 parent 35d45cf commit 6a8ac37
Show file tree
Hide file tree
Showing 10 changed files with 573 additions and 4 deletions.
112 changes: 112 additions & 0 deletions code/frontend/MakeItSo/MakeItSo.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,19 @@

/* Begin PBXBuildFile section */
881EF5BD272DC399004761E5 /* View+Focus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 881EF5BC272DC399004761E5 /* View+Focus.swift */; };
88700F74276B4DE10088F006 /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = 88700F73276B4DE10088F006 /* FirebaseAnalytics */; };
88700F76276B4DE10088F006 /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 88700F75276B4DE10088F006 /* FirebaseAuth */; };
88700F78276B4DE10088F006 /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = 88700F77276B4DE10088F006 /* FirebaseFirestore */; };
88700F7A276B4DE10088F006 /* FirebaseFirestoreSwift-Beta in Frameworks */ = {isa = PBXBuildFile; productRef = 88700F79276B4DE10088F006 /* FirebaseFirestoreSwift-Beta */; };
88700F7D276B4FF90088F006 /* ReminderRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88700F7C276B4FF90088F006 /* ReminderRepository.swift */; };
88700F7E276B4FF90088F006 /* ReminderRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88700F7C276B4FF90088F006 /* ReminderRepository.swift */; };
88700F82276B517F0088F006 /* AuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88700F81276B517F0088F006 /* AuthenticationService.swift */; };
88700F83276B517F0088F006 /* AuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88700F81276B517F0088F006 /* AuthenticationService.swift */; };
88700F86276B52150088F006 /* Resolver in Frameworks */ = {isa = PBXBuildFile; productRef = 88700F85276B52150088F006 /* Resolver */; };
88700F88276B54810088F006 /* MakeItSoApp+Injection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88700F87276B54810088F006 /* MakeItSoApp+Injection.swift */; };
88700F89276B54810088F006 /* MakeItSoApp+Injection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88700F87276B54810088F006 /* MakeItSoApp+Injection.swift */; };
88700F8B276B5E8A0088F006 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 88700F8A276B5E8A0088F006 /* GoogleService-Info.plist */; };
88700F8C276B5E8A0088F006 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 88700F8A276B5E8A0088F006 /* GoogleService-Info.plist */; };
887B6FAD273ED4180028263D /* EmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887B6FA9273ED4180028263D /* EmptyStateView.swift */; };
887B6FAE273ED4180028263D /* EmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887B6FA9273ED4180028263D /* EmptyStateView.swift */; };
88A1B7432756541400DB0494 /* ReminderListRowViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A1B7422756541400DB0494 /* ReminderListRowViewModel.swift */; };
Expand Down Expand Up @@ -35,6 +48,10 @@

/* Begin PBXFileReference section */
881EF5BC272DC399004761E5 /* View+Focus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+Focus.swift"; sourceTree = "<group>"; };
88700F7C276B4FF90088F006 /* ReminderRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderRepository.swift; sourceTree = "<group>"; };
88700F81276B517F0088F006 /* AuthenticationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationService.swift; sourceTree = "<group>"; };
88700F87276B54810088F006 /* MakeItSoApp+Injection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MakeItSoApp+Injection.swift"; sourceTree = "<group>"; };
88700F8A276B5E8A0088F006 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
887B6FA9273ED4180028263D /* EmptyStateView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmptyStateView.swift; sourceTree = "<group>"; };
88A1B7422756541400DB0494 /* ReminderListRowViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderListRowViewModel.swift; sourceTree = "<group>"; };
88C30CD5274D1B4500E6694D /* ReminderDetailsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReminderDetailsViewModel.swift; sourceTree = "<group>"; };
Expand All @@ -58,6 +75,11 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
88700F74276B4DE10088F006 /* FirebaseAnalytics in Frameworks */,
88700F7A276B4DE10088F006 /* FirebaseFirestoreSwift-Beta in Frameworks */,
88700F76276B4DE10088F006 /* FirebaseAuth in Frameworks */,
88700F86276B52150088F006 /* Resolver in Frameworks */,
88700F78276B4DE10088F006 /* FirebaseFirestore in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -82,6 +104,30 @@
path = Extensions;
sourceTree = "<group>";
};
88700F7B276B4F8F0088F006 /* Repositories */ = {
isa = PBXGroup;
children = (
88700F7C276B4FF90088F006 /* ReminderRepository.swift */,
);
path = Repositories;
sourceTree = "<group>";
};
88700F7F276B514F0088F006 /* Authentication */ = {
isa = PBXGroup;
children = (
88700F80276B516F0088F006 /* Services */,
);
path = Authentication;
sourceTree = "<group>";
};
88700F80276B516F0088F006 /* Services */ = {
isa = PBXGroup;
children = (
88700F81276B517F0088F006 /* AuthenticationService.swift */,
);
path = Services;
sourceTree = "<group>";
};
887B6FA6273ED4180028263D /* Common */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -115,6 +161,8 @@
88FEECEB2727FEC100ED368C /* Features */,
88FEECCA27275ABC00ED368C /* MakeItSoApp.swift */,
88FEECCC27275ABD00ED368C /* Assets.xcassets */,
88700F8A276B5E8A0088F006 /* GoogleService-Info.plist */,
88700F87276B54810088F006 /* MakeItSoApp+Injection.swift */,
);
path = Shared;
sourceTree = "<group>";
Expand All @@ -139,6 +187,7 @@
88FEECEB2727FEC100ED368C /* Features */ = {
isa = PBXGroup;
children = (
88700F7F276B514F0088F006 /* Authentication */,
88FEECEC2727FECA00ED368C /* ReminderList */,
);
path = Features;
Expand All @@ -147,6 +196,7 @@
88FEECEC2727FECA00ED368C /* ReminderList */ = {
isa = PBXGroup;
children = (
88700F7B276B4F8F0088F006 /* Repositories */,
88FEECED2727FED500ED368C /* Models */,
88FEECF52728070600ED368C /* ViewModels */,
88FEECEE2727FEDE00ED368C /* Views */,
Expand Down Expand Up @@ -199,6 +249,11 @@
);
name = "MakeItSo (iOS)";
packageProductDependencies = (
88700F73276B4DE10088F006 /* FirebaseAnalytics */,
88700F75276B4DE10088F006 /* FirebaseAuth */,
88700F77276B4DE10088F006 /* FirebaseFirestore */,
88700F79276B4DE10088F006 /* FirebaseFirestoreSwift-Beta */,
88700F85276B52150088F006 /* Resolver */,
);
productName = "MakeItSo (iOS)";
productReference = 88FEECD127275ABD00ED368C /* MakeItSo.app */;
Expand Down Expand Up @@ -249,6 +304,8 @@
);
mainGroup = 88FEECC427275ABC00ED368C;
packageReferences = (
88700F72276B4DE10088F006 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */,
88700F84276B52150088F006 /* XCRemoteSwiftPackageReference "Resolver" */,
);
productRefGroup = 88FEECD227275ABD00ED368C /* Products */;
projectDirPath = "";
Expand All @@ -266,6 +323,7 @@
buildActionMask = 2147483647;
files = (
88FEECDE27275ABD00ED368C /* Assets.xcassets in Resources */,
88700F8B276B5E8A0088F006 /* GoogleService-Info.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -274,6 +332,7 @@
buildActionMask = 2147483647;
files = (
88FEECDF27275ABD00ED368C /* Assets.xcassets in Resources */,
88700F8C276B5E8A0088F006 /* GoogleService-Info.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -286,15 +345,18 @@
files = (
88FEECF02727FEFF00ED368C /* Reminder.swift in Sources */,
88FA998D274D63A400670474 /* View+ConfirmationDialog.swift in Sources */,
88700F88276B54810088F006 /* MakeItSoApp+Injection.swift in Sources */,
88FEECFA27280F3D00ED368C /* ReminderListRowView.swift in Sources */,
88A1B7432756541400DB0494 /* ReminderListRowViewModel.swift in Sources */,
88E25439275E494900341C5C /* Font+Rounded.swift in Sources */,
88FA99922750090200670474 /* View+InteractiveDismissDisable.swift in Sources */,
887B6FAD273ED4180028263D /* EmptyStateView.swift in Sources */,
88E7B7BE274CF30A00AF477D /* ReminderDetailsView.swift in Sources */,
88C30CD6274D1B4500E6694D /* ReminderDetailsViewModel.swift in Sources */,
88700F82276B517F0088F006 /* AuthenticationService.swift in Sources */,
88FEECDA27275ABD00ED368C /* MakeItSoApp.swift in Sources */,
881EF5BD272DC399004761E5 /* View+Focus.swift in Sources */,
88700F7D276B4FF90088F006 /* ReminderRepository.swift in Sources */,
88FEECF32728044100ED368C /* RemindersListView.swift in Sources */,
88FEECF72728072D00ED368C /* RemindersListViewModel.swift in Sources */,
);
Expand All @@ -305,8 +367,11 @@
buildActionMask = 2147483647;
files = (
88FEECF12727FEFF00ED368C /* Reminder.swift in Sources */,
88700F7E276B4FF90088F006 /* ReminderRepository.swift in Sources */,
88700F89276B54810088F006 /* MakeItSoApp+Injection.swift in Sources */,
88C30CD7274D1B4500E6694D /* ReminderDetailsViewModel.swift in Sources */,
88FEECFB27280F3D00ED368C /* ReminderListRowView.swift in Sources */,
88700F83276B517F0088F006 /* AuthenticationService.swift in Sources */,
88FEECDB27275ABD00ED368C /* MakeItSoApp.swift in Sources */,
88FEECF42728044100ED368C /* RemindersListView.swift in Sources */,
88FEECF82728072D00ED368C /* RemindersListViewModel.swift in Sources */,
Expand Down Expand Up @@ -578,6 +643,53 @@
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */

/* Begin XCRemoteSwiftPackageReference section */
88700F72276B4DE10088F006 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/firebase/firebase-ios-sdk";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 8.0.0;
};
};
88700F84276B52150088F006 /* XCRemoteSwiftPackageReference "Resolver" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/hmlongco/Resolver";
requirement = {
branch = master;
kind = branch;
};
};
/* End XCRemoteSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
88700F73276B4DE10088F006 /* FirebaseAnalytics */ = {
isa = XCSwiftPackageProductDependency;
package = 88700F72276B4DE10088F006 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
productName = FirebaseAnalytics;
};
88700F75276B4DE10088F006 /* FirebaseAuth */ = {
isa = XCSwiftPackageProductDependency;
package = 88700F72276B4DE10088F006 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
productName = FirebaseAuth;
};
88700F77276B4DE10088F006 /* FirebaseFirestore */ = {
isa = XCSwiftPackageProductDependency;
package = 88700F72276B4DE10088F006 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
productName = FirebaseFirestore;
};
88700F79276B4DE10088F006 /* FirebaseFirestoreSwift-Beta */ = {
isa = XCSwiftPackageProductDependency;
package = 88700F72276B4DE10088F006 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
productName = "FirebaseFirestoreSwift-Beta";
};
88700F85276B52150088F006 /* Resolver */ = {
isa = XCSwiftPackageProductDependency;
package = 88700F84276B52150088F006 /* XCRemoteSwiftPackageReference "Resolver" */;
productName = Resolver;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 88FEECC527275ABC00ED368C /* Project object */;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
{
"object": {
"pins": [
{
"package": "abseil",
"repositoryURL": "https://github.com/firebase/abseil-cpp-SwiftPM.git",
"state": {
"branch": null,
"revision": "fffc3c2729be5747390ad02d5100291a0d9ad26a",
"version": "0.20200225.4"
}
},
{
"package": "BoringSSL-GRPC",
"repositoryURL": "https://github.com/firebase/boringssl-SwiftPM.git",
"state": {
"branch": null,
"revision": "734a8247442fde37df4364c21f6a0085b6a36728",
"version": "0.7.2"
}
},
{
"package": "Firebase",
"repositoryURL": "https://github.com/firebase/firebase-ios-sdk",
"state": {
"branch": null,
"revision": "08686f04881483d2bc098b2696e674c0ba135e47",
"version": "8.10.0"
}
},
{
"package": "GoogleAppMeasurement",
"repositoryURL": "https://github.com/google/GoogleAppMeasurement.git",
"state": {
"branch": null,
"revision": "9b2f6aca5b4685c45f9f5481f19bee8e7982c538",
"version": "8.9.1"
}
},
{
"package": "GoogleDataTransport",
"repositoryURL": "https://github.com/google/GoogleDataTransport.git",
"state": {
"branch": null,
"revision": "15ccdfd25ac55b9239b82809531ff26605e7556e",
"version": "9.1.2"
}
},
{
"package": "GoogleUtilities",
"repositoryURL": "https://github.com/google/GoogleUtilities.git",
"state": {
"branch": null,
"revision": "797005ad8a1f0614063933e2fa010a5d13cb09d0",
"version": "7.6.0"
}
},
{
"package": "gRPC",
"repositoryURL": "https://github.com/firebase/grpc-SwiftPM.git",
"state": {
"branch": null,
"revision": "fb405dd2c7901485f7e158b24e3a0a47e4efd8b5",
"version": "1.28.4"
}
},
{
"package": "GTMSessionFetcher",
"repositoryURL": "https://github.com/google/gtm-session-fetcher.git",
"state": {
"branch": null,
"revision": "bc6a19702ac76ac4e488b68148710eb815f9bc56",
"version": "1.7.0"
}
},
{
"package": "leveldb",
"repositoryURL": "https://github.com/firebase/leveldb.git",
"state": {
"branch": null,
"revision": "0706abcc6b0bd9cedfbb015ba840e4a780b5159b",
"version": "1.22.2"
}
},
{
"package": "nanopb",
"repositoryURL": "https://github.com/firebase/nanopb.git",
"state": {
"branch": null,
"revision": "7ee9ef9f627d85cbe1b8c4f49a3ed26eed216c77",
"version": "2.30908.0"
}
},
{
"package": "Promises",
"repositoryURL": "https://github.com/google/promises.git",
"state": {
"branch": null,
"revision": "611337c330350c9c1823ad6d671e7f936af5ee13",
"version": "2.0.0"
}
},
{
"package": "Resolver",
"repositoryURL": "https://github.com/hmlongco/Resolver",
"state": {
"branch": "master",
"revision": "bd565aae33a08dd4e10747bfb98e2bf8a63bfa28",
"version": null
}
},
{
"package": "SwiftProtobuf",
"repositoryURL": "https://github.com/apple/swift-protobuf.git",
"state": {
"branch": null,
"revision": "7e2c5f3cbbeea68e004915e3a8961e20bd11d824",
"version": "1.18.0"
}
}
]
},
"version": 1
}
2 changes: 1 addition & 1 deletion code/frontend/MakeItSo/Shared/Extensions/View+Focus.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import SwiftUI
/// Used to manage focus in a `List` view
enum Focusable: Hashable {
case none
case row(id: String)
case row(id: String?)
}

extension View {
Expand Down
Loading

0 comments on commit 6a8ac37

Please sign in to comment.