@@ -19,20 +19,56 @@ package com.duckduckgo.pir.impl.dashboard.state
19
19
import com.duckduckgo.di.scopes.ActivityScope
20
20
import com.duckduckgo.pir.impl.models.Address
21
21
import com.duckduckgo.pir.impl.models.ProfileQuery
22
+ import com.squareup.anvil.annotations.ContributesBinding
22
23
import dagger.SingleInstanceIn
23
24
import javax.inject.Inject
24
25
26
+ interface PirWebOnboardingStateHolder {
27
+ val isProfileComplete: Boolean
28
+
29
+ fun addAddress (
30
+ city : String ,
31
+ state : String ,
32
+ ): Boolean
33
+
34
+ fun addName (
35
+ firstName : String ,
36
+ middleName : String? = null,
37
+ lastName : String ,
38
+ ): Boolean
39
+
40
+ fun setBirthYear (year : Int ): Boolean
41
+ fun setNameAtIndex (
42
+ index : Int ,
43
+ firstName : String ,
44
+ middleName : String? = null,
45
+ lastName : String ,
46
+ ): Boolean
47
+
48
+ fun setAddressAtIndex (
49
+ index : Int ,
50
+ city : String ,
51
+ state : String ,
52
+ ): Boolean
53
+
54
+ fun removeAddressAtIndex (index : Int ): Boolean
55
+ fun removeNameAtIndex (index : Int ): Boolean
56
+ fun toProfileQueries (currentYear : Int ): List <ProfileQuery >
57
+ fun clear ()
58
+ }
59
+
60
+ @ContributesBinding(ActivityScope ::class )
25
61
@SingleInstanceIn(ActivityScope ::class )
26
- class PirWebOnboardingStateHolder @Inject constructor() {
62
+ class RealPirWebOnboardingStateHolder @Inject constructor() : PirWebOnboardingStateHolder {
27
63
28
64
private val names: MutableList <Name > = mutableListOf ()
29
65
private val addresses: MutableList <Address > = mutableListOf ()
30
66
private var birthYear: Int = 0
31
67
32
- val isProfileComplete: Boolean
68
+ override val isProfileComplete: Boolean
33
69
get() = names.isNotEmpty() && addresses.isNotEmpty() && birthYear > 0
34
70
35
- fun addAddress (
71
+ override fun addAddress (
36
72
city : String ,
37
73
state : String ,
38
74
): Boolean {
@@ -43,9 +79,9 @@ class PirWebOnboardingStateHolder @Inject constructor() {
43
79
return true
44
80
}
45
81
46
- fun addName (
82
+ override fun addName (
47
83
firstName : String ,
48
- middleName : String? = null ,
84
+ middleName : String? ,
49
85
lastName : String ,
50
86
): Boolean {
51
87
if (names.any { it.firstName == firstName && it.middleName == middleName && it.lastName == lastName }) {
@@ -61,15 +97,15 @@ class PirWebOnboardingStateHolder @Inject constructor() {
61
97
return true
62
98
}
63
99
64
- fun setBirthYear (year : Int ): Boolean {
100
+ override fun setBirthYear (year : Int ): Boolean {
65
101
birthYear = year
66
102
return true
67
103
}
68
104
69
- fun setNameAtIndex (
105
+ override fun setNameAtIndex (
70
106
index : Int ,
71
107
firstName : String ,
72
- middleName : String? = null ,
108
+ middleName : String? ,
73
109
lastName : String ,
74
110
): Boolean {
75
111
if (index !in names.indices) {
@@ -89,7 +125,7 @@ class PirWebOnboardingStateHolder @Inject constructor() {
89
125
return true
90
126
}
91
127
92
- fun setAddressAtIndex (
128
+ override fun setAddressAtIndex (
93
129
index : Int ,
94
130
city : String ,
95
131
state : String ,
@@ -107,23 +143,23 @@ class PirWebOnboardingStateHolder @Inject constructor() {
107
143
return true
108
144
}
109
145
110
- fun removeAddressAtIndex (index : Int ): Boolean {
146
+ override fun removeAddressAtIndex (index : Int ): Boolean {
111
147
if (index in addresses.indices) {
112
148
addresses.removeAt(index)
113
149
return true
114
150
}
115
151
return false
116
152
}
117
153
118
- fun removeNameAtIndex (index : Int ): Boolean {
154
+ override fun removeNameAtIndex (index : Int ): Boolean {
119
155
if (index in names.indices) {
120
156
names.removeAt(index)
121
157
return true
122
158
}
123
159
return false
124
160
}
125
161
126
- fun toProfileQueries (currentYear : Int ): List <ProfileQuery > {
162
+ override fun toProfileQueries (currentYear : Int ): List <ProfileQuery > {
127
163
val profiles = mutableListOf<ProfileQuery >()
128
164
names.forEach { name ->
129
165
addresses.forEach { address ->
@@ -149,7 +185,7 @@ class PirWebOnboardingStateHolder @Inject constructor() {
149
185
return profiles
150
186
}
151
187
152
- fun clear () {
188
+ override fun clear () {
153
189
names.clear()
154
190
addresses.clear()
155
191
birthYear = 0
0 commit comments