fix for multitype json for attached_image
This commit is contained in:
		
							parent
							
								
									3eebb24a4c
								
							
						
					
					
						commit
						edd526d2aa
					
				| @ -92,6 +92,46 @@ extension Rant { | ||||
|         let user_avatar: User.Avatar.CodingData | ||||
|         let user_avatar_lg: User.Avatar.CodingData | ||||
|         let user_dpp: Int? | ||||
|          | ||||
|         init(from decoder: Decoder) throws { | ||||
|             // We need custom decoding code here because the attached_image can be a dictionary OR a string. | ||||
|              | ||||
|             let values = try decoder.container(keyedBy: CodingKeys.self) | ||||
|              | ||||
|             id = try values.decode(Int.self, forKey: .id) | ||||
|             text = try values.decode(String.self, forKey: .text) | ||||
|             score = try values.decode(Int.self, forKey: .score) | ||||
|             created_time = try values.decode(Int.self, forKey: .created_time) | ||||
|              | ||||
|             do { | ||||
|                 attached_image = try values.decode(AttachedImage.CodingData.self, forKey: .attached_image) | ||||
|             } catch { | ||||
|                 attached_image = nil | ||||
|             } | ||||
|              | ||||
|             num_comments = try values.decode(Int.self, forKey: .num_comments) | ||||
|             tags = try values.decode([String].self, forKey: .tags) | ||||
|             vote_state = try values.decode(Int.self, forKey: .vote_state) | ||||
|             weekly = try? values.decode(Weekly.CodingData.self, forKey: .weekly) | ||||
|             edited = try values.decode(Bool.self, forKey: .edited) | ||||
|             favorited = try? values.decode(Int.self, forKey: .favorited) | ||||
|             link = try? values.decode(String.self, forKey: .link) | ||||
|             links = try? values.decode([Link.CodingData].self, forKey: .links) | ||||
|              | ||||
|             c_type = try? values.decode(Int.self, forKey: .c_type) | ||||
|             c_type_long = try? values.decode(String.self, forKey: .c_type_long) | ||||
|             c_description = try? values.decode(String.self, forKey: .c_description) | ||||
|             c_tech_stack = try? values.decode(String.self, forKey: .c_tech_stack) | ||||
|             c_team_size = try? values.decode(String.self, forKey: .c_team_size) | ||||
|             c_url = try? values.decode(String.self, forKey: .c_url) | ||||
|              | ||||
|             user_id = try values.decode(Int.self, forKey: .user_id) | ||||
|             user_username = try values.decode(String.self, forKey: .user_username) | ||||
|             user_score = try values.decode(Int.self, forKey: .user_score) | ||||
|             user_avatar = try values.decode(User.Avatar.CodingData.self, forKey: .user_avatar) | ||||
|             user_avatar_lg = try values.decode(User.Avatar.CodingData.self, forKey: .user_avatar_lg) | ||||
|             user_dpp = try? values.decode(Int.self, forKey: .user_dpp) | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -57,7 +57,7 @@ extension RantFeed { | ||||
|         //let settings //not sure what the purpose is. probably not needed. | ||||
|         let set: String? | ||||
|         let wrw: Int? | ||||
|         let dpp: Int | ||||
|         let dpp: Int? | ||||
|         let num_notifs: Int? | ||||
|         //let unread //probably the same info as already provided by num_notifs, so not needed. | ||||
|         let news: News.CodingData? | ||||
| @ -70,7 +70,7 @@ extension RantFeed.CodingData { | ||||
|             rants: rants.map(\.decoded), | ||||
|             sessionHash: `set`, | ||||
|             weeklyRantWeek: wrw, | ||||
|             devRantSupporter: dpp != 0, | ||||
|             devRantSupporter: (dpp ?? 0) != 0, | ||||
|             numberOfUnreadNotifications: num_notifs ?? 0, | ||||
|             news: news?.decoded | ||||
|         ) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user