JSONDecoder.keyDecodingStrategy = .convertFromSnakeCase converts JSON keys like 'tenant_access_token' to Swift names like 'tenantAccessToken'. Having explicit CodingKeys that map to the ORIGINAL snake_case keys (e.g., case tenantAccessToken = "tenant_access_token") causes a collision: the decoder first converts the JSON key, then looks for a CodingKey matching the original name — but the converted name doesn't match. Removed redundant CodingKeys from OAuthTokenData, TenantAccessTokenData, UserInfoData, and RecordItem. .convertFromSnakeCase handles all these mappings automatically. Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| Feishu | ||
| AppStateService.swift | ||
| NotificationService.swift | ||
| PollerService.swift | ||
| TokenManager.swift | ||