@@ -85,26 +85,27 @@ struct UserInfo: Codable, State {
85
85
let anonymousId : String
86
86
let userId : String ?
87
87
let traits : JSON ?
88
+ let referrer : URL ?
88
89
89
90
struct ResetAction : Action {
90
91
func reduce( state: UserInfo ) -> UserInfo {
91
- return UserInfo ( anonymousId: UUID ( ) . uuidString, userId: nil , traits: nil )
92
+ return UserInfo ( anonymousId: UUID ( ) . uuidString, userId: nil , traits: nil , referrer : nil )
92
93
}
93
94
}
94
95
95
96
struct SetUserIdAction : Action {
96
97
let userId : String
97
98
98
99
func reduce( state: UserInfo ) -> UserInfo {
99
- return UserInfo ( anonymousId: state. anonymousId, userId: userId, traits: state. traits)
100
+ return UserInfo ( anonymousId: state. anonymousId, userId: userId, traits: state. traits, referrer : state . referrer )
100
101
}
101
102
}
102
103
103
104
struct SetTraitsAction : Action {
104
105
let traits : JSON ?
105
106
106
107
func reduce( state: UserInfo ) -> UserInfo {
107
- return UserInfo ( anonymousId: state. anonymousId, userId: state. userId, traits: traits)
108
+ return UserInfo ( anonymousId: state. anonymousId, userId: state. userId, traits: traits, referrer : state . referrer )
108
109
}
109
110
}
110
111
@@ -113,15 +114,23 @@ struct UserInfo: Codable, State {
113
114
let traits : JSON ?
114
115
115
116
func reduce( state: UserInfo ) -> UserInfo {
116
- return UserInfo ( anonymousId: state. anonymousId, userId: userId, traits: traits)
117
+ return UserInfo ( anonymousId: state. anonymousId, userId: userId, traits: traits, referrer : state . referrer )
117
118
}
118
119
}
119
120
120
121
struct SetAnonymousIdAction : Action {
121
122
let anonymousId : String
122
123
123
124
func reduce( state: UserInfo ) -> UserInfo {
124
- return UserInfo ( anonymousId: anonymousId, userId: state. userId, traits: state. traits)
125
+ return UserInfo ( anonymousId: anonymousId, userId: state. userId, traits: state. traits, referrer: state. referrer)
126
+ }
127
+ }
128
+
129
+ struct SetReferrerAction : Action {
130
+ let url : URL
131
+
132
+ func reduce( state: UserInfo ) -> UserInfo {
133
+ return UserInfo ( anonymousId: state. anonymousId, userId: state. userId, traits: state. traits, referrer: url)
125
134
}
126
135
}
127
136
}
@@ -150,6 +159,6 @@ extension UserInfo {
150
159
if let existingId: String = storage. read ( . anonymousId) {
151
160
anonymousId = existingId
152
161
}
153
- return UserInfo ( anonymousId: anonymousId, userId: userId, traits: traits)
162
+ return UserInfo ( anonymousId: anonymousId, userId: userId, traits: traits, referrer : nil )
154
163
}
155
164
}
0 commit comments