diff --git a/GoogleService-Info.plist b/GoogleService-Info.plist
new file mode 100644
index 0000000..c4793cc
--- /dev/null
+++ b/GoogleService-Info.plist
@@ -0,0 +1,34 @@
+
+
+
+
+ CLIENT_ID
+ 77785854711-kedg65qete3dhcmtbda2nn0n4e2sa9h9.apps.googleusercontent.com
+ REVERSED_CLIENT_ID
+ com.googleusercontent.apps.77785854711-kedg65qete3dhcmtbda2nn0n4e2sa9h9
+ API_KEY
+ AIzaSyBXhDkQ_dGzAchKiBCsEJL78fAKd77EBHg
+ GCM_SENDER_ID
+ 77785854711
+ PLIST_VERSION
+ 1
+ BUNDLE_ID
+ com.tunpok.ios.dudu-tweet
+ PROJECT_ID
+ twitter-22a99
+ STORAGE_BUCKET
+ twitter-22a99.appspot.com
+ IS_ADS_ENABLED
+
+ IS_ANALYTICS_ENABLED
+
+ IS_APPINVITE_ENABLED
+
+ IS_GCM_ENABLED
+
+ IS_SIGNIN_ENABLED
+
+ GOOGLE_APP_ID
+ 1:77785854711:ios:00f7d7cd05ce7e37a719f2
+
+
\ No newline at end of file
diff --git a/dudu-tweet/dudu-tweet.xcodeproj/project.pbxproj b/dudu-tweet/dudu-tweet.xcodeproj/project.pbxproj
index d073cc2..24521f9 100644
--- a/dudu-tweet/dudu-tweet.xcodeproj/project.pbxproj
+++ b/dudu-tweet/dudu-tweet.xcodeproj/project.pbxproj
@@ -31,6 +31,11 @@
24A59AE82A00F106009C9E3E /* RoundedShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24A59AE72A00F106009C9E3E /* RoundedShape.swift */; };
24A59AEA2A00F672009C9E3E /* CustomInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24A59AE92A00F672009C9E3E /* CustomInputField.swift */; };
24A59AED2A00F942009C9E3E /* AuthHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24A59AEC2A00F942009C9E3E /* AuthHeaderView.swift */; };
+ 24A59AEF2A010142009C9E3E /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 24A59AEE2A010142009C9E3E /* GoogleService-Info.plist */; };
+ 24A59AF22A010411009C9E3E /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 24A59AF12A010411009C9E3E /* FirebaseAuth */; };
+ 24A59AF42A010411009C9E3E /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = 24A59AF32A010411009C9E3E /* FirebaseFirestore */; };
+ 24A59AF62A010411009C9E3E /* FirebaseFirestoreSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 24A59AF52A010411009C9E3E /* FirebaseFirestoreSwift */; };
+ 24A59AF82A010411009C9E3E /* FirebaseStorage in Frameworks */ = {isa = PBXBuildFile; productRef = 24A59AF72A010411009C9E3E /* FirebaseStorage */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@@ -60,6 +65,7 @@
24A59AE72A00F106009C9E3E /* RoundedShape.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoundedShape.swift; sourceTree = ""; };
24A59AE92A00F672009C9E3E /* CustomInputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomInputField.swift; sourceTree = ""; };
24A59AEC2A00F942009C9E3E /* AuthHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthHeaderView.swift; sourceTree = ""; };
+ 24A59AEE2A010142009C9E3E /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "../../GoogleService-Info.plist"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -67,6 +73,10 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 24A59AF22A010411009C9E3E /* FirebaseAuth in Frameworks */,
+ 24A59AF82A010411009C9E3E /* FirebaseStorage in Frameworks */,
+ 24A59AF42A010411009C9E3E /* FirebaseFirestore in Frameworks */,
+ 24A59AF62A010411009C9E3E /* FirebaseFirestoreSwift in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -99,6 +109,7 @@
2492CC0C2A000EB00086C525 /* dudu_tweetApp.swift */,
2492CC0E2A000EB00086C525 /* ContentView.swift */,
2492CC102A000EB10086C525 /* Assets.xcassets */,
+ 24A59AEE2A010142009C9E3E /* GoogleService-Info.plist */,
2492CC122A000EB10086C525 /* dudu_tweet.entitlements */,
2492CC132A000EB10086C525 /* Preview Content */,
);
@@ -377,6 +388,12 @@
dependencies = (
);
name = "dudu-tweet";
+ packageProductDependencies = (
+ 24A59AF12A010411009C9E3E /* FirebaseAuth */,
+ 24A59AF32A010411009C9E3E /* FirebaseFirestore */,
+ 24A59AF52A010411009C9E3E /* FirebaseFirestoreSwift */,
+ 24A59AF72A010411009C9E3E /* FirebaseStorage */,
+ );
productName = "dudu-tweet";
productReference = 2492CC092A000EB00086C525 /* dudu-tweet.app */;
productType = "com.apple.product-type.application";
@@ -405,6 +422,9 @@
Base,
);
mainGroup = 2492CC002A000EB00086C525;
+ packageReferences = (
+ 24A59AF02A010411009C9E3E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */,
+ );
productRefGroup = 2492CC0A2A000EB00086C525 /* Products */;
projectDirPath = "";
projectRoot = "";
@@ -421,6 +441,7 @@
files = (
2492CC152A000EB10086C525 /* Preview Assets.xcassets in Resources */,
2492CC112A000EB10086C525 /* Assets.xcassets in Resources */,
+ 24A59AEF2A010142009C9E3E /* GoogleService-Info.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -666,6 +687,40 @@
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
+
+/* Begin XCRemoteSwiftPackageReference section */
+ 24A59AF02A010411009C9E3E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = {
+ isa = XCRemoteSwiftPackageReference;
+ repositoryURL = "https://github.com/firebase/firebase-ios-sdk";
+ requirement = {
+ kind = upToNextMajorVersion;
+ minimumVersion = 9.0.0;
+ };
+ };
+/* End XCRemoteSwiftPackageReference section */
+
+/* Begin XCSwiftPackageProductDependency section */
+ 24A59AF12A010411009C9E3E /* FirebaseAuth */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 24A59AF02A010411009C9E3E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
+ productName = FirebaseAuth;
+ };
+ 24A59AF32A010411009C9E3E /* FirebaseFirestore */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 24A59AF02A010411009C9E3E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
+ productName = FirebaseFirestore;
+ };
+ 24A59AF52A010411009C9E3E /* FirebaseFirestoreSwift */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 24A59AF02A010411009C9E3E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
+ productName = FirebaseFirestoreSwift;
+ };
+ 24A59AF72A010411009C9E3E /* FirebaseStorage */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 24A59AF02A010411009C9E3E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
+ productName = FirebaseStorage;
+ };
+/* End XCSwiftPackageProductDependency section */
};
rootObject = 2492CC012A000EB00086C525 /* Project object */;
}
diff --git a/dudu-tweet/dudu-tweet.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/dudu-tweet/dudu-tweet.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
new file mode 100644
index 0000000..fb6c96a
--- /dev/null
+++ b/dudu-tweet/dudu-tweet.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
@@ -0,0 +1,113 @@
+{
+ "pins" : [
+ {
+ "identity" : "abseil-cpp-swiftpm",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/firebase/abseil-cpp-SwiftPM.git",
+ "state" : {
+ "revision" : "583de9bd60f66b40e78d08599cc92036c2e7e4e1",
+ "version" : "0.20220203.2"
+ }
+ },
+ {
+ "identity" : "boringssl-swiftpm",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/firebase/boringssl-SwiftPM.git",
+ "state" : {
+ "revision" : "dd3eda2b05a3f459fc3073695ad1b28659066eab",
+ "version" : "0.9.1"
+ }
+ },
+ {
+ "identity" : "firebase-ios-sdk",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/firebase/firebase-ios-sdk",
+ "state" : {
+ "revision" : "7e80c25b51c2ffa238879b07fbfc5baa54bb3050",
+ "version" : "9.6.0"
+ }
+ },
+ {
+ "identity" : "googleappmeasurement",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/google/GoogleAppMeasurement.git",
+ "state" : {
+ "revision" : "c1cfde8067668027b23a42c29d11c246152fe046",
+ "version" : "9.6.0"
+ }
+ },
+ {
+ "identity" : "googledatatransport",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/google/GoogleDataTransport.git",
+ "state" : {
+ "revision" : "cc7265b8e3906304e6e81f32c1662a94bbae2357",
+ "version" : "9.2.2"
+ }
+ },
+ {
+ "identity" : "googleutilities",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/google/GoogleUtilities.git",
+ "state" : {
+ "revision" : "871d43135925cde39ef7421d8723ce47edfdcc39",
+ "version" : "7.11.1"
+ }
+ },
+ {
+ "identity" : "grpc-ios",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/grpc/grpc-ios.git",
+ "state" : {
+ "revision" : "8440b914756e0d26d4f4d054a1c1581daedfc5b6",
+ "version" : "1.44.3-grpc"
+ }
+ },
+ {
+ "identity" : "gtm-session-fetcher",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/google/gtm-session-fetcher.git",
+ "state" : {
+ "revision" : "5ccda3981422a84186387dbb763ba739178b529c",
+ "version" : "2.3.0"
+ }
+ },
+ {
+ "identity" : "leveldb",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/firebase/leveldb.git",
+ "state" : {
+ "revision" : "0706abcc6b0bd9cedfbb015ba840e4a780b5159b",
+ "version" : "1.22.2"
+ }
+ },
+ {
+ "identity" : "nanopb",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/firebase/nanopb.git",
+ "state" : {
+ "revision" : "819d0a2173aff699fb8c364b6fb906f7cdb1a692",
+ "version" : "2.30909.0"
+ }
+ },
+ {
+ "identity" : "promises",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/google/promises.git",
+ "state" : {
+ "revision" : "ec957ccddbcc710ccc64c9dcbd4c7006fcf8b73a",
+ "version" : "2.2.0"
+ }
+ },
+ {
+ "identity" : "swift-protobuf",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/apple/swift-protobuf.git",
+ "state" : {
+ "revision" : "0af9125c4eae12a4973fb66574c53a54962a9e1e",
+ "version" : "1.21.0"
+ }
+ }
+ ],
+ "version" : 2
+}
diff --git a/dudu-tweet/dudu-tweet.xcodeproj/project.xcworkspace/xcuserdata/ching.xcuserdatad/UserInterfaceState.xcuserstate b/dudu-tweet/dudu-tweet.xcodeproj/project.xcworkspace/xcuserdata/ching.xcuserdatad/UserInterfaceState.xcuserstate
index ee7529e..50d2aa3 100644
Binary files a/dudu-tweet/dudu-tweet.xcodeproj/project.xcworkspace/xcuserdata/ching.xcuserdatad/UserInterfaceState.xcuserstate and b/dudu-tweet/dudu-tweet.xcodeproj/project.xcworkspace/xcuserdata/ching.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/dudu-tweet/dudu-tweet.xcodeproj/xcuserdata/ching.xcuserdatad/xcschemes/xcschememanagement.plist b/dudu-tweet/dudu-tweet.xcodeproj/xcuserdata/ching.xcuserdatad/xcschemes/xcschememanagement.plist
index 202ac12..353001c 100644
--- a/dudu-tweet/dudu-tweet.xcodeproj/xcuserdata/ching.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/dudu-tweet/dudu-tweet.xcodeproj/xcuserdata/ching.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -4,10 +4,31 @@
SchemeUserState
+ Promises (Playground) 1.xcscheme
+
+ isShown
+
+ orderHint
+ 2
+
+ Promises (Playground) 2.xcscheme
+
+ isShown
+
+ orderHint
+ 3
+
+ Promises (Playground).xcscheme
+
+ isShown
+
+ orderHint
+ 0
+
dudu-tweet.xcscheme_^#shared#^_
orderHint
- 0
+ 1
SuppressBuildableAutocreation
diff --git a/dudu-tweet/dudu-tweet/dudu_tweetApp.swift b/dudu-tweet/dudu-tweet/dudu_tweetApp.swift
index 7899623..3b2e96d 100644
--- a/dudu-tweet/dudu-tweet/dudu_tweetApp.swift
+++ b/dudu-tweet/dudu-tweet/dudu_tweetApp.swift
@@ -6,9 +6,15 @@
//
import SwiftUI
+import Firebase
@main
struct dudu_tweetApp: App {
+
+ init() {
+ FirebaseApp.configure()
+ }
+
var body: some Scene {
WindowGroup {
NavigationView {