Theme file reference invalidation

This commit is contained in:
Ilya Laktyushin
2019-12-25 13:16:21 +03:00
parent 2f1e573cbf
commit f13301f7d0
6 changed files with 100 additions and 24 deletions

View File

@@ -142,6 +142,39 @@ public enum WebpageReferenceContent: PostboxCoding, Hashable, Equatable {
}
}
public enum ThemeReference: PostboxCoding, Hashable, Equatable {
case slug(String)
public init(decoder: PostboxDecoder) {
switch decoder.decodeInt32ForKey("r", orElse: 0) {
case 0:
self = .slug(decoder.decodeStringForKey("s", orElse: ""))
default:
self = .slug("")
assertionFailure()
}
}
public func encode(_ encoder: PostboxEncoder) {
switch self {
case let .slug(slug):
encoder.encodeInt32(0, forKey: "r")
encoder.encodeString(slug, forKey: "s")
}
}
public static func ==(lhs: ThemeReference, rhs: ThemeReference) -> Bool {
switch lhs {
case let .slug(slug):
if case .slug(slug) = rhs {
return true
} else {
return false
}
}
}
}
public enum AnyMediaReference: Equatable {
case standalone(media: Media)
case message(message: MessageReference, media: Media)
@@ -430,6 +463,7 @@ public enum MediaResourceReference: Equatable {
case messageAuthorAvatar(message: MessageReference, resource: MediaResource)
case wallpaper(resource: MediaResource)
case stickerPackThumbnail(stickerPack: StickerPackReference, resource: MediaResource)
case theme(theme: ThemeReference, resource: MediaResource)
public var resource: MediaResource {
switch self {
@@ -445,6 +479,8 @@ public enum MediaResourceReference: Equatable {
return resource
case let .stickerPackThumbnail(_, resource):
return resource
case let .theme(_, resource):
return resource
}
}
@@ -486,6 +522,12 @@ public enum MediaResourceReference: Equatable {
} else {
return false
}
case let .theme(lhsTheme, lhsResource):
if case let .theme(rhsTheme, rhsResource) = rhs, lhsTheme == rhsTheme, lhsResource.isEqual(to: rhsResource) {
return true
} else {
return false
}
}
}
}