@@ -2,70 +2,59 @@ import Foundation
2
2
import Combine
3
3
4
4
public protocol UserServiceProtocol : Actor {
5
- var users : [ DisplayUser ] ? { get }
6
- nonisolated var usersUpdates : AsyncStream < [ DisplayUser ] > { get }
7
-
8
- func fetchUsers( ) async throws -> [ DisplayUser ]
5
+ func fetchPaginatedUsers( ) -> AsyncThrowingStream < [ DisplayUser ] , Error >
9
6
10
7
func isCurrentUserCapableOf( _ capability: String ) async throws -> Bool
11
8
12
9
func setNewPassword( id: Int32 , newPassword: String ) async throws
13
10
14
11
func deleteUser( id: Int32 , reassigningPostsTo newUserId: Int32 ) async throws
15
12
}
16
-
17
- package actor MockUserProvider : UserServiceProtocol {
18
-
19
- enum Scenario {
20
- case infinitLoading
21
- case dummyData
22
- case error
23
- }
24
-
25
- var scenario : Scenario
26
-
27
- package nonisolated let usersUpdates : AsyncStream < [ DisplayUser ] >
28
- private let usersUpdatesContinuation : AsyncStream < [ DisplayUser ] > . Continuation
29
-
30
- package private( set) var users : [ DisplayUser ] ? {
31
- didSet {
32
- if let users {
33
- usersUpdatesContinuation. yield ( users)
34
- }
35
- }
36
- }
37
-
38
- init ( scenario: Scenario = . dummyData) {
39
- self . scenario = scenario
40
- ( usersUpdates, usersUpdatesContinuation) = AsyncStream< [ DisplayUser] > . makeStream( )
41
- }
42
-
43
- package func fetchUsers( ) async throws -> [ DisplayUser ] {
44
- switch scenario {
45
- case . infinitLoading:
46
- // Do nothing
47
- try await Task . sleep ( for: . seconds( 24 * 60 * 60 ) )
48
- return [ ]
49
- case . dummyData:
50
- let dummyDataUrl = URL ( string: " https://my.api.mockaroo.com/users.json?key=067c9730 " ) !
51
- let response = try await URLSession . shared. data ( from: dummyDataUrl)
52
- let users = try JSONDecoder ( ) . decode ( [ DisplayUser ] . self, from: response. 0 )
53
- self . users = users
54
- return users
55
- case . error:
56
- throw URLError ( . timedOut)
57
- }
58
- }
59
-
60
- package func isCurrentUserCapableOf( _ capability: String ) async throws -> Bool {
61
- true
62
- }
63
-
64
- package func setNewPassword( id: Int32 , newPassword: String ) async throws {
65
- // Not used in Preview
66
- }
67
-
68
- package func deleteUser( id: Int32 , reassigningPostsTo newUserId: Int32 ) async throws {
69
- // Not used in Preview
70
- }
71
- }
13
+ //
14
+ //package actor MockUserProvider: UserServiceProtocol {
15
+ //
16
+ // enum Scenario {
17
+ // case infinitLoading
18
+ // case dummyData
19
+ // case error
20
+ // }
21
+ //
22
+ // var scenario: Scenario
23
+ //
24
+ // init(scenario: Scenario = .dummyData) {
25
+ // self.scenario = scenario
26
+ // }
27
+ //
28
+ // public func fetchUsers() async throws -> any AsyncSequence {
29
+ // [DisplayUser]().async
30
+ // }
31
+ //
32
+ //
33
+ // package func fetchUsers() async throws -> [DisplayUser] {
34
+ // switch scenario {
35
+ // case .infinitLoading:
36
+ // // Do nothing
37
+ // try await Task.sleep(for: .seconds(24 * 60 * 60))
38
+ // return []
39
+ // case .dummyData:
40
+ // let dummyDataUrl = URL(string: "https://my.api.mockaroo.com/users.json?key=067c9730")!
41
+ // let response = try await URLSession.shared.data(from: dummyDataUrl)
42
+ // let users = try JSONDecoder().decode([DisplayUser].self, from: response.0)
43
+ // return users
44
+ // case .error:
45
+ // throw URLError(.timedOut)
46
+ // }
47
+ // }
48
+ //
49
+ // package func isCurrentUserCapableOf(_ capability: String) async throws -> Bool {
50
+ // true
51
+ // }
52
+ //
53
+ // package func setNewPassword(id: Int32, newPassword: String) async throws {
54
+ // // Not used in Preview
55
+ // }
56
+ //
57
+ // package func deleteUser(id: Int32, reassigningPostsTo newUserId: Int32) async throws {
58
+ // // Not used in Preview
59
+ // }
60
+ //}
0 commit comments