mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-15 21:45:19 +00:00
49 lines
1.4 KiB
Swift
49 lines
1.4 KiB
Swift
//
|
|
// AssetLibrary.swift
|
|
// lottie-swift
|
|
//
|
|
// Created by Brandon Withrow on 1/9/19.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
final class AssetLibrary: Codable {
|
|
|
|
/// The Assets
|
|
let assets: [String : Asset]
|
|
|
|
let imageAssets: [String : ImageAsset]
|
|
let precompAssets: [String : PrecompAsset]
|
|
|
|
required init(from decoder: Decoder) throws {
|
|
var container = try decoder.unkeyedContainer()
|
|
var containerForKeys = container
|
|
|
|
var decodedAssets = [String : Asset]()
|
|
|
|
var imageAssets = [String : ImageAsset]()
|
|
var precompAssets = [String : PrecompAsset]()
|
|
|
|
while !container.isAtEnd {
|
|
let keyContainer = try containerForKeys.nestedContainer(keyedBy: PrecompAsset.CodingKeys.self)
|
|
if keyContainer.contains(.layers) {
|
|
let precompAsset = try container.decode(PrecompAsset.self)
|
|
decodedAssets[precompAsset.id] = precompAsset
|
|
precompAssets[precompAsset.id] = precompAsset
|
|
} else {
|
|
let imageAsset = try container.decode(ImageAsset.self)
|
|
decodedAssets[imageAsset.id] = imageAsset
|
|
imageAssets[imageAsset.id] = imageAsset
|
|
}
|
|
}
|
|
self.assets = decodedAssets
|
|
self.precompAssets = precompAssets
|
|
self.imageAssets = imageAssets
|
|
}
|
|
|
|
func encode(to encoder: Encoder) throws {
|
|
var container = encoder.unkeyedContainer()
|
|
try container.encode(contentsOf: Array(assets.values))
|
|
}
|
|
}
|