-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathServices.swift
More file actions
51 lines (40 loc) · 1.44 KB
/
Services.swift
File metadata and controls
51 lines (40 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//
// Services.swift
// StackOv (AppScript module)
//
// Created by Erik Basargin
// Copyright © 2021 Erik Basargin. All rights reserved.
//
import Swinject
import StackexchangeNetworkService
import class PageStore.PageDataManager
import class FavoriteStore.FavoriteDataManager
import class ThreadStore.ThreadDataManager
// MARK: - Services Assembly
final class ServicesAssembly: Assembly {
func assemble(container: Container) {
container.register(StackexchangeNetworkService.self) { _ in
StackexchangeNetworkService()
}.inObjectScope(.weak)
container.register(PageDataManager.self) { resolver in
PageDataManager(service: resolver.resolve(StackexchangeNetworkService.self)!)
}.inObjectScope(.transient)
container.register(FavoriteDataManager.self) { resolver in
FavoriteDataManager(service: resolver.resolve(StackexchangeNetworkService.self)!)
}.inObjectScope(.transient)
container.register(ThreadDataManager.self) { reslover in
ThreadDataManager(service: reslover.resolve(StackexchangeNetworkService.self)!)
}.inObjectScope(.transient)
}
}
// MARK: - Services Assembler
public struct ServicesAssembler {
public static var shared: Resolver {
assembler.resolver
}
public static let assembler: Assembler = {
Assembler([
ServicesAssembly()
])
}()
}