Skip to content

Commit 4435abe

Browse files
committed
Fixed request colelctions and documents.
1 parent 5af4767 commit 4435abe

File tree

4 files changed

+89
-39
lines changed

4 files changed

+89
-39
lines changed

README.md

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,23 @@
11
# Firewrap (Firebase Wrapper)
22

3-
- Auth
4-
- Analytics
5-
- Remote Config ✅
3+
## Database
64

7-
## Todo
5+
```swift
6+
// Make document
7+
let document = FirewrapDocument("/example1/doc-example")
88

9-
Examples calls for modules
9+
10+
document.get { data in
11+
// Get data once
12+
}
13+
14+
document.observe { data in
15+
Observe data
16+
}
17+
```
18+
19+
## Analytics
20+
21+
## Auth
22+
23+
## Remote Config

Sources/FirewrapAuth/FirewrapAuth.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,18 @@ import SwiftBoost
88
public class FirewrapAuth {
99

1010
public static func configure(authDidChangedWork: (() -> Void)? = nil) {
11+
1112
// Logs
12-
printConsole("Configure...")
13-
printConsole("Current state isAuthed: " + (isAuthed ? "true" : "false"))
13+
printConsole("Start configure. Current state isAuthed: " + (isAuthed ? "true" : "false"))
1414
if isAuthed {
15-
printConsole("userID: \(userID ?? .empty), email: \(userEmail ?? "nil")")
15+
printConsole("User info: userID: \(userID ?? .empty), email: \(userEmail ?? "nil")")
1616
}
17+
1718
// Observer Clean
1819
if let observer = shared.observer {
1920
Auth.auth().removeStateDidChangeListener(observer)
2021
}
22+
2123
// Configure Observer
2224
shared.observer = Auth.auth().addStateDidChangeListener { auth, user in
2325
let newState = isAuthed
@@ -27,6 +29,7 @@ public class FirewrapAuth {
2729
isAuthedStored = newState
2830
}
2931
}
32+
3033
printConsole("Configure Complete")
3134
}
3235

Sources/FirewrapDatabase/FirewrapCollection.swift

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,48 @@ import FirebaseFirestore
33

44
class FirewrapCollection {
55

6-
func getDocument(id: String) -> FirewrapDocument? {
7-
return nil
6+
public let path: String
7+
private var listener: ListenerRegistration?
8+
9+
public init(_ path: String) {
10+
self.path = path
811
}
912

10-
func getDocument(where field: String, equal: Any) -> FirewrapDocument? {
11-
return nil
13+
// MARK: - Getter
14+
15+
func getDocuments(_ source: FirewrapSource = .default, completion: @escaping (([[String : Any]]?) -> Void)) {
16+
let db = Firestore.firestore()
17+
db.collection(path).getDocuments(source: source.firebaseValue) { snapshot, error in
18+
guard error == nil, let documents = snapshot?.documents else {
19+
completion(nil)
20+
return
21+
}
22+
completion(documents.map({ $0.data() }))
23+
}
1224
}
1325

14-
func getDocuments() -> [FirewrapDocument]? {
15-
return nil
26+
func getDocument(_ source: FirewrapSource = .default, where field: String, equal: [Any], completion: @escaping (([[String : Any]]?) -> Void)) {
27+
let db = Firestore.firestore()
28+
db.collection(path).whereField(field, in: equal).getDocuments(source: source.firebaseValue) { snapshot, error in
29+
guard error == nil, let documents = snapshot?.documents else {
30+
completion(nil)
31+
return
32+
}
33+
completion(documents.map({ $0.data() }))
34+
}
1635
}
1736

18-
func observe(_ handler: () -> Void) {
19-
37+
// MARK: - Observer
38+
39+
func observe(_ handler: @escaping ([[String : Any]]?) -> Void) {
40+
self.listener?.remove()
41+
let db = Firestore.firestore()
42+
self.listener = db.collection(path).addSnapshotListener { snapshot, error in
43+
guard error == nil, let documents = snapshot?.documents else {
44+
handler(nil)
45+
return
46+
}
47+
handler(documents.map({ $0.data() }))
48+
}
2049
}
2150
}
Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,57 @@
11
import Foundation
22
import FirebaseFirestore
33

4-
public enum FWFirestoreSource {
5-
6-
case `default`
7-
case server
8-
case cache
9-
10-
var firebaseValue: FirestoreSource {
11-
switch self {
12-
case .default: return .default
13-
case .server: return .server
14-
case .cache: return .cache
15-
}
16-
}
17-
}
18-
194
public class FirewrapDocument {
205

216
public let path: String
7+
private var listener: ListenerRegistration?
228

239
public init(_ path: String) {
2410
self.path = path
2511
}
2612

27-
public func set(_ data: [String : Any], merge: Bool) {
28-
let db = Firestore.firestore()
29-
db.document(path).setData(data, merge: merge)
30-
}
13+
// MARK: - Getter
3114

32-
public func get(_ source: FWFirestoreSource = .default, completion: @escaping (([String : Any]?) -> Void)) {
15+
public func get(_ source: FirewrapSource = .default, completion: @escaping (([String : Any]?) -> Void)) {
3316
let db = Firestore.firestore()
3417
db.document(path).getDocument(source: source.firebaseValue) { document, error in
35-
if error == nil {
18+
guard error == nil else {
3619
completion(nil)
3720
return
3821
}
3922
completion(document?.data())
4023
}
4124
}
4225

26+
// MARK: - Setter
27+
28+
public func set(_ data: [String : Any], merge: Bool) {
29+
let db = Firestore.firestore()
30+
db.document(path).setData(data, merge: merge)
31+
}
32+
4333
public func delete(_ completion: @escaping (Bool) -> Void) {
4434
let db = Firestore.firestore()
4535
db.document(path).delete { error in
4636
completion(error == nil)
4737
}
4838
}
4939

50-
public func observe(_ handler: () -> Void) {
51-
40+
// MARK: - Observer
41+
42+
public func observe(_ handler: @escaping (([String : Any]?) -> Void)) {
43+
self.listener?.remove()
44+
let db = Firestore.firestore()
45+
self.listener = db.document(path).addSnapshotListener { document, error in
46+
if let document, let data = document.data() {
47+
handler(data)
48+
} else {
49+
handler(nil)
50+
}
51+
}
52+
}
53+
54+
public func removeObserver() {
55+
self.listener?.remove()
5256
}
5357
}

0 commit comments

Comments
 (0)