@@ -85,26 +85,27 @@ struct UserInfo: Codable, State {
8585 let anonymousId : String
8686 let userId : String ?
8787 let traits : JSON ?
88+ let referrer : URL ?
8889
8990 struct ResetAction : Action {
9091 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 )
9293 }
9394 }
9495
9596 struct SetUserIdAction : Action {
9697 let userId : String
9798
9899 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 )
100101 }
101102 }
102103
103104 struct SetTraitsAction : Action {
104105 let traits : JSON ?
105106
106107 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 )
108109 }
109110 }
110111
@@ -113,15 +114,23 @@ struct UserInfo: Codable, State {
113114 let traits : JSON ?
114115
115116 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 )
117118 }
118119 }
119120
120121 struct SetAnonymousIdAction : Action {
121122 let anonymousId : String
122123
123124 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)
125134 }
126135 }
127136}
@@ -150,6 +159,6 @@ extension UserInfo {
150159 if let existingId: String = storage. read ( . anonymousId) {
151160 anonymousId = existingId
152161 }
153- return UserInfo ( anonymousId: anonymousId, userId: userId, traits: traits)
162+ return UserInfo ( anonymousId: anonymousId, userId: userId, traits: traits, referrer : nil )
154163 }
155164}
0 commit comments